現象 |
|
Asteriskでは、しばしば相手の声や、自分の声が反響したり、
山彦のように響いて聞こえたりする「エコー」が問題になります。
Asteriskというか、SIPなど音声を電線ではなくデータにしてから
伝送するものにはかならずついて回る問題です。
ここでは、このエコーの問題を考えて見ます。
|
しくみ |
|
エコーが起きる理由は、様々にあって、簡単には説明できませんが、
大雑把な解釈としてあげるとすれば、話者が発した声が電話線を通って
相手に届いたときに、相手側の電話機のスピーカから出た音を同じ電話機の
マイクが拾ってしまい、そのマイクが拾った音が電話線を伝って話者の
スピーカから聞こえてしまうということです。
このとき、音が戻ってくる時間が早いと、エコーしたかどうかわからないので
気になりませんが、何かの理由で戻ってくる速度が遅いと、エコーしていると
知覚してしまいます。
さらに、話者の声を戻してしまうポイントは相手の電話機に限らず、
様々な要因が考えられます。
|
解決の糸口 |
|
まず、いかなる場合でも、家庭のアナログ電話機と同じ品質の通話が
できなければだめだというお客さんには、エコーの解決は難しいです。
高額なエコーキャンセラでも入れれば改善されるかもしれませんが。
ですので、エコーの根本解決は難しいという前提で考えていかなければだめです。
エコーをなくすのでなく、エコーをさせにくい状態にするというスタンスです。
エコーをさせにくい状態を作る方法ですが、
「話者が発した音のボリュームは小さく、耳に届く直前のスピーカ側のボリューム調整で音量をあわせる」
つまり、発話側の音量は小さくし、音量自体は受話側の末端で調整するというのが鉄則らしいです。
|
対処方法 |
|
送話のボリュームを調整するためには、Asteriskに付属しているツールが便利です。
zaptelフォルダにある『ztmonitor』ツールがそれです。
やりかたは簡単です。
ztmonitor <チャンネル番号> -v
というコマンドを投入し、そのチャンネルを使って電話をかけます。
すると、声の大きさに合わせて、ボリューム表示が伸びたり縮んだりするはずです。
txは送話側、つまりこちらの音声、rxは受話側つまり相手の音声の大きさです。
このボリューム表示が振り切れていると、音量が大きすぎます。
音量を調節するには、/etc/asterisk/zapata.conf の rxgain 及び txgain の
値をマイナス値にしてみてください。
そしてAsteriskを再起動し、もう一度ztmonitorを実行して電話をかけ、音量を
チェックします。
これを、メーターが振り切れなくなるまで繰り返します。
Asteriskのエコーキャンセル関係の設定項目の代表的なものには、 echocancel = yes
echotraining = yes
echocancelwhenbridged=yes
などがあります。
これらは、/etc/asterisk/zapata.conf にあります。
|