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

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

Client を使った VoIP 通信の品質は環境に大きく依存します。代表的な要素は、ファイヤーウォール・ルーターの設定で、エンドとエンドまでのネットワークの特性に合わせてチューニングすることが大事です。インターネットは品質が保証されないネットワークなので、このようなネットワークで Twilio Client をどのように開発すると良い結果が得られるのか紹介します。

 

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

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

◻︎ Twilio WebRTC Diagnostics
https://networktest.twilio.com/

■ルーターの設定

ご利用のルーターが 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: 10kbps
      • Mobile  :    10kbps


■ハードウェア環境

・Web ブラウザ

Twilio では主要な最新のブラウザとリビジョンと、その1つ前のリビジョンでチェックを行っています。現在のバージョンが N だとすると、N と N-1 をチェックしています。ご利用のブラウザがサポートされているか、また設定が正しいかどうかは 以下のURLでチェックできます。

◻︎ Twilio Client JS SDK: Twilio in the browser
https://www.twilio.com/docs/voice/client/javascript

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 ジャックタイプでも問題ないでしょう。Sennheiser、Jabra の1万円前後の製品で、USB 接続を利用される方が多いようです。

 

Bluetooth ヘッドセット

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

Bluetoothサポートは、デバイス毎に違いが大きくなりがちで、プログラマブルな制御を提供していないこともあります。例えば、応答/切断 ボタンの機能がノンネイティブなアプリケーションに渡らなかったりといったこともあります。定常的に発生するノイズは、多くの場合、ヘッドセットの設定に失敗しています。別のヘッドセットでテストしたり、ヘッドセットを使わないでテストしたりなど、問題箇所を切り分けてください。

Twilio Client におけるトラブルシューティングは Twilio 社のヘルプセンター(英語) に詳しく掲載していますので、併せてご参照ください。

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

0 コメント

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