當(dāng)前位置: 首頁 > 新聞熱點(diǎn)
發(fā)布日期:2022-07-14 點(diǎn)擊率:43
延伸到40kHz的音頻頻譜被劃分為兩個(gè)頻段。語音分量占用頻譜的較低部分,從5Hz到7kHz,其他音頻分量占余下的高頻部分,如圖1所示。
語音處理主要涉及壓縮-解壓縮、識(shí)別、調(diào)整和增強(qiáng)算法。信號(hào)處理算法非常依賴于系統(tǒng)資源,例如可用的存儲(chǔ)器和時(shí)鐘性能。由于這些資源會(huì)增加系統(tǒng)的成本,因此產(chǎn)品提供商通常都限制這些資源,以降低產(chǎn)品成本。一些基本特性,例如存儲(chǔ)器和時(shí)鐘消耗是算法復(fù)雜性的必然部分。復(fù)雜性越低,算法越優(yōu),其實(shí)現(xiàn)的功效就越高。
在評(píng)估一個(gè)算法時(shí),測量算法的復(fù)雜性是第一步。在特定處理器上運(yùn)行算法所要求的時(shí)鐘決定了處理能力,它取決于架構(gòu),不同的處理器架構(gòu)其處理能力是有變化的。而算法的存儲(chǔ)器需求明顯不會(huì)改變。絕大多數(shù)的DSP算法對(duì)一組樣值進(jìn)行處理,這樣的一組樣值稱為一個(gè)幀。一組樣值組成一個(gè)幀將不可避免引入延遲,并產(chǎn)生處理延遲。國際電聯(lián)(ITU)規(guī)定了每種算法的可接受延遲標(biāo)準(zhǔn)。
算法的處理能力通常用“每秒百萬時(shí)鐘”來表示,或者M(jìn)CPS。為了更好地理解MCPS,可以假設(shè)某個(gè)算法以8kHz的頻率處理64個(gè)采樣幀,處理每個(gè)幀需要300,000個(gè)時(shí)鐘。那么收集一個(gè)幀的時(shí)間為64/8,000或8ms。通過簡單的算法可以得出每秒可以處理125個(gè)幀。當(dāng)算法處理所有的幀,它至少占用內(nèi)核每秒300,000*125 = 37,500,000個(gè)時(shí)鐘,或者。
另外一種表達(dá)MCPS的方式是,它等于(處理一個(gè)幀所要求的時(shí)間乘以采樣頻率再除以幀大小)再除以1百萬。
通常用來定義算法處理能力的第二個(gè)術(shù)語是MIPS,或百萬指令每秒。計(jì)算某個(gè)算法的MIPS也比較復(fù)雜。如果處理器每個(gè)時(shí)鐘周期能有效地執(zhí)行一個(gè)指令,每個(gè)處理器的MIPS和MCPS是相同的。另一方面,如果處理器的架構(gòu)需要超過一個(gè)周期來執(zhí)行一個(gè)指令,則MCPS和MIPS之間存在一個(gè)比例。例如,一個(gè)ARM7TDMI處理器實(shí)際上每個(gè)指令需要1.1個(gè)周期。
圖1:音頻頻譜圖。
在進(jìn)行集成之前
在任何嵌入式系統(tǒng)上開始集成和評(píng)估任何語音算法的最佳時(shí)機(jī)是當(dāng)系統(tǒng)處于一個(gè)可預(yù)測或穩(wěn)定的狀態(tài)時(shí)。‘穩(wěn)定’意味著音頻前端的中斷結(jié)構(gòu)是一致的。換言之,當(dāng)保持一個(gè)合適的幅值時(shí),甚至不會(huì)丟失一個(gè)數(shù)據(jù)字節(jié)。擁有可用系統(tǒng)存儲(chǔ)器和時(shí)鐘的統(tǒng)計(jì)數(shù)據(jù)是非常明智的。在一個(gè)工作穩(wěn)定的現(xiàn)有系統(tǒng)上集成一個(gè)算法相對(duì)較簡單。如果系統(tǒng)正在開發(fā)中,試圖在這個(gè)系統(tǒng)上集成和評(píng)估任何算法之前需要徹底對(duì)音頻前端進(jìn)行測試。而且,要驗(yàn)證在系統(tǒng)內(nèi)沒有中斷發(fā)生相互沖突。如果系統(tǒng)中存在任何問題,算法的調(diào)試將是非常痛苦的體驗(yàn)。
在將要集成音頻/語音算法的系統(tǒng)中,音頻固件必須是穩(wěn)健的,它必須為算法提供準(zhǔn)確的數(shù)據(jù)才能使算法得以有效地執(zhí)行。工程師常常犯的一個(gè)簡單錯(cuò)誤是在每個(gè)樣值到來時(shí)中斷內(nèi)核。如果算法只是對(duì)一個(gè)幀的某些固定樣值進(jìn)行處理,那么其他的中斷將是多余的。可以通過配置直接存儲(chǔ)器存取(DMA)和內(nèi)部FIFO來在整個(gè)幀收集完成后再中斷內(nèi)核。
實(shí)例算法
當(dāng)開發(fā)任何電信系統(tǒng)時(shí),工程師通常用脈碼調(diào)制(PCM)編解碼器(即標(biāo)準(zhǔn))進(jìn)行語音質(zhì)量的測試。這種窄帶編解碼器將樣值幅度限制在8bit的精度,并產(chǎn)生64kbit/s的吞吐量。編碼器和解碼器可能會(huì)對(duì)每個(gè)數(shù)據(jù)樣值進(jìn)行處理。它是一種非權(quán)重算法,復(fù)雜度很低,幾乎沒有處理延遲,工程師可以選擇利用編解碼器來進(jìn)行播放、驗(yàn)證系統(tǒng),更重要的是徹底評(píng)估音頻前端設(shè)計(jì)。工程師可以檢測信號(hào)電平,調(diào)整硬件編解碼器增益,同步近端和遠(yuǎn)端中斷,驗(yàn)證DMA功能,以及使用這種基本的電話標(biāo)準(zhǔn)成功進(jìn)行其他試驗(yàn)。在這個(gè)過程中,如果發(fā)現(xiàn)從另一端接收到的壓縮數(shù)據(jù)是比特反序的,請不要覺得奇怪。一段反序代碼就能解決這個(gè)問題。
任何寬帶語音編解碼器都是較多占用存儲(chǔ)器和時(shí)鐘資源的語音算法的一個(gè)實(shí)例。子帶ADPCM(自適應(yīng)差分脈碼調(diào)制)算法就是其中之一,相應(yīng)標(biāo)準(zhǔn)是 。它對(duì)16kHz采樣的數(shù)據(jù)進(jìn)行處理,因此覆蓋了整個(gè)語音頻譜。它保留了未發(fā)聲的頻率分量—那些存在于4到7kHz的分量—從而提供了高質(zhì)量的自然語音。在任何編解碼器集成到系統(tǒng)之前,強(qiáng)烈建議認(rèn)真測試。盡管編碼和解碼可以逐個(gè)樣值進(jìn)行測試,但涉及到濾波和其他頻域算法的編解碼器測試是完全不同的,它需要采用至少有數(shù)千個(gè)樣值的數(shù)據(jù)流。編解碼器的驗(yàn)證讓工程師忙于利用ITU向量進(jìn)行單元測試、信號(hào)電平測試以及與其他可用編解碼器的可互操作測試。對(duì)于系統(tǒng)集成工程師來說,與在發(fā)送之前將編碼后的數(shù)據(jù)字節(jié)編成16比特的字以及信號(hào)電平的失配相關(guān)的互操作問題都不是新的問題。
這里討論的算法未必是系統(tǒng)工程師可能會(huì)集成的算法,因?yàn)檫@些算法需要更多的系統(tǒng)存儲(chǔ)器和時(shí)鐘周期。處理器增強(qiáng)型算法的其他實(shí)例包括回聲消除算法、噪聲抑制算法以及維特比算法。對(duì)這些算法的性能評(píng)估并不像語音編解碼器那樣簡單。
通常,任何涉及到免提或揚(yáng)聲器模式的電信系統(tǒng)都采用了聲學(xué)回波消除算法來避免聽到自己的回聲。如果在嘈雜的環(huán)境中采用,還需要采用噪聲控制算法。回聲消除-噪聲抑制(ECNR)需要大量的系統(tǒng)存儲(chǔ)器和時(shí)鐘。有多種時(shí)域與頻域技術(shù)可用來減輕聲學(xué)回聲問題,如表1所示。
表1:前面四行表明頻域技術(shù)優(yōu)于時(shí)域技術(shù),后面四行支持時(shí)域技術(shù)。
事實(shí)證明頻域方法更有效,因?yàn)樗倪\(yùn)算成本較低。這種方法采用自適應(yīng)FIR濾波器,它只在當(dāng)殘余回聲誤差大于門限值時(shí)才更新其系數(shù)。從輸入信號(hào)中減去估計(jì)的回聲將產(chǎn)生誤差。來自第二方的信號(hào)被用作這些算法的基準(zhǔn)來估計(jì)回聲。需要為算法提供適當(dāng)?shù)幕鶞?zhǔn)才能取得良好的回聲估計(jì)和消除。
另外一個(gè)因素是回聲尾部長度,它是以毫秒為單位的回聲反射時(shí)間。簡單而言,它是回聲形成的時(shí)間。該因素取決于環(huán)境的維度。盡管詳細(xì)的濾波器設(shè)計(jì)是一個(gè)很復(fù)雜的話題,但選擇濾波器的長度并不太復(fù)雜(見表2):
濾波器長度= 回聲尾長×采樣頻率
表2:說明了數(shù)據(jù)以8kHz采樣時(shí)尾部長度與回波覆蓋距離以及濾波器長度要求之間的關(guān)系。
任何回波消除(EC)實(shí)現(xiàn)的基本要求是支持最低16kHz的采樣數(shù)據(jù),以確保能涵蓋16kHz的寬帶語音。將EC與寬帶語音編解碼器集成需要更加小心,因?yàn)榛夭ㄎ查L取決于采樣頻率,采樣率為8kHz的數(shù)據(jù)需要72ms的EC才能有效地消除回聲,當(dāng)用于16kHz采樣數(shù)據(jù)時(shí),只能消除一半。因此,工程師發(fā)現(xiàn)將半有效的EC與寬帶編解碼器集成是一個(gè)雙倍挑戰(zhàn)的工作。噪聲消除方法也已經(jīng)使用了多年。針對(duì)不同的應(yīng)用,方法的選擇、實(shí)現(xiàn)和應(yīng)用也不同。例如,某種方法可能將噪聲視為比人聲更加固定。算法將建立噪聲模型,然后從輸入信號(hào)中減去噪聲。噪聲降低的大小按分貝來度量。對(duì)于很多應(yīng)用來說10到30dB的衰減就很不錯(cuò)。
本文所述應(yīng)用中的EC尾長要求大約為50ms,要求的噪聲抑制水平在12到25dB之間,具體取決于噪聲屬性以及期望的輸出語音質(zhì)量。通常,噪聲消除越多,越有可能損失語音質(zhì)量。因此,動(dòng)態(tài)選擇大小將能提供一個(gè)合適的噪聲消減量,同時(shí)依然保持足夠的語音質(zhì)量。對(duì)于這種應(yīng)用的ECNR組合可能需要高達(dá)15到20kB的系統(tǒng)存儲(chǔ)器。每個(gè)64采樣幀的處理可能耗用150,000到300,000個(gè)時(shí)鐘,具體數(shù)據(jù)取決于處理器。
ECNR組合的性能評(píng)估可能非常麻煩。通常可以通過調(diào)節(jié)硬件編解碼器的增益,調(diào)整麥克風(fēng)和揚(yáng)聲器的位置,發(fā)現(xiàn)遠(yuǎn)端和近端語音和中斷的同步,發(fā)現(xiàn)具有線性屬性的音頻硬件,試驗(yàn)不同的EC尾長和NR電平來獲得最佳可能的回聲消除和噪聲抑制性能。
在評(píng)估任何算法的復(fù)雜性的同時(shí),初學(xué)者需要考慮最糟糕的情況,這很重要。算法的執(zhí)行時(shí)間對(duì)于不同的幀來說可能不同。這種數(shù)據(jù)依賴性源于這樣一個(gè)事實(shí),即一個(gè)處理器相乘兩個(gè)具有較高幅值樣值所需的時(shí)間要比相乘兩個(gè)幅值較低樣值的時(shí)間長。
可能受自適應(yīng)算法誤導(dǎo)的一個(gè)實(shí)例是,當(dāng)濾波系數(shù)未被更新時(shí),所占用的周期將較少。濾波器數(shù)據(jù)的適配可能需要數(shù)千個(gè)時(shí)鐘周期,因此很明顯在分析MCPS測試時(shí),需要考慮這一點(diǎn)。然而,不要僅僅依賴于算法,要嘗試不同的向量來發(fā)現(xiàn)最準(zhǔn)確的MCPS和性能度量。
數(shù)據(jù)位和數(shù)據(jù)片的收集
本文討論的算法足以實(shí)現(xiàn)基本的電話系統(tǒng)。當(dāng)系統(tǒng)具有一個(gè)以上增強(qiáng)算法時(shí),需要調(diào)用的算法序列會(huì)有些不同。一些語音算法,例如噪聲消除算法,可能給其輸出帶來非線性屬性,這會(huì)降低其他算法的性能。這樣的算法必須放在語音增強(qiáng)處理過程的最后執(zhí)行。
作者:Nitin Jain
MindTree公司