在通信語音呼叫下,語音回聲是經(jīng)常遇到的問題。同樣,在Asterisk開源的通信解決方案中,也會遇到這個問題,F(xiàn)在我們將對回聲問題進行以下幾個方面的討論:
什么是VOIP環(huán)境下的回聲問題
通常來說,在電話通信中遇到的回聲就是在通話過中,撥打的用戶聽到了自己的聲音。這些回聲問題通常表現(xiàn)在傳統(tǒng)PSTN回聲源處理問題和VOIP網(wǎng)絡(luò)延遲問題。
傳統(tǒng)PSTN源的問題
在傳統(tǒng)的PSTN模擬線路的環(huán)境中,必然會經(jīng)過交換機和終端之間2-4芯線的轉(zhuǎn)換,而且這個轉(zhuǎn)換的過程可能連續(xù)經(jīng)過經(jīng)過工作結(jié)點來最終完成。如果在完成2-4轉(zhuǎn)換的過程中因阻抗匹配,造成”泄漏”,從而導(dǎo)致了”電路回聲”。現(xiàn)在很多用戶使用VOIP網(wǎng)關(guān),從因特網(wǎng)IP電話網(wǎng)關(guān)的連接方式可以看出,IP電話網(wǎng)關(guān)一端連接PSTN,另一端連接因特網(wǎng)。如果模擬端口部分的2-4線轉(zhuǎn)換中出現(xiàn)阻抗不匹配的問題,同樣也會出現(xiàn)回聲的問題。因此,建議用戶在使用語音模擬板卡或者模擬網(wǎng)關(guān)時,一定要把網(wǎng)關(guān)支持的制式通知到相應(yīng)的國家,例如在中國使用,請調(diào)整到支持中國,也減少回聲問題。
圖例 1: 2-4 芯線線路轉(zhuǎn)換出現(xiàn)的回聲
VOIP網(wǎng)絡(luò)延遲
圖例 2: VOIP網(wǎng)絡(luò)延遲需要做回聲處理
在VOIP網(wǎng)絡(luò)中,最大延遲的值肯定會超過30ms,在上圖中我們可以看到一個完整的語音流需要語音壓縮,打包,路由解析,解碼,數(shù)據(jù)重新解包等等過程,這些過程都需要一定的時間來處理。所以有時候在內(nèi)網(wǎng)也需要考慮回聲的問題。以下拓撲圖說明了語音流通過IP網(wǎng)絡(luò)到PSTN網(wǎng)絡(luò)的整個過程,以及在傳輸過程中的延遲的原因:
圖例 3:電學(xué)回聲和網(wǎng)絡(luò)延遲
以下是關(guān)于傳輸不同語音編碼或者經(jīng)過多個路由節(jié)點所需要花費的時間:
- G.723.1: 37 msec
- G.729: 15 msec
- G.728: 2.5 msec
- 內(nèi)部摘掛機時間10 ms msec
- 線路傳輸: 每1 msec 一百里
- VoIP 網(wǎng)關(guān)節(jié)點處理: 50 to 100 msec
- 2M 線路,傳輸128K 的數(shù)據(jù)包需要時間從0.5 ms 到128.6 ms
- 64Kbps 線路傳輸一個1024K 數(shù)據(jù)包
- 解壓延遲: 通常 10 msecs 或者少于10ms
- For a 1024K packet on a 64Kbps line
整體來看,因為語音傳輸必須經(jīng)過很多不確定的設(shè)備,例如衛(wèi)星,無線網(wǎng)絡(luò)道德許多設(shè)備節(jié)點,語音延遲的存在是必然的。
回聲的兩種來源:
在目前的回聲技術(shù)領(lǐng)域,回聲的來源主要來自于兩個方面:
聲學(xué)回聲(AEC)。聲學(xué)回聲主要來源于一些VOIP終端設(shè)備本身,和設(shè)備本身相關(guān),可能經(jīng)常在如下環(huán)境遇到回聲問題:
- 免持車載電話系統(tǒng),標(biāo)準(zhǔn)的電話或手機或免持模式,因為使用電話免提模式,揚聲器的聲音進入到麥克風(fēng)。
- 專用獨立的“會議電話”,使用天花板揚聲器和麥克風(fēng)的桌子上已安裝的會議室系統(tǒng)。會議室設(shè)計不合理導(dǎo)致或者麥克風(fēng),揚聲器的物理位置設(shè)計問題。
- 物理耦合(通過聽筒的揚聲器的振動傳輸?shù)禁溈孙L(fēng)殼體)。 電話終端設(shè)計不合理,或者質(zhì)量比較差的IP 電話。
圖例4:聲學(xué)原因
電學(xué)回聲
此問題通常是在PSTN電話系統(tǒng)中的在2-4芯中出現(xiàn)的電子線路參數(shù)(例如阻抗)不匹配導(dǎo)致。在圖例1 中,大家可以看到因為2-4芯線路轉(zhuǎn)換是PSTN的一個必然的語音處理過程,使用會產(chǎn)生回聲問題。
圖例 5:2-4wire,傳輸使用不同的線路
Asterisk 中的回聲問題
在asterisk環(huán)境下,同樣存在回聲問題。板卡的回聲問題就是asterisk用戶經(jīng)常遇到的問題。在上面的解釋中,對于電學(xué)回聲,最好辦法就是在IPPBX接入的板卡上做回聲抑制的處理,例如使用帶回聲抑制的板卡和網(wǎng)關(guān)。對于聲學(xué)回聲,建議使用質(zhì)量比較好的終端設(shè)備和IP電話機。另外,必須注意網(wǎng)絡(luò)傳輸過程中需要留意的幾個因素。
我們現(xiàn)在介紹一下基于Asterisk語音卡的一些解決辦法:
- 使用支持硬件DSP回聲抑制芯片的語音板卡硬件解決辦法。目前幾乎所有的 Asterisk 語音板卡芯片都是采用Octasic 回聲抑制芯片,此廠家的芯片技術(shù)相當(dāng)不錯。需要提醒用戶的是,diigum的 帶回聲的模擬語音卡支持Non-Linear Processor (NLP) 處理器,可以通過配置支持的參數(shù)vpmnlptype 進行相應(yīng)的調(diào)整。此參數(shù)僅支持digium 模擬卡和單E1 數(shù)字卡。
- 使用開源的軟件回聲抑制解決辦法,免費的回聲抑制軟件有很多,比較常用的有mg2, oslec 等等,這些免費的軟件回聲抑制處理辦法都有同樣的局限性:
- 占用系統(tǒng)的CPU資源
- 處理的通道數(shù)有限
- 對回聲的training 周期明顯少于帶回聲的dsp 的周期,所以training的時間大約需要10-15 second, 而硬件處理則是軟件處理的1/4.
- 回聲抑制的軟件處理方式不支持 non-linear processor方式,始終有回聲存在于語音增益中,所以回聲不能完全消除。
Asterisk 環(huán)境下測試回聲的方法:
Sangoma 提供了很多豐富的排查回聲抑制的底層工具,可以輕松排查和利用回聲抑制模塊完全消除回聲抑制(當(dāng)然在一定的范圍)。
Sangoma 4E1 數(shù)字語音卡
Sangoma 回聲處理解決方案— Sangoma 如何提高Asterisk性能的28個解決辦法幾個方法是:
1)通過底層驅(qū)動抓包工具截取回聲抑制的數(shù)據(jù),發(fā)生此數(shù)據(jù)到技術(shù)支持,可以分析出回聲的正在原因
圖例 6 :Sangoma回聲抑制工具
2)通過Echo Spike Generation 工具檢測回聲,用戶可以通過以下工具來抓取回聲語音效果,如果在可以消除的范圍內(nèi),回聲是可以消除的。以下例子中,tap 在50-80 之間,如果設(shè)置echo 為128的話,回聲完全可以消除。當(dāng)然如果設(shè)置為64 tap,那么剩余的回聲是不能完全消除的,通話過程中仍然保留有回聲。
圖例7 ec.spike 工具。注意,此回聲發(fā)生在55 taps 和88 taps 之間,如果設(shè)置echo=128 是完全可以消除這些回聲的。
在以上這個例子中,echo 發(fā)生發(fā)生在3ms,7ms 和9ms。12 ms 以后沒有發(fā)生echo的問題。所以,如果回聲抑制可以支持12ms 回聲消除,那么以下的回聲將會消除。
圖例8:echo問題發(fā)生時間點
這里需要注意的是,回聲消除是一個靜態(tài)設(shè)置的值,剩余的echo,echo 抑制解決辦法是無法消除的(例如,剩余部分可能就在系統(tǒng)的內(nèi)存中,系統(tǒng)將直接丟棄沒有消除的回聲)。同時因為VOIP網(wǎng)絡(luò)涉及了網(wǎng)絡(luò)延遲等等因素,這些因素是動態(tài)的,而且這些延遲的因素是回聲抑制控制器不能控制的,所以可能導(dǎo)致有一些回聲是不能徹底消除的。
常見的回聲問題舉例
1)談話者自己的回聲 :
2)隧道效果回聲:
回聲處理的語音效果對比
未經(jīng)過回聲處理的語音:
經(jīng)過回聲處理的語音語音:
>>回聲抑制demo 演示
總結(jié)
通過以上文章介紹,我們給大家介紹了回聲問題的幾個來源,回聲問題的影響特征,同時重點介紹了在asterisk 環(huán)境下,Asterisk 語音板卡的價格測試工具,和軟件回聲抑制的一些局限性。最后,介紹了幾個回聲抑制語音效果的實例和demo 工具。希望給大家一個完整的,豐富的診斷手段,能夠幫助用戶解決實際問題。