大家好,,我是痞子衡,,是正經(jīng)搞技術(shù)的痞子。今天痞子衡給大家介紹的是PCM編碼及Waveform音頻文件格式,。 嵌入式里有時候也會和音頻打交道,,比如最近特別火的智能音箱產(chǎn)品,離不開前端的音頻信號采集、降噪,,中間的語音識別(ASR),、自然語言處理(NLP),以及后端的文語合成(TTS),、音頻播放,。音頻信號采集是處理聲音的第一步,要采集音頻就離不開PCM編碼,,音頻采集完成自然需要保存,,waveform格式(.wav)是一種最經(jīng)典的音頻文件格式。今天痞子衡就給大家詳細介紹PCM編碼以及waveform文件格式,。 一,、聲音基礎(chǔ)眾所周知,聲音是由物體振動產(chǎn)生的聲波,,聲音通過介質(zhì)(空氣或固體,、液體)傳播并能被人聽覺器官所感知。發(fā)音物體情況(材料,,距離,,振動強度等)不同,產(chǎn)生的聲音也不同,。為了區(qū)分不同的聲音,,我們主要用如下三個參數(shù)來描述聲音的特征:
三大參數(shù)里除了音色沒有度量單位外(可以認為音色是聲音的UID,每種音色都是獨一無二的),,音量和音調(diào)均有度量單位,,這意味著音量和音調(diào)是可調(diào)整的,,也是聲音之間可對比的特征參數(shù)。 1.1 音量單位-分貝(dB) 聲波是一種機械波(壓力波),。聲波(空氣質(zhì)點)的連續(xù)振動,,使空氣分子不斷交替的壓縮和松弛,使大氣壓迅速產(chǎn)生起伏,,這種氣壓的起伏部分,,就稱為聲壓。聲壓的振幅表示質(zhì)點離開平衡位置的距離,,反映從波形波峰到波谷的壓力變化,,以及波所攜帶的能量的多少。
上述公式中Po為基準聲壓值,NdB即是聲壓信號Pi對基準聲壓Po的分貝值,。從公式可以看出分貝是指兩個相同類型物理量(Pi,、Po)的比較結(jié)果,它是無量綱的,。分貝又稱為被量度量Pi的'級',它代表被量度量比基準量高出多少'級',。下面列舉常見分貝值:
1.2 音調(diào)單位-頻率(Hz)頻率是每秒經(jīng)過一給定點的聲波周期數(shù)量,,其單位是Hz,,1KHz表示每秒經(jīng)過一給定點的聲波有1000個周期。根據(jù)頻率范圍,,我們將聲波分為如下三種:
關(guān)于聲波頻率特別要提的是,聲波可以被分解為不同頻率不同強度正弦波的疊加,,這種變換(或分解)的過程,,稱為傅立葉變換(Fourier Transform)。 二,、PCM編碼原理 聲波是一種在時間上和振幅上均連續(xù)的模擬量,,在嵌入式里要想研究聲波,首先需要將聲波轉(zhuǎn)換成一連串電壓變化的模擬電信號,,麥克風器件就是一種采集聲波信號并將其轉(zhuǎn)換成模擬電壓信號輸出的裝置,。 從上圖中我們可以看到PCM編碼主要有三個過程:采樣,、量化,、編碼,在這過程中主要有4個參數(shù)用于評價PCM:聲道數(shù),、采樣率,、量化位數(shù)、編碼方式,。痞子衡會在下面逐一介紹PCM編碼過程時穿插介紹這4個參數(shù): 2.1 采樣 所謂采樣,,即按一定的采樣頻率將模擬信號變成時間軸上離散的抽樣信號的過程。原則上采樣頻率越高,,聲音的質(zhì)量也就越好,,聲音的還原也就越真實。
關(guān)于聲道數(shù),,其實非常好理解,,就是采集聲音的通道數(shù),我們知道有單聲道(mono),,立體聲(雙聲道stereo),、杜比7.1環(huán)繞聲,其實就是聲音采集的通道數(shù)有差別,,聲道越多,,越能體現(xiàn)聲音的空間立體效果。 2.2 量化 前面采樣得到的抽樣信號雖然是時間軸上離散的信號,,但仍然是模擬信號,,其采樣值在一定的取值范圍內(nèi),可有無限多個值,,必須采用“四舍五入”的方法把樣值分級“取整”,,使一定取值范圍內(nèi)的樣值由無限多個值變?yōu)橛邢迋€值,這一過程稱為量化,。 2.3 編碼 量化后的抽樣信號就轉(zhuǎn)化為按抽樣時序排列的一串十進制數(shù)字碼流,即十進制數(shù)字信號,。簡單高效的數(shù)據(jù)系統(tǒng)是二進制碼系統(tǒng),,因此,應(yīng)將十進制數(shù)字碼變換成二進制編碼,,這種把量化的抽樣信號變換成給定字長(量化位數(shù))的二進制碼流的過程稱為編碼,。 除LPCM外,,A-law和μ-law是兩種不得不提的非均勻量化編碼,,這兩種非均勻量化編碼是為了提高小信號的信噪比,其基本思想是在量化之前先讓信號經(jīng)過一次處理,,對大信號進行壓縮而對小信號進行較大的放大,,這一處理過程通常也稱為“壓縮量化”,。壓縮量化的實質(zhì)是“壓大補小”,使小信號在整個動態(tài)范圍內(nèi)的信噪比基本一致,。下面是這兩種編碼與LPCM的 對比圖,。 三、Waveform文件格式解析前面講的PCM編碼后的聲音數(shù)據(jù)是需要保存的,,WAVE文件常常用來保存PCM編碼數(shù)據(jù),。WAVE文件是微軟公司(Microsoft)開發(fā)的一種聲音文件格式,用于保存Windows平臺的音頻信息資源,,被Windows平臺及其應(yīng)用程序所廣泛支持,,WAVE文件默認打開工具是WINDOWS的媒體播放器。 3.1 RIFF文件格式標準 WAVE文件是以微軟RIFF格式為標準的,,RIFF全稱為資源互換文件格式(Resources Interchange File Format),,是Windows下大部分多媒體文件遵循的一種文件結(jié)構(gòu)。RIFF文件所包含的數(shù)據(jù)類型由該文件的擴展名來標識,,能以RIFF格式存儲的數(shù)據(jù)有很多:音頻視頻交錯格式數(shù)據(jù)(.AVI),、波形格式數(shù)據(jù)(.WAV)、位圖數(shù)據(jù)格式(.RDI),、MIDI格式數(shù)據(jù)(.RMI),、調(diào)色板格式(.PAL)、多媒體電影(.RMN),、動畫光標(.ANI)等,。
typedef unsigned long DWORD; Chunk是可以嵌套的,,但是只有ckID為'RIFF'或者'LIST'的Chunk才能包含其他的Chunk。標志為'RIFF'的Chunk是比較特殊的,,每一個RIFF文件首先存放的必須是一個'RIFF' Chunk,,并且只能有這一個標志為'RIFF'的Chunk,。 更多RIFF的知識詳見這個網(wǎng)站鏈接 RIFF (Resource Interchange File Format),鏈接里收集了很多介紹RIFF的資源,。 3.2 WAVE文件結(jié)構(gòu)WAVE是Microsoft開發(fā)的一種音頻文件格式,,它符合上面提到的RIFF文件格式標準,可以看作是RIFF文件的一個具體實例,。既然WAVE符合RIFF規(guī)范,,其基本的組成單元也是Chunk。一個 WAVE文件 通常有三個Chunk以及一個可選Chunk,,其在文件中的排列方式依次是:RIFF Chunk,,F(xiàn)ormat Chunk,F(xiàn)act Chunk(附加塊,,可選),,Data Chunk,如下圖所示: 根據(jù)上面的WAVE文件結(jié)構(gòu)圖,,可以定義如下44bytes的wave_head_t用來描述WAVE文件的頭,。如果你曾經(jīng)接觸過Windows的音頻接口API,你會發(fā)現(xiàn)wave_fmt_t中的部分結(jié)構(gòu)與標準MSDN里的 WAVEFORMAT 是一致的,。
wave_head_t結(jié)構(gòu)體內(nèi)除了wFormatTag成員之外,,其他都可以根據(jù)字面上的意思來理解。關(guān)于wFormatTag的具體定義,,可見Windows SDK里的 mmreg.h文件,,下面列舉了幾個最常見Format的Tag值定義: 當WAVE文件的頭被解析成功后,下一步便是獲取WAVE文件里的聲音源數(shù)據(jù),,我們知道聲音文件有單聲道和多聲道之分,,對于單聲道文件很好理解,聲音數(shù)據(jù)就是按序排放,,而如果是立體聲(2聲道)文件,,那么左右聲道的聲音數(shù)據(jù)到底是怎么排放的呢?下面以一個示例立體聲文件數(shù)據(jù)(僅分析前72bytes)進行解釋: offset(h) 下圖是這個72bytes數(shù)據(jù)解析圖,,從圖中可以看到,,左右聲道的聲音數(shù)據(jù)是按塊(nBlockAlign指定)交替排放的。 更多WAVE的知識詳見這兩個網(wǎng)站鏈接 WAVE Audio File Format 和 Audio File Format Specifications,,鏈接里收集了很多介紹WAVE的資源,。 3.3 WAVE文件實例分析WAVE文件格式我們都了解透徹了,下面我們嘗試分析一個經(jīng)典的WAVE文件:'Windows XP 啟動.wav',,這個文件可以說是最知名的WAVE文件了,痞子衡特別喜歡這段music,,讓我們直接用二進制編輯器HxD打開它: 按wave_head_t解析WAVE頭可知,,這段wave是44.1kHz/16bit雙聲道線性PCM碼音頻,,實際音頻數(shù)據(jù)總長度為1361076bytes(1361076(datasize)/176400(nAvgBytesPerSec)=7.7158秒),最后再用Adobe Audition(原Cool Edit)打開查看其波形圖: 至此,,PCM編碼及Waveform音頻文件格式痞子衡便介紹完畢了,,掌聲在哪里~~~ |
|
來自: 西北望msm66g9f > 《培訓》