よくあるお問い合わせ (FAQ)

Twilio Client 環境構築におけるベストプラクティス

Client を使ったVoIP通信の品質は、環境に大きく依存します。代表的な要素は、ファイヤーウォール・ルーターの設定で、エンドとエンドまでのネットワークの特性に合わせてチューニングすることが大事です。

インターネットは、品質が保証されないネットワークですので、このようなネットワークで Twilio Client をどのように開発すると良い結果が得られるか紹介します。

■ファイヤーウォールの設定

→こちらの記事 を参照し、必要なIPアドレスやポートレンジを許可します。利用する帯域が確保されているかも確認してください。加えて、以下の方法で通信ポリシーの設定が正しいかを確認することをお勧めします。

・ http://www.netscan.co/ より一般的なスキャンを実施
・ https://pentest-tools.com/discovery-probing/udp-port-scanner-online-nmap  よりUDPポートスキャンを実施
・ http://netalyzr.icsi.berkeley.edu/  よりさらに詳しいネットワークスキャンを実施、バッファブロートのテストも行えます

■ルーターの設定

ご利用のルーターが SIP Application Level Gateway機能 (ALG) か Stateful Packet Inspection機能 (SPI) を備えている場合、これらは無効化してください。

■ネットワーク環境

ジッター(ゆらぎ)・レーテンシー(遅延)・パケットロス は VoIP通信において、代表的な障壁になります。

・レーテンシーとは、音声パケット(メディアパケット)がネットワークを遅れて配送されることで起こります。レーテンシーが大きいと、話者にとって違和感を覚えたり、ひどい場合は会話がしづらくなります。

・パケットロスは、IP網ではよく発生する事象です。特に Wifi環境や、特定の電話機で起こりがちです。パケットロスが多発すると、話者の声がロボット音声のように感じます。

・ジッターは、本来届くべき順番で音声パケットが届かないことで発生します。小さなジッターであれば、ジッターバッファ内で自己解決できるのですが、あまりにパケットロスがある場合、本来来るべき順番のパケットを待つ時間が長くなり、会話の遅延やゆらぎにつながります。「ジッターバッファを長く取ること」と「音声遅延を小さくすること」はトレードオフの関係です。長く取ればそれだけ待ち時間も長くなるため、レイテンシーが伸びることになります。短くすると、レイテンシーは小さくなりますが、パケットロスが大きいとき、音声が飛んだり音質が下がります。

・ジッター

Client側のネットワーク環境が最も大きな影響を与えます。パケットロスや、遅延を含むロスは音質劣化に直接的かつ大きく影響します。Wifi環境は、ジッターが出やすいです。

ジッターを小さくする戦略としては以下が挙げられます。

・WifiではなくLANケーブルによるネットワーク環境を作る
・どうしてもWifiの場合は、同じチャンネルにつなげる端末数を少なくする
・同じWifi環境で大きなファイルやデータを送らない (Client環境は分離するのが望ましい)
バッファブロート を避ける。ルーターがさばききれない数のパケットを受けた際、それらをキューに入れて順番に吐き出すか、それでもタイムアウトを迎えるほどキューが溜まった時にパケットを放棄します。音声通話はリアルタイムで行うものですので、キューイングは大きな遅延につがなることになります。

ルーターに備わっている特定の Quality of Service機能 (QoS) やベンダーのデフォルト値が引き金になることもあります。ご利用のルーターのバッファサイズが小さく設定されているか確認してください。推奨するバッファサイズは、→こちら のツールで計測した際に 100ms かそれより小さくなる水準です。

全てのルーターがバッファサイズを設定できるとは限りませんし、ルーターのデフォルト値が VoIP通信に適した設定になっているとも限りません。オープンソースのルーターや、エンタープライズクラスのルーター、ゲーミング環境にチューニングされたルーター等は、デフォルトでも適した状態になっていることが多いです。

上記を一通り試してもまだジッターが改善されない場合は、QoSのルールを見直してください。Twilio Clientが使うメディア用UDPポートのトラフィックを優先させ、また、他のサービスでこのポートレンジを使うものはこのネットワーク環境を使わないよう環境を作ってください。

・レーテンシー

一般的に通話者は 250ms あたりからレーテンシーに気づき始め、600ms 以上だと不快感を覚えます。ジッターには固定要素があり、それは、コーデックの処理時間・ジッターバッファ で、これに ネットワーク通過時間 を加算したものが、最終的なレーテンシーになります。目標は 250ms 以下に抑えることです。

レイテンシーを小さくする戦略としては以下が挙げられます。

・帯域の小さいプランの帯域保証側インターネット接続サービスでは、大きなレイテンシーになりがちです。可能ならよいプランにアップグレードしてください。
・ LTE(モバイル 4Gデータ接続) は多くの場合、大きなレーテンシーです。避けてください。
・ Twilio Client 1.3 以上を使い、自動的に適用される GLL を活用してください。

・通信帯域の要件

1コールにつき、以下の帯域が保証されるようにしてください。

WebRTC: 8kbps
Mobile  :    6kbps


■ハードウェア環境

・Webブラウザ

Twilioでは主要な最新のブラウザとリビジョンと、その1つ前のリビジョンでチェックを行っています。現在のバージョンが N だとすると、N と N-1 をチェックしています。

ご利用のブラウザがサポートされているか、また設定が正しいかを 以下のURLでチェックできます。

https://networktest.twilio.com/

WebRTC は Firefox と Chrome でサポートしています。Microsoft Edge でサポートしている ORTC は、Twilio Client 1.3以上でサポートします。

・PCハードウェア

ハードウェアも音質にインパクトを与えます。異なるオーディオカードとドライバーの組み合わせでは、想定する処理の仕方が異なるため、遅延に結びつきます。Twilio でもある程度の組み合わせをチェックしていますが、世の中には多種多様のハードウェアがあるのでチェックしきれないのが現実です。

音質問題に行き当たった際には、同じテストをいくつかのハードウェア構成を変えながら実施して、一番良いものを探してください。

・モバイルOS

Twilioでは、最新のSDKについて最新のモバイルOS とその1つ前のリビジョンをチェックしています。例えば現在が iOS 8 であれば、iOS 7.1.2 までチェックしています。

・PCヘッドセット

音質問題に行き当たった場合、ヘッドセットやマイクといったハードウェアが原因かもしれません。この切り分けのためには、同じテストを ヘッドセットあり・なし で試してみる、別のハードウェアで試してみる、といった切り分けが必要です。エコー抑止機能がオン担っている場合、これを切ると改善することがあります。

ロースペックのPCやハードウェアを使う場合は、USBヘッドセットのほうが良い結果を生むことが多いです。3.5mmジャックのタイプと違い、オーディオカードへネイティブな音声をバイパスできるためです。ハイスペックなPCを使っている場合は、3.5mmジャックタイプでも問題ないでしょう。

Twilio では、Plantronics製 と Logitech製の ヘッドセットをいくつかテストしています。

・Bluetoothヘッドセット

Bluetoothのヘッドセットは個々に動き方が異なるため、少々のチャレンジが必要です。USB Bluetoothアダプターを介せる場合は、これをペアリングしてください。デバイスネイティブの Bluetoothサポートを使うよりよい結果を生むことが多いです。

Bluetoothサポートは、デバイス毎に違いが大きくなりがちで、プログラマブルな制御を提供していないこともあります。例えば、応答/切断 ボタンの機能がノンネイティブなアプリケーションに渡らなかったりといったこともあります。

定常的に発生するノイズは、多くの場合、ヘッドセットの設定に失敗しています。別のヘッドセットでテストしたり、ヘッドセットを使わないでテストして、問題箇所を切り分けてください。


Twilio Clientにおけるトラブルシューティングは →Twilio社サイト(英語) に詳しく掲載しています。

他にご質問がございましたら、リクエストを送信してください

0 コメント

記事コメントは受け付けていません。