<p id="l1pda"></p>
<track id="l1pda"></track>
         首頁 > 新聞 > 專家觀點 >

        Asterisk環境下語音回聲問題討論

        2013-09-22 09:35:50   作者:星昊通 朱利中   來源:CTI論壇   評論:0  點擊:


          在通信語音呼叫下,語音回聲是經常遇到的問題。同樣,在Asterisk開源的通信解決方案中,也會遇到這個問題,F在我們將對回聲問題進行以下幾個方面的討論:

          什么是VOIP環境下的回聲問題

          通常來說,在電話通信中遇到的回聲就是在通話過中,撥打的用戶聽到了自己的聲音。這些回聲問題通常表現在傳統PSTN回聲源處理問題和VOIP網絡延遲問題。

          傳統PSTN源的問題

          在傳統的PSTN模擬線路的環境中,必然會經過交換機和終端之間2-4芯線的轉換,而且這個轉換的過程可能連續經過經過工作結點來最終完成。如果在完成2-4轉換的過程中因阻抗匹配,造成”泄漏”,從而導致了”電路回聲”,F在很多用戶使用VOIP網關,從因特網IP電話網關的連接方式可以看出,IP電話網關一端連接PSTN,另一端連接因特網。如果模擬端口部分的2-4線轉換中出現阻抗不匹配的問題,同樣也會出現回聲的問題。因此,建議用戶在使用語音模擬板卡或者模擬網關時,一定要把網關支持的制式通知到相應的國家,例如在中國使用,請調整到支持中國,也減少回聲問題。

        \

        圖例 1: 2-4 芯線線路轉換出現的回聲

          VOIP網絡延遲

        \

         

        圖例 2: VOIP網絡延遲需要做回聲處理

          在VOIP網絡中,最大延遲的值肯定會超過30ms,在上圖中我們可以看到一個完整的語音流需要語音壓縮,打包,路由解析,解碼,數據重新解包等等過程,這些過程都需要一定的時間來處理。所以有時候在內網也需要考慮回聲的問題。以下拓撲圖說明了語音流通過IP網絡到PSTN網絡的整個過程,以及在傳輸過程中的延遲的原因:

        \

        圖例 3:電學回聲和網絡延遲

          以下是關于傳輸不同語音編碼或者經過多個路由節點所需要花費的時間:

        • G.723.1: 37 msec
        • G.729: 15 msec
        • G.728: 2.5 msec
        • 內部摘掛機時間10 ms msec
        • 線路傳輸: 每1 msec 一百里
        • VoIP 網關節點處理: 50 to 100 msec
        • 2M 線路,傳輸128K 的數據包需要時間從0.5 ms 到128.6 ms
        • 64Kbps 線路傳輸一個1024K 數據包
        • 解壓延遲: 通常 10 msecs 或者少于10ms
        • For a 1024K packet on a 64Kbps line

          整體來看,因為語音傳輸必須經過很多不確定的設備,例如衛星,無線網絡道德許多設備節點,語音延遲的存在是必然的。

          回聲的兩種來源:

          在目前的回聲技術領域,回聲的來源主要來自于兩個方面:

          聲學回聲(AEC)。聲學回聲主要來源于一些VOIP終端設備本身,和設備本身相關,可能經常在如下環境遇到回聲問題:

        • 免持車載電話系統,標準的電話或手機或免持模式,因為使用電話免提模式,揚聲器的聲音進入到麥克風。
        • 專用獨立的“會議電話”,使用天花板揚聲器和麥克風的桌子上已安裝的會議室系統。會議室設計不合理導致或者麥克風,揚聲器的物理位置設計問題。
        • 物理耦合(通過聽筒的揚聲器的振動傳輸到麥克風殼體)。 電話終端設計不合理,或者質量比較差的IP 電話。

        \

        圖例4:聲學原因

          電學回聲

          此問題通常是在PSTN電話系統中的在2-4芯中出現的電子線路參數(例如阻抗)不匹配導致。在圖例1 中,大家可以看到因為2-4芯線路轉換是PSTN的一個必然的語音處理過程,使用會產生回聲問題。

        \

        圖例 5:2-4wire,傳輸使用不同的線路

          Asterisk 中的回聲問題

          
        在asterisk環境下,同樣存在回聲問題。板卡的回聲問題就是asterisk用戶經常遇到的問題。在上面的解釋中,對于電學回聲,最好辦法就是在IPPBX接入的板卡上做回聲抑制的處理,例如使用帶回聲抑制的板卡和網關。對于聲學回聲,建議使用質量比較好的終端設備和IP電話機。另外,必須注意網絡傳輸過程中需要留意的幾個因素。

          我們現在介紹一下基于Asterisk語音卡的一些解決辦法:

        1. 使用支持硬件DSP回聲抑制芯片的語音板卡硬件解決辦法。目前幾乎所有的 Asterisk 語音板卡芯片都是采用Octasic 回聲抑制芯片,此廠家的芯片技術相當不錯。需要提醒用戶的是,diigum的 帶回聲的模擬語音卡支持Non-Linear Processor (NLP) 處理器,可以通過配置支持的參數vpmnlptype 進行相應的調整。此參數僅支持digium 模擬卡和單E1 數字卡。
        2. 使用開源的軟件回聲抑制解決辦法,免費的回聲抑制軟件有很多,比較常用的有mg2, oslec 等等,這些免費的軟件回聲抑制處理辦法都有同樣的局限性:
        • 占用系統的CPU資源
        • 處理的通道數有限
        • 對回聲的training 周期明顯少于帶回聲的dsp 的周期,所以training的時間大約需要10-15 second, 而硬件處理則是軟件處理的1/4.
        • 回聲抑制的軟件處理方式不支持 non-linear processor方式,始終有回聲存在于語音增益中,所以回聲不能完全消除。

          Asterisk 環境下測試回聲的方法:

          Sangoma 提供了很多豐富的排查回聲抑制的底層工具,可以輕松排查和利用回聲抑制模塊完全消除回聲抑制(當然在一定的范圍)。

        \

        Sangoma 4E1 數字語音卡

          Sangoma 回聲處理解決方案— Sangoma 如何提高Asterisk性能的28個解決辦法幾個方法是:

          1)通過底層驅動抓包工具截取回聲抑制的數據,發生此數據到技術支持,可以分析出回聲的正在原因

        \

        圖例 6 :Sangoma回聲抑制工具

          2)通過Echo Spike Generation 工具檢測回聲,用戶可以通過以下工具來抓取回聲語音效果,如果在可以消除的范圍內,回聲是可以消除的。以下例子中,tap 在50-80 之間,如果設置echo 為128的話,回聲完全可以消除。當然如果設置為64 tap,那么剩余的回聲是不能完全消除的,通話過程中仍然保留有回聲。


        \


          圖例7 ec.spike 工具。注意,此回聲發生在55 taps 和88 taps 之間,如果設置echo=128 是完全可以消除這些回聲的。

          在以上這個例子中,echo 發生發生在3ms,7ms 和9ms。12 ms 以后沒有發生echo的問題。所以,如果回聲抑制可以支持12ms 回聲消除,那么以下的回聲將會消除。

        \

        圖例8:echo問題發生時間點

          這里需要注意的是,回聲消除是一個靜態設置的值,剩余的echo,echo 抑制解決辦法是無法消除的(例如,剩余部分可能就在系統的內存中,系統將直接丟棄沒有消除的回聲)。同時因為VOIP網絡涉及了網絡延遲等等因素,這些因素是動態的,而且這些延遲的因素是回聲抑制控制器不能控制的,所以可能導致有一些回聲是不能徹底消除的。

        常見的回聲問題舉例

        1)談話者自己的回聲 :

        2)隧道效果回聲:

        回聲處理的語音效果對比

        未經過回聲處理的語音:

        經過回聲處理的語音語音:

        >>回聲抑制demo 演示

          總結

          通過以上文章介紹,我們給大家介紹了回聲問題的幾個來源,回聲問題的影響特征,同時重點介紹了在asterisk 環境下,Asterisk 語音板卡的價格測試工具,和軟件回聲抑制的一些局限性。最后,介紹了幾個回聲抑制語音效果的實例和demo 工具。希望給大家一個完整的,豐富的診斷手段,能夠幫助用戶解決實際問題。

         

         
        分享到: 收藏

        專題

        欧美性爱欧美
        <p id="l1pda"></p>
        <track id="l1pda"></track>