このドキュメントでは、音声カンバセーションで発生するシッという音やザーッという音などの音声品質の問題について説明します。このドキュメントでは、このような音声品質の問題の解決に役立つヒントについても説明します。
このドキュメントの読者は次のトピックについての専門知識を有している必要があります。
Voice over IP(VoIP)の基本的な知識
VAD の概念とその用途
このドキュメントの情報は、次のソフトウェアとハードウェアのバージョンに基づいています。
IP Plus フィーチャ セットを実行する Cisco IOS® ソフトウェア リリース 12.1 以降
すべての Cisco ボイスゲートウェイ
このドキュメントの情報は、特定のラボ環境にあるデバイスに基づいて作成されました。このドキュメントで使用するすべてのデバイスは、初期(デフォルト)設定の状態から起動しています。対象のネットワークが実稼働中である場合には、どのようなコマンドについても、その潜在的な影響について確実に理解しておく必要があります。
ドキュメント表記の詳細については、『シスコ テクニカル ティップスの表記法』を参照してください。
ほとんどの IP ベースのテレフォニー システムには、ボイスアクティビティ検出機能があります。この機能の目的は、ボイス信号の無音期間を検出し、無音期間中、信号の伝送を一時的に中断することです。これによって帯域幅が節約され、遠端でジッタ バッファを調整できます。欠点は、無音期間中、遠端の電話機が独自に信号を生成し、通話者に対して再生しなければならない点です。通常は、遠端からボイス信号が届いていないことを隠すために、通話者に対してコンフォート ノイズが再生されます。実際のバックグラウンド ノイズからコンフォート ノイズに切り替わるときに明確な差異が感じられないようにするため、コンフォート ノイズは通常、遠端のノイズに基づいてモデル化されています。
図 1 は典型的な IP テレフォニー システムを示しています。図中の IP ボイスデバイスには、IP 電話、IP アナログ ゲートウェイ、IP デジタル ゲートウェイなどが当てはまります。
図 1:IP テレフォニー システム
デバイス A とデバイス B 間のコール中に、デバイス A が無音期間に入ります(図 2)。 ボイス アクティビティ検出機能では、無音期間に入ったかどうかを判定するためにアルゴリズムが使用されます。通常は過度の切り替えやボイスにむらが生じることを防ぐため、各ボイスのバーストの最後に時間 t1 のホールドオーバー期間が設けられていて、その間は継続して遠端にパケットが送信されます。このホールドオーバー期間中に別のボイスが検出されると、デバイス間のボイスストリームは中断されずにそのまま継続されます。これにより、過度の切り替えが行われたり、音声が途切れたりする事態を回避できます。このホールドオーバー期間中に別の音声が検出されても、デバイス間のボイス ストリームは中断されずにそのまま継続されます。時間 t1 が経過しても(下の図 2 の T2)次のボイスが検出されない場合、IP ボイスデバイス A はパケットの送信を停止します。
図 2:デバイス A の VAD イベント
時間 T1(図 2)で、VAD ホールドオーバーが始まったことを伝える通知がデバイス B に送信されます。この通知には、VAD ホールドオーバーの期間も含まれます。デバイス B はこのメッセージを受信すると、デバイス A から受信されるボイス信号を徐々に減衰し、逆にコンフォート ノイズを増幅しながら、そのボイス信号と混合します(図 3 を参照)。
図 3:ホールドオーバー期間中のバックグラウンド ノイズとコンフォート ノイズ減衰の対比
この減衰には、実際のバックグラウンド ノイズから、生成されたコンフォート ノイズにスムーズに移行できるという効果があります。バックグラウンド ノイズの特性と生成されたコンフォート ノイズの特性が大きく異なる環境での移行をよりスムーズに行うことが可能で、移行が気付かれる可能性も小さくなります。この手法の効果の度合いは VAD ホールドオーバー期間の長さ(t1)によって決まります。VAD ホールドオーバー期間が長ければ長いほど、ボイスがスムーズに移行します。
時間 T2(図 2)の前にボイス信号が割り込んできた場合は、減衰がただちに中止され、着信ボイスがそのまま再生されます。このようなカットインは、デバイスAからデバイスBへの別の指示を通じて信号を送る必要があります。音声信号はバックグラウンドノイズよりも著しく大きいため、戻りの遷移を遮断します。
前述のシグナリングはインバンド(たとえば、RTP の新しいペイロード タイプや Named Signaling Event など)でもアウトバンド(H.245 シグナリング イベントなど)でも可能です。
ボイスコール中にヒス ノイズやスタティック ノイズが混入する原因は 1 つしかありません。それは会話へのコンフォート ノイズの導入です。コンフォート ノイズがボイスコールに導入される可能性は 2 つです。1 つは VAD の使用で、これが最大の要因です。VAD が作動すると必ず、コンフォート ノイズ パケットがボイスストリームに導入されます。もう 1 つの可能性はエコー キャンセルの作動です(これは主要な要因ではありません)。エコー キャンセルがアクティブになると必ず、コンフォート ノイズ パケットがボイスストリームに導入されます。これらのコンフォート パケットの特性は、進行中の会話を監視し、バックグラウンド ノイズの形跡を受信するアルゴリズムによって決まります。このコンフォート ノイズがヒス ノイズです。
上記のシナリオでは、デバイス A が一時停止した場合、デバイス B がかなりのヒス ノイズを受ける可能性があります。これには、VAD パラメータを適切に調整することで対応できます。VAD パラメータを微調整しても問題が解決しない場合は、VAD を無効にすることをお勧めします。
VAD の機能を設定するために、次の 2 つのパラメータがあります。
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-time に大きい値を設定した場合の欠点は、期待される 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 ゲートウェイと Cisco CallManager で VAD を無効にする方法を示します。
H.323 を実行している Cisco ゲートウェイでは、VoIP ダイヤルピアに no vad コマンドを設定すると、VAD を無効にすることができます。終端ゲートウェイの場合は必ず、一致する適切な着信 VoIP ダイヤルピアに no vad を設定してください。適切な着信ダイヤルピアと一致させるために incoming called-number <number_dialed> を設定するとよい場合があります。発信元ゲートウェイでは、どの選択的な終端ゲートウェイで VAD を無効にするかに基づいて、VoIP ダイヤルピアに no 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 で VAD を無効にするには、Cisco CallManager で次のパラメータが False (F) に設定されていることを確認してください。
Silence Suppression
Silence Suppression for Gateways
これらのパラメータを表示するには、次の手順を実行します。
CallManager の [Administration] メニューから、[Service] > [Service Parameters] を選択します。
[Server] ドロップダウン メニューから Cisco CallManager の IP アドレスまたは名前を選択し、[Services] ドロップダウン メニューから [Cisco CallManager] を選択します。
[Service Parameters Configuration] ウィンドウにパラメータが表示されます。
[Service Parameters Configuration] ウィンドウの [Cluster-wide Parameters] にリストされている [Silence Suppression] および [Silence Suppression for Gateways] パラメータを [False] に設定します。
[Update] をクリックして、Cisco CallManager の VAD を無効にします。Cisco CallManager 3.3 および 4.0 でも、同様の手順です。