本文討論語音品質問題,例如語音對話期間觀察到的嘶嘶聲或靜態聲音。本文還提供幫助您解決這些語音品質問題的建議。
本文檔的讀者應瞭解以下主題:
對IP語音(VoIP)有基礎認識。
語音活動檢測(VAD)及其應用
本文件中的資訊是以下列軟體和硬體版本為依據.
運行IP Plus功能集的Cisco IOS®軟體版本12.1及更高版本。
所有思科語音網關。
本文中的資訊是根據特定實驗室環境內的裝置所建立。文中使用到的所有裝置皆從已清除(預設)的組態來啟動。如果您的網路正在作用,請確保您已瞭解任何指令可能造成的影響。
大多數基於IP的電話系統包括語音活動檢測器。該檢測器的目的是檢測語音訊號中的靜音週期並在靜音週期期間臨時中斷訊號的傳輸。這可節省頻寬,並允許遠端調整其抖動緩衝區。缺點是,在靜默期間,遠端電話必須產生自己的訊號才能播放給聽眾。通常,向聽眾播放舒適噪音,以掩蓋遠端沒有音訊訊號。舒適雜訊通常基於遠端雜訊建模,因此從實際背景雜訊切換到舒適雜訊時,不會出現明顯的對比。
圖1顯示了典型的IP電話系統。所提到的IP語音裝置可以是IP電話、IP模擬網關、IP數字網關等。
圖1:IP電話系統
在裝置A和裝置B之間的呼叫期間,裝置A達到靜音間隔(圖2)。 語音活動檢測器使用演算法來確定是否已經達到靜音間隔。通常,語音活動檢測器在每個語音突發末尾具有保持時間段t1。在此期間,它會繼續將封包傳送到遠端。這有助於避免過度切換和說話時斷時續。如果在此保持間隔期間檢測到額外的語音,裝置之間的語音流將不間斷地繼續。經過一段長度t1(圖2中的T2)後,如果沒有檢測到其他語音,IP語音裝置A將停止傳送資料包。
圖2:裝置A VAD事件
在時間T1(圖2),向裝置B傳送指示,提醒其正在啟動VAD保持器。這也包含VAD暫留的持續時間。當接收到此消息時,裝置B開始衰減它從裝置A接收的語音訊號,並將其與生成的應該衰減的舒適雜訊混合(如圖3所示)。
圖3:保持期背景雜訊與舒適雜訊衰減
這種衰減在真實背景雜訊和產生的舒適雜訊之間提供了平滑的過渡。從背景雜訊特性與產生的舒適雜訊特性不同的環境出發,使得轉換過程更加平滑,不易被察覺。VAD保持間隔(t1)的長度決定了此技術的有效性。較長的間隔可產生更平滑的發聲過渡。
如果語音訊號在時間T2之前切入(圖2),衰減立即停止,並播放全音階傳入音訊。這種插入訊號應該通過從裝置A到裝置B的另一個指示進行傳送。由於語音訊號明顯比背景雜訊大,因此它遮蔽了迴轉,並且沒有那麼明顯。
前面提到的信令可以是帶內(例如,通過RTP中的新的負載型別或指定的信令事件)或帶外(例如,H.245信令事件)。
在語音呼叫期間聽到嘶嘶聲或靜音的唯一原因是在對話中引入舒適噪音。在語音呼叫中注入舒適雜訊有兩種可能。最主要的是使用VAD。每當VAD啟動時,舒適雜訊資料包都會被引入音訊流。第二個可能性(不是主要原因)是回聲消除開始發揮作用。每當回聲消除變為活動狀態時,會在音訊流中引入舒適雜訊包。這些舒適包的特性通過包括監視正在進行的語音和接收背景雜訊的簽名的演算法來確定。這種舒適的噪音是嘶嘶作響。
在此場景中,如果裝置A暫停,裝置B可能會遇到一些嘶嘶聲。這個問題可以通過適當調整VAD引數來解決。如果對這些引數的微調不能解決問題,思科建議您禁用VAD。
有兩個引數規定VAD功能:
確定初始閾值,該閾值控制VAD何時變為活動狀態。當您在語音埠上定義music-threshold <threshold_value>命令時,可控制此情況。此值的範圍為–70 dBm至–30 dBm。預設值為–38 dBm。如果配置較低的值(接近–70 dBm),則VAD會在低得多的訊號強度下啟用。音量必須下降非常低,才能被視為靜音。如果配置更高的值(接近–30 dBm),即使語音訊號強度略有下降,VAD也會變為活動狀態。這促使播放更頻繁地播放舒適雜訊包。但是,這可能會導致音訊的輕微剪輯。
3640-6#configure terminal Enter configuration commands, one per line. End with CNTL/Z. 3640-6(config)#voice-port 3/0/0 3640-6(config-voiceport)#music-threshold ? !--- WORD: Enter a number between -70 to -30. 3640-6(config-voiceport)#music-threshold -50 3640-6(config-voiceport)#end 3640-6# 3640-6#show run | begin voice-port voice-port 3/0/0 music-threshold -50
VAD啟用後,在全域性配置下配置voice vad-time <timer_value>命令時,可以控制背景雜訊和舒適雜訊分量。這是靜默檢測和抑制語音資料包傳輸的延遲時間(以毫秒為單位)。保持時間的預設值為250毫秒。這意味著,在250毫秒內,舒適噪音將完全生效。此計時器的範圍為250毫秒至65,536毫秒。如果配置了高值,則舒適雜訊將在以後發揮作用(背景雜訊繼續播放)。 如果配置為65,536毫秒,則關閉舒適噪音。希望此計時器的值更高,以便平滑背景雜訊和舒適雜訊之間的過渡。高vad時間配置的缺點並不完全達到預期的30%-35%的頻寬節省。
3640-6#configure terminal Enter configuration commands, one per line. End with CNTL/Z. 3640-6(config)#voice vad-time ? <250-65536>milliseconds 3640-6(config)#voice vad-time 750 3640-6(config)#end 3640-6# 3640-6# 3640-6# 3640-6#show run | begin vad-time voice vad-time 750
注意:配置VAD後,在語音埠上發出shut和no shut命令,以便配置更改生效。
如果您繼續觀察嘶嘶聲和/或靜態雜訊,即使您調整了本文檔前面提到的引數,思科建議您禁用VAD。這需要在網關和Cisco CallManager上完成。以下各節介紹如何在思科網關和Cisco CallManager上禁用VAD。
在執行H.323的Cisco閘道上,您可以在VoIP撥號對等體下設定no vad指令時停用VAD。如果這是終端網關,請確保在匹配的相應入站VoIP撥號對等體上未配置vad。配置傳入的called-number <number_dialed>以匹配相應的傳入撥號對等體可能很有用。對於始發網關,不能在VoIP撥號對等體上配置vad,因為要關閉此功能,需要根據哪個選擇性終端網關來關閉它。
dial-peer voice 100 voip incoming called-number !--- In order to match all called numbers destination-pattern 1T no vad session target ipv4:10.10.10.10 dtmf-relay h245-alpha ip precedence 5
確保Cisco CallManager中的這些引數設定為False(F),以在Cisco CallManager上禁用VAD:
沈默抑制。
網關的靜默抑制。
完成以下步驟以尋找這些引數。
從Cisco CallManager Administration選單中選擇Service > Service Parameters。
從Server下拉選單中選擇Cisco CallManager IP地址或名稱,然後從Services下拉選單中選擇Cisco CallManager。
這些引數位於「服務引數配置」視窗中。
在Service Parameter配置視窗的Cluster-wide引數下,將Silence Suppression和Silence Suppression for Gateways引數設定為False。
按一下Update在Cisco CallManager中關閉VAD。Cisco CallManager 3.3和4.0的此過程類似。