一種支持多種語(yǔ)音編碼制式的回聲抵消實(shí)現(xiàn)方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及語(yǔ)音處理領(lǐng)域,具體涉及對(duì)多通道不同語(yǔ)音編碼制式的回聲抵消處理。
【背景技術(shù)】
[0002]在語(yǔ)音通信過(guò)程中,網(wǎng)絡(luò)中存在不同程度的延時(shí),在發(fā)話端聽(tīng)到自己的回聲,影響通話質(zhì)量,當(dāng)一對(duì)電話兩端的語(yǔ)音編碼制式不同的時(shí)候,通常需要將不同編碼制式話音轉(zhuǎn)換為PCM模式再通過(guò)一個(gè)回聲抵消專用芯片完成回聲抵消處理,語(yǔ)音的編碼轉(zhuǎn)換和回聲抵消在不同的硬件功能實(shí)體中完成,這樣增加了硬件設(shè)計(jì)成本,同時(shí)由于需要生成一種中介的PCM編碼模式,既引入了編碼轉(zhuǎn)換損耗,又降低了信號(hào)處理效率。
【發(fā)明內(nèi)容】
[0003]本發(fā)明提出了一種對(duì)PCM(脈沖編碼調(diào)制),CVSD(連續(xù)可變斜率增量調(diào)制),G729(ITU-T G729),AHELP(高級(jí)混合激勵(lì)線性預(yù)測(cè))幾種不同語(yǔ)音編碼制式的回聲抵消實(shí)現(xiàn)方法,該方法采用針對(duì)時(shí)延抖動(dòng)的緩沖平滑機(jī)制,根據(jù)各通道的編碼模式信息,對(duì)以上幾種編碼模式話音解碼為線性PCM編碼,并對(duì)不同編碼模式話音進(jìn)行采樣率和增益匹配,采用近端信號(hào)檢測(cè)結(jié)果作為是否對(duì)濾波器系數(shù)更新的依據(jù),回波抵消算法的核心部分是一個(gè)自適應(yīng)FIR濾波器,其抽頭系數(shù)以使預(yù)測(cè)誤差信號(hào)均方值最小為原則進(jìn)行調(diào)整,回波抵消處理完成之后將各端的線性PCM數(shù)據(jù)編碼為對(duì)端語(yǔ)音編碼模式之后送出。
[0004]每個(gè)通道數(shù)據(jù)輸入支持長(zhǎng)度變化的數(shù)據(jù)包大小,由內(nèi)部緩沖區(qū)對(duì)突發(fā)的數(shù)據(jù)進(jìn)行緩沖平滑處理,在接收端各通道緩沖50ms數(shù)據(jù)之后進(jìn)行解碼,在發(fā)送端以1ms周期發(fā)送語(yǔ)音編碼數(shù)據(jù)。
[0005]根據(jù)信令中各通道的編碼模式信息,以1.2kbps的AHELP模式幀長(zhǎng)度50ms作為解碼時(shí)間長(zhǎng)度的基數(shù),以50ms的時(shí)間周期對(duì)PCM,CVSD,G729,AHELP幾種編碼模式話音解碼為線性PCM編碼,在完成回聲抵消處理之后再將語(yǔ)音信號(hào)編碼為各自的編碼模式之后送出。
[0006]由于采用50ms時(shí)間基數(shù)對(duì)近端信號(hào)進(jìn)行解碼,相當(dāng)于在近端終端與回聲抵消處理之間引入了 50ms的時(shí)延,在實(shí)際處理時(shí),采取措施將這部分延時(shí)時(shí)間抵消掉,從而減少自適應(yīng)濾波器抽頭系數(shù)的階數(shù)。
[0007]對(duì)PCM、CVSD、G729、AHELP幾種不同編碼模式話音進(jìn)行采樣率匹配,將各通道話音采樣率統(tǒng)一為Skhz標(biāo)準(zhǔn),待回聲抵消處理完成之后,再將各通道話音的采樣率還原為各個(gè)通道的原采樣率。
[0008]對(duì)PCM、CVSD、G729、AHELP幾種不同編碼模式的話音進(jìn)行增益匹配,將所有編碼模式話音幅度精度統(tǒng)一為13bit參與運(yùn)算,回聲抵消處理完成之后,再將各編碼制式話音信號(hào)幅度還原為原始精度。
[0009]在回聲抵消處理時(shí),需要參考近端信號(hào)檢測(cè)結(jié)果作為是否更新自適應(yīng)濾波器系數(shù)的判據(jù),如果檢測(cè)結(jié)果顯示近端有語(yǔ)音信號(hào),則此時(shí)暫停更新濾波器系數(shù),否則會(huì)引起自適應(yīng)濾波器誤調(diào),導(dǎo)致算法發(fā)散,如果檢測(cè)結(jié)果顯示近端無(wú)語(yǔ)音信號(hào),則繼續(xù)更新濾波器系數(shù)。
[0010]近端信號(hào)檢測(cè)采取以下判斷方法:
(一)計(jì)算遠(yuǎn)端短時(shí)能量P1 (n)= (1-B1) P1 (η-1) + a^x2 (η),其中 ael/128,χ (η)為遠(yuǎn)端輸入信號(hào);
(二)計(jì)算近端短時(shí)能量P2 (n)= (1- a2) P2 (η-1) + a2*y2 (η),其中 a2=l/128,y (η)為近端輸入信號(hào);
(三)滿足下列條件判為有近端信號(hào):Ρ2(η) >= >/2 max (P1 (η), P1 (η-1), P1(η-2)……P1 (η-Ν)),其中 Ν=128 ;
(四)在判斷為有近端信號(hào)之后,在之后的256個(gè)采樣點(diǎn)(即32ms)內(nèi)認(rèn)為存在近端信號(hào),在此32ms期間如果有樣點(diǎn)值滿足條件(三),則以此樣點(diǎn)值為起點(diǎn),之后的32ms認(rèn)為存在近端信號(hào),這樣可平滑檢測(cè)效果,避免對(duì)近端信號(hào)的誤判。
[0011]回聲抵消處理采取以下步驟完成:
(一)計(jì)算回聲信號(hào)的估計(jì)值:rn= Xn ^ht (n), Xn為遠(yuǎn)端信號(hào),ht(n)為自適應(yīng)濾波器的沖擊響應(yīng);
(二)計(jì)算遠(yuǎn)端信號(hào)能量:S2x(η)=(1-α).δ2χ(η-1) + α.χη2,其中 α =1/256 ;
(三)計(jì)算殘差信號(hào):en=vn_rn,其中vn為真實(shí)的回聲信號(hào);
(四)自適應(yīng)濾波器系數(shù)更新:h(n+l)= ξ.h(n) + (δ2?)-1.β - en - xn,其中ξ =1-2_26為泄露因子,β =2 _9為迭代步長(zhǎng);
本發(fā)明方法的完整步驟如下:1)對(duì)接收話音碼流進(jìn)行緩沖平滑;2)根據(jù)各通道語(yǔ)音編碼模式進(jìn)行解碼;3)采樣率匹配;4)增益匹配;5)近端語(yǔ)音檢測(cè);6)自適應(yīng)濾波、濾波器系數(shù)更新;7)采樣率還原;8)增益還原;9)編碼;10)每1ms均勻發(fā)送編碼數(shù)據(jù)。
[0012]本發(fā)明的有益技術(shù)效果是:1)能夠?qū)CM,CVSD, G729,AHELP幾種不同語(yǔ)音編碼制式的話音進(jìn)行回聲抵消處理;2)采取平滑緩沖機(jī)制,適應(yīng)分組網(wǎng)環(huán)境下的時(shí)延抖動(dòng),為回聲抵消器的輸入提供連續(xù)均勻的話音碼流,提高解碼后話音聽(tīng)覺(jué)質(zhì)量;3)設(shè)置遠(yuǎn)端信號(hào)緩沖,以前一次50ms的解碼話音作為遠(yuǎn)端數(shù)據(jù)計(jì)算回聲信號(hào)的估計(jì)值,抵消由于對(duì)近端信號(hào)的50ms緩沖造成的時(shí)延,從而減少自適應(yīng)濾波器抽頭系數(shù)的階數(shù);4)對(duì)解碼后的話音進(jìn)行采樣率和增益匹配以適應(yīng)對(duì)不同編碼模式的回聲抵消處理;5)采用近端信號(hào)檢測(cè)結(jié)果作為是否對(duì)濾波器系數(shù)更新的依據(jù),消除近端信號(hào)對(duì)濾波器的影響;6)采用使預(yù)測(cè)誤差信號(hào)均方值最小的原則,更新自適應(yīng)濾波器系數(shù)參數(shù),提高回聲抵消處理精度。
【具體實(shí)施方式】
[0013]針對(duì)【背景技術(shù)】中現(xiàn)有技術(shù)的不足,本發(fā)明提出了一種支持多種語(yǔ)音編碼制式的回聲抵消實(shí)現(xiàn)方法,本發(fā)明方法的流程可概括如下:1)對(duì)接收話音碼流進(jìn)行緩沖平滑;2)根據(jù)各通道語(yǔ)音編碼模式進(jìn)行解碼;3)采樣率匹配;4)增益匹配;5)近端語(yǔ)音檢測(cè);6)自適應(yīng)濾波、濾波器系數(shù)更新;7)采樣率還原;8)增益還原;9)編碼;10)每1ms周期均勻發(fā)送編碼數(shù)據(jù)。
[0014]上述方法流程中的步驟I)和10)共同構(gòu)成時(shí)延抖動(dòng)緩沖平滑處理機(jī)制,該機(jī)制對(duì)信號(hào)整形,可有效消除網(wǎng)絡(luò)時(shí)延抖動(dòng)。時(shí)延抖動(dòng)緩沖平滑機(jī)制包括:在接收端對(duì)每個(gè)通道的兩端分別開(kāi)辟1600字節(jié)的循環(huán)緩沖區(qū),對(duì)應(yīng)PCM (64 kbps), CVSD (16 kbps), G729 (8kbps), AHELP (2.4kbps),AHELP (1.2kbps)幾種編碼模式的最大緩沖深度分別為200ms、800ms、1600ms、5000ms、10000ms,通道在連接建立后接收50ms數(shù)據(jù)之后進(jìn)行解碼,當(dāng)收數(shù)據(jù)總數(shù)超過(guò)取數(shù)據(jù)總數(shù)1600字節(jié)時(shí),將新到的數(shù)據(jù)丟棄,當(dāng)收數(shù)據(jù)總數(shù)與取數(shù)據(jù)總數(shù)相等時(shí),需重新緩沖50ms數(shù)據(jù)之后再取數(shù)據(jù)進(jìn)行解碼。在發(fā)送端以1ms周期將語(yǔ)音編碼數(shù)據(jù)均勻、連續(xù)地發(fā)出。
[0015]解碼周期選擇50ms的依據(jù):對(duì)于PCM和CVSD這兩種波形編碼來(lái)說(shuō),不存在幀的概念,PCM是每個(gè)字節(jié)代表一個(gè)采樣點(diǎn),CVSD是每個(gè)比特代表一個(gè)采樣點(diǎn),而對(duì)于G729和AHELP這兩種參數(shù)編碼來(lái)說(shuō),存在幀的概念,G729每幀代表80個(gè)采樣點(diǎn),也就是1ms內(nèi)容,AHELP (2.4kbps)每幀200個(gè)采樣點(diǎn),時(shí)間是25ms,AHELP (1.2kbps)每幀400個(gè)采樣點(diǎn),時(shí)間是50ms,需要選擇一個(gè)能夠適應(yīng)所有編碼模式共同參與運(yùn)算的時(shí)間基數(shù),我們選擇的50ms這個(gè)基數(shù)恰好是一幀AHELP (1.2kbps)、兩幀AHELP (2.4kbps)、五幀G729所對(duì)應(yīng)的時(shí)間,以統(tǒng)一的解碼時(shí)間基數(shù)完成解碼有利于簡(jiǎn)化解碼過(guò)程,提高處理效率。
[0016]由于采用50ms時(shí)間基數(shù)對(duì)遠(yuǎn)端和近端信號(hào)進(jìn)行解碼,兩端的信號(hào)需要緩沖50ms時(shí)間再解碼,對(duì)于遠(yuǎn)端信號(hào)來(lái)說(shuō),這50ms時(shí)間可看做是網(wǎng)絡(luò)時(shí)延,而對(duì)于近端信號(hào)來(lái)說(shuō),相當(dāng)于在近端終端與回聲抵消處理之間人為的引入了 50ms的時(shí)延,在實(shí)際處理時(shí),采取措施將這部分延時(shí)時(shí)間抵消掉,從而減少自適應(yīng)濾波器抽頭系數(shù)的階數(shù),其實(shí)現(xiàn)思路如下:
設(shè)置遠(yuǎn)端參考信號(hào)緩沖區(qū),緩沖區(qū)大小為50ms,緩沖內(nèi)容為上次遠(yuǎn)端信號(hào)解碼后的線性PCM值,在進(jìn)行回聲抵消處理時(shí),將上次遠(yuǎn)端信號(hào)解碼內(nèi)容作為本次回聲抵消的遠(yuǎn)端參考信號(hào),由此信號(hào)計(jì)算回聲信號(hào)的估計(jì)值,待回聲抵消處理完成之后,再將本次解碼得到的遠(yuǎn)端信號(hào)保存到遠(yuǎn)端參考信號(hào)緩沖區(qū)中以作為下次回聲抵消的遠(yuǎn)端信號(hào)參考,這樣可抵消由于對(duì)近端信號(hào)的50ms緩沖造成的時(shí)延。
[0017]在進(jìn)行回聲抵消處理之前,對(duì)不同編碼模式話音進(jìn)行采樣率匹配,PCM、G729和AHELP的采樣率為8khz,而CVSD采樣率為16khz,不同采樣率的話音不能直接進(jìn)入回聲抵消器中,需要將各通道解碼后的線性PCM話音的采樣率統(tǒng)一為Skhz標(biāo)準(zhǔn),待回聲抵消處理完成之后,再將各通道的采樣率還原為各個(gè)通道的原采樣率。
[0018]采樣率的匹配采取抽取和內(nèi)插的處理方法,采樣率由16khz變換為8khz時(shí),采取抽取因子為2的抽取器完成