嵌入式音頻處理基礎(chǔ)(二)
在本文的第2部分中,我們首先對(duì)動(dòng)態(tài)范圍與精度的論題進(jìn)行探討,然后再對(duì)數(shù)據(jù)格式進(jìn)行深入的討論,因?yàn)閿?shù)據(jù)格式是與音頻處理相關(guān)的。
本文引用地址:http://www.ex-cimer.com/article/88167.htm動(dòng)態(tài)范圍與精度
您也許已經(jīng)見(jiàn)到過(guò)dB的規(guī)范,這是在目前市場(chǎng)上用于描述各種產(chǎn)品而隨處可見(jiàn)的。表1列出了幾種產(chǎn)品以及它們的信號(hào)質(zhì)量,以dB為單位。
表1 各種音頻系統(tǒng)的動(dòng)態(tài)范圍比較
那么,這些數(shù)值究竟代表什么意思呢?讓我們從確定一些定義來(lái)開(kāi)始。把圖1作為對(duì)下列基本規(guī)范的“仿制數(shù)據(jù)手冊(cè)(cheat sheet)”的一個(gè)參考信號(hào)。
圖1 音頻系統(tǒng)中一些重要術(shù)語(yǔ)之間的關(guān)系
人耳的動(dòng)態(tài)范圍(最響的信號(hào)電平與最安靜 的信號(hào)電平之比值)約為120 dB。在存在噪聲的系統(tǒng)中,動(dòng)態(tài)范圍被描述為最大信號(hào)電平與本底噪聲之間的比值。這就是說(shuō),
動(dòng)態(tài)范圍(dB)=峰值電平(dB)—本底噪聲(dB)
純模擬系統(tǒng)中的本底噪聲來(lái)自系統(tǒng)本身的電特性。建立在模擬系統(tǒng)之上的數(shù)字音頻信號(hào)也會(huì)從ADC和DAC中獲得噪聲,而且還可以從模擬數(shù)據(jù)采樣過(guò)程所產(chǎn)生的量化誤差中獲得噪聲。
另一個(gè)重要的術(shù)語(yǔ)是信噪比(SNR)。在模擬系統(tǒng)中,信噪比的意思是標(biāo)稱(chēng)信號(hào)對(duì)于本底噪聲的比值,其中的“線電平”是標(biāo)稱(chēng)工作電平。對(duì)于專(zhuān)業(yè)設(shè)備,標(biāo)稱(chēng)電平通常為1.228 Vrms,這可以轉(zhuǎn)換為+4 dBu。余量是標(biāo)稱(chēng)電平與峰值電平之間的差值,峰值電平指開(kāi)始出現(xiàn)信號(hào)失真的電平。數(shù)字系統(tǒng)中的SNR定義有些不同,即SNR被定義為動(dòng)態(tài)范圍。
現(xiàn)在,有了對(duì)動(dòng)態(tài)范圍的理解,我們就可以開(kāi)始討論動(dòng)態(tài)范圍在實(shí)際中有怎樣的用途。不做冗長(zhǎng)的推導(dǎo),讓我們簡(jiǎn)單介紹一下什么是6 dB規(guī)則。這個(gè)規(guī)則是動(dòng)態(tài)范圍與計(jì)算字長(zhǎng)之間關(guān)系的關(guān)鍵所在。完整的公式推導(dǎo)在式1中說(shuō)明,但這里使用了簡(jiǎn)便的表示法,意思是每增加1位的精度,將使動(dòng)態(tài)范圍增加6 dB。應(yīng)該注意,這個(gè)6 dB的規(guī)則并沒(méi)有考慮到音頻設(shè)計(jì)中的模擬子系統(tǒng),所以,輸入端和輸出端的傳感器的非理想性必須另作考慮。
動(dòng)態(tài)范圍(dB)= 6.02n + 1.76 ≈ 6n dB
其中n =精度位的數(shù)目
式1:6 dB規(guī)則
“6 dB規(guī)則”指出,使用的位數(shù)越多,我們能獲得的系統(tǒng)質(zhì)量就越高。但實(shí)際上,只有少數(shù)幾個(gè)真正可用的選擇。大多數(shù)適用于嵌入式媒體處理的器件有三種字長(zhǎng)形式:16位、24位和32位。表2總結(jié)了這三類(lèi)處理器的動(dòng)態(tài)范圍。
由于我們?cè)谟懻? dB規(guī)則,所以有必要對(duì)語(yǔ)音信號(hào)中常被使用的非線性量化方法進(jìn)行一些討論。電話質(zhì)量的線性PCM編碼需要12位的精度。但是,我們的耳朵對(duì)小幅度時(shí)音頻信號(hào)變化的敏感度要超過(guò)大幅度時(shí)。因此,電話通訊中使用的線性PCM采樣方法的位數(shù)用得過(guò)多。A律和μ律壓擴(kuò)標(biāo)準(zhǔn)中使用的對(duì)數(shù)量化只用8位精度就達(dá)到了12位PCM的質(zhì)量等級(jí)。為了使我們的生活更加方便,有些處理器廠商已經(jīng)把A律和μ律壓擴(kuò)標(biāo)準(zhǔn)做到了器件的串行端口中。這使處理器內(nèi)核無(wú)需進(jìn)行對(duì)數(shù)計(jì)算。
在查看了表2之后,我們又一次回想起人耳的動(dòng)態(tài)范圍約為120 dB?;谶@個(gè)原因,16位數(shù)據(jù)的表示法對(duì)于高質(zhì)量音頻并不是太合適。因此,供應(yīng)商引入了對(duì)16位系統(tǒng)的動(dòng)態(tài)范圍進(jìn)行擴(kuò)展的24位處理器。這些24位的系統(tǒng)從C編譯器的觀點(diǎn)來(lái)看有點(diǎn)不標(biāo)準(zhǔn),所以近年來(lái)的許多音頻設(shè)計(jì)使用了32位的處理方式。
表2 各種定點(diǎn)架構(gòu)的動(dòng)態(tài)范圍
選擇了正確的處理器并不是萬(wàn)事大吉了,因?yàn)橐粋€(gè)音頻系統(tǒng)的總體質(zhì)量是由“達(dá)到最低質(zhì)量”元件的等級(jí)所決定的。除了處理器外,整個(gè)系統(tǒng)還包括像話筒和揚(yáng)聲器這樣的一些模擬元件,以及使信號(hào)在模擬域與數(shù)字域之間變換的轉(zhuǎn)換器。模擬域超出了這次討論的范圍,而音頻轉(zhuǎn)換器則涉及到了數(shù)字域。
假設(shè)您想使用AD1871進(jìn)行音頻采樣。轉(zhuǎn)換器的數(shù)據(jù)手冊(cè)中把它解釋為一個(gè)24位的轉(zhuǎn)換器,但它的動(dòng)態(tài)范圍不是144 dB,而是105 dB。其原因是轉(zhuǎn)換器不是一個(gè)完美無(wú)缺的系統(tǒng),而供應(yīng)商只給出了有用的動(dòng)態(tài)范圍。
如果您真的想把AD1871與24位處理器相連,那么,您整個(gè)系統(tǒng)的SNR將為105dB。本底噪聲將達(dá)到144dB-105dB=39dB。圖2是這一情況的圖形表示。但是,在數(shù)字音頻系統(tǒng)中還有另一個(gè)組件 我們還沒(méi)有討論:處理器內(nèi)核內(nèi)的計(jì)算。
圖2 一個(gè)音頻系統(tǒng)的SNR由最弱元件的SNR構(gòu)成
使數(shù)據(jù)經(jīng)過(guò)處理器的計(jì)算單元會(huì)潛在地引入各種誤差。其中之一就是量化誤差。這種誤差可以在一連串導(dǎo)致數(shù)據(jù)值被截取或舍入(向上或向下)的計(jì)算中產(chǎn)生。例如,一個(gè)16位處理器可以對(duì)一個(gè)16位數(shù)據(jù)組成的向量作加法,然后把結(jié)果存入一個(gè)擴(kuò)展字長(zhǎng)的累加器中。但是,當(dāng)累加器中的數(shù)值最終被寫(xiě)入到一個(gè)16位數(shù)據(jù)寄存器中時(shí),其中的有些位會(huì)被截去。
可以看一下圖3,看看計(jì)算誤差是如何影響到實(shí)際系統(tǒng)的。對(duì)于一個(gè)理想的16位A/D轉(zhuǎn)換器(圖3a),信噪比應(yīng)該是16 x 6 = 96 dB。如果不存在量化誤差,那么,16位計(jì)算足以把SNR保持在96 dB。而24位和32位系統(tǒng)將分別把8位和16位置于本底噪聲以下的動(dòng)態(tài)范圍中。從本質(zhì)上看,這些額外的數(shù)位是被浪費(fèi)掉了。
圖3 (a)在一個(gè)理想的16位96 dB SNR系統(tǒng)中,不同字長(zhǎng)計(jì)算時(shí)的額外數(shù)位的分配,
其中忽略了量化誤差 (b) 在一個(gè)理想的16位96 dB SNR系統(tǒng)中,
不同字長(zhǎng)計(jì)算時(shí)的額外數(shù)位的分配,其中存在量化誤差
但是,所有的數(shù)字音頻系統(tǒng)都確實(shí)要引入舍入和截取誤差。如果我們可以量化這個(gè)誤差,如確定為18dB(或3位),那么很清楚,16位計(jì)算對(duì)于維持96dB的系統(tǒng)SNR是不夠的(圖3b)。解釋這一點(diǎn)的另一個(gè)方法是,有效的本底噪聲被提高了18dB,因而總的SNR就降低到了96dB -18dB = 78dB。這導(dǎo)致的結(jié)論是,在本底噪聲以下的額外數(shù)位有助于解決量化中出現(xiàn)的麻煩事。
音頻的數(shù)據(jù)格式
在處理器內(nèi)部有許多種表示數(shù)據(jù)的方法。音頻處理中使用的兩種主要的處理器架構(gòu)是定點(diǎn)與浮點(diǎn)。定點(diǎn)處理器設(shè)計(jì)成用整數(shù)和分?jǐn)?shù)進(jìn)行運(yùn)算,通常固有地支持16位、24位或32位的數(shù)據(jù)。浮點(diǎn)處理器提供非常好的性能,并固有地支持32位或64位的浮點(diǎn)數(shù)據(jù)類(lèi)型。但是,這些浮點(diǎn)處理器一般成本比較高,而且比相應(yīng)的定點(diǎn)處理器消耗更多的功率,因而所有的實(shí)際系統(tǒng)都必須在質(zhì)量和工程成本之間尋求一個(gè)平衡點(diǎn)。
linux操作系統(tǒng)文章專(zhuān)題:linux操作系統(tǒng)詳解(linux不再難懂)
評(píng)論