首頁 > 關于效率源 > 新聞和事件 > 技術視界
【技術視界】不同音頻文件如何進行數據恢復?
2019年07月03日

B1.jpg

人類能夠聽到的所有聲音都稱之為音頻。在互聯網科技高度發展的今天,各類設備和軟件層出不窮,而其中大部分都可以以文件的形式對聲音進行傳輸和保存,對于這些存儲聲音的文件稱之為音頻文件。

在案件調查中,如果能夠直接提取到手機音頻文件,如通話錄音、手機錄音、微信語音、QQ語音等,對于案件推進可能起到決定性作用。

不同的音頻文件編碼方式不同,生成的文件結構也各不相同,采用的數據修復方法自然也有差異。當我們想要對這些音頻文件進行修復時,需要根據它們的編碼方式采用不同的修復方法。本期我們就來聊聊多種音頻編碼格式的原理及其數據恢復解決方案。

PCM編碼

一.PCM編碼介紹
PCM編碼是指PCM信號未經過任何編碼和壓縮處理(無損壓縮)。與模擬信號比,它不易受傳送系統的雜波及失真的影響。動態范圍寬,可得到音質相當好的效果。在計算機應用中,能夠達到最高保真水平的就是PCM編碼。

二.PCM編碼運用場景
PCM編碼數據主要運用在WAV音頻文件中。

三.WAV音頻文件存儲結構及數據恢復

1、WAV音頻文件存儲結構

WAV音頻文件中的音頻數據編碼方式有PCM、Microsoft ADPCM、IEEE float、ITU G.711 ɑ-law、ITU G.711 μ-law、GSM 6.10、ITU G.721 ADPCM等幾種常見的壓縮編碼格式。

B2.jpg

WAV格式音頻文件存儲結構

2、WAV音頻文件數據恢復

在對WAV文件進行修復時,其中最關鍵的信息就是“fmt”塊中記錄的音頻壓縮編碼格式信息(如下表)。根據各種編碼方式可以在“data”塊中提取出有效的音頻數據,并按照wav的結構對文件進行修復。

B3.jpg

WAV文件中fmt塊包含編碼信息

四.WAV音頻文件修復注意事項

WAV文件修復需要分為兩種情況來考慮:

一是有同設備生成的能正常播放的wav音頻文件作為參考樣本文件進行修復;

二是沒有參考樣本文件,則需要根據音頻數據的特征自定義壓縮編碼方式、音頻采樣率、音頻通道數、音頻數據傳輸速率,通過自定義信息對音頻文件進行修復。

這里以WAV文件采用PCM編碼音頻數據為例:
①確定音頻采樣率、音頻通道數、音頻數據傳輸速率
②根據WAV文件存儲結構組合音頻數據流

MP3編碼

一.MP3編碼介紹
MPEG-1 or MPEG-2 Audio Layer III是一種音頻壓縮技術,其全稱是動態影像專家壓縮標準音頻層面3(Moving Picture Experts Group Audio Layer III),簡稱為MP3,是目前最流行的音頻編碼格式,它是一種有損壓縮格式,壓縮編碼的質量與選擇的比特率有關。

B4.jpg

MP3編碼流程

二.MP3編碼運用場景
MP3編碼數據運用在MP3音頻文件中。

三.MP3音頻文件存儲結構及數據恢復

1、MP3文件存儲結構

MP3文件是由幀(frame)構成的,幀是 MP3 文件最小的組成單位。

MP3文件大體分為三部分:TAG_V2(ID3V2),音頻數據,TAG_V1(ID3V1),詳細文件結構如下所示。

B5.jpg

MP3文件結構

MP3音頻文件中每幀音頻數據之間相互獨立,所以根據幀頭結構可以確定每幀數據的長度,因此只要獲取了幀頭結構的參數信息,就可以確定每幀的幀長度。Mp3文件存儲結構如下圖。

B6.jpg

Mp3文件存儲結構

2、MP3音頻文件數據修復

因為MP3文件中音頻幀之間的獨立性,MP3音頻文件的修復通過音頻幀的4字節幀頭來確定音頻幀數據。

OGG編碼

一.OGG編碼介紹
OGG編碼的全稱是OGGVobis(oggVorbis),是一種音頻壓縮格式,類似于MP3等的音樂格式。但有一點不同的是,它是完全免費、開放和沒有專利限制的。它還有一個特點是支持多聲道。

B7.jpg

Ogg Vorbis編解碼流程圖

二.OGG編碼運用場景
OGG編碼生成的音頻文件格式就為OGG音頻文件。

三.OGG音頻文件存儲結構及數據恢復

1、OGG音頻文件存儲結構

OGG是以頁(page)為單位將邏輯流組織鏈接起來,每個頁都有頁頭和頁數據兩部分。每頁的頁頭中都有頁標識“OggS”。OGG格式音頻文件存儲結構如下圖。

B8.jpg

OGG格式音頻文件存儲結構

2、OGG音頻文件數據恢復

在OGG音頻文件中,OGG Vorbis比特流是以三個數據包頭開始的。這些頭數據包按順序依次是:標識標題、注釋標題和設置數據包。這些都與解碼Vorbis音頻文件密切相關的,每個數據包都是以同樣的頭結構“vorbis”開始,如果一個ogg音頻文件缺失了其中三個數據包中任意一個數據包內容,則該音頻文件不能正常播放。

四.OGG音頻文件數據修復注意事項
OGG音頻文件修復需要考慮兩個方面的問題:

1、OGG音頻文件是否缺失標識標題、注釋標題和音頻設置這三個數據包。

若缺失,要實現OGG文件修復則需要提供同設備生成的能夠正常播放的OGG音頻文件作為參考樣本文件,再將受損文件中的音頻數據按頁提取出來,組成新的可播放的OGG音頻文件。

2、OGG音頻文件頁校驗碼是否正確。

在OGG文件每頁都有一個4字節頁校驗碼,
當一個OGG文件不能正常播放,且三個數據包都存在,則需要對頁校驗碼進行校驗計算;
若三個數據包所在頁的校驗碼錯誤,則OGG文件不能正常播放;
若是其中的音頻數據所在頁校驗碼錯誤,則該頁音頻數據不能正常播放,但并不影響其他頁的音頻數據,只需要對校驗錯誤的頁進行重新校驗計算。

AMR編碼

一.AMR編碼介紹
AMR主要用于移動設備的音頻,壓縮比比較大,但相對其他的壓縮格式質量比較差,由于多用于人聲通話。

B9.jpg

AMR編解碼流程

Payload Parse模塊-----解碼出編碼語音數據;
Speech Decode模塊----解碼語音幀;
DTX Decode模塊-----解碼噪音幀;
Post-Processing模塊-----語音后處理;

二.AMR編碼運用場景
AMR編碼生成的音頻文件格式就為AMR音頻文件。

三.AMR音頻文件存儲結構及數據修復

1、AMR音頻文件存儲結構

AMR音頻編碼分為兩類分別為AMR-NB和AMR-WB。這兩類AMR音頻編碼的區別主要在于幀類型和對應的傳輸比特率不同。AMR音頻文件由文件頭+若干語音幀構成,如圖所示。

B10.jpg

AMR音頻幀1字節幀頭結構

在每個語音幀的第一個字節為該語音幀的幀頭,根據幀頭中包含的幀類型值以及文件頭結構確定每個語音幀的字節長度。AMR音頻文件存儲結構如下所示。

B11.jpg

AMR音頻文件存儲結構

在計算AMR文件每個語音幀的字節長度,需要知道幀類型對應的編碼方式,具體詳情如下所示。

B12.jpg

AMR幀編碼方式

以上圖(AMR音頻文件存儲結構圖)的語音幀為例,其中一幀音頻幀的幀頭值為0x14=0b00010100,AMR文件的文件頭為“AMR-WB”,幀頭值0x14中包含參數內容有:幀類型為0010=2;幀質量為1,表示該幀為good frame;結合AMR幀編碼方式表中數據可知,該音頻幀的數據傳輸速率為12.65kBit/s。

2、AMR音頻文件數據修復

在AMR文件中,每個語音幀的時長為20毫秒,因此在對AMR文件進行修復時:首先需要確定AMR文件的分類;然后根據每幀數據的幀頭確定每幀數據的字節長度;再根據傳輸速率和每幀時長可計算出一幀音頻幀的字節長度=傳輸比特率/每秒幀數/8位+1字節幀頭,從而實現AMR文件修復。

四.AMR音頻文件修復注意事項

針對AMR音頻文件的數據恢復需分為兩種情況考慮:

1、有參考樣本文件的情況

首先,根據同設備生成的AMR文件的文件頭確定AMR的分類;
然后,根據幀頭確定幀數據類型從而計算出每幀音頻數據的字節長度;
最后,獲取待修復文件中的每幀音頻數據,根據AMR文件結構生成新的可正常播放的AMR文件。

2、無參考樣本文件的情況

首先,根據語音幀幀頭結構和兩種AMR文件類型,反推出一幀語音數據的字節長度;
然后,根據字節長度與文件中語音幀長度對比,確定AMR文件類型;
最后,獲取待修復文件中的每幀音頻數據,根據AMR文件結構生成新的可正常播放的AMR文件。


在日常工作生活中對于音頻文件的運用無處不在,本文我們針對當前主流的幾種音頻格式,基于其音頻編碼方式原理提出的音頻文件數據恢復方案,希望能夠幫助您高效且快速的解決音頻文件的數據修復問題。

如對文中的操作、描述有任何疑問,或者有任何取證需求,歡迎撥打熱線電話028-85211099或直接在微信公眾號給我們留言,我們會盡快聯系您。

 

 

本期投稿:何麗萍

本期編輯:源妹


【擴展閱讀】