VoIPは音声をどう運ぶのか|パケット化・RTP・UDPの基礎

音声技術の基礎|第4回

IP電話では、声を一続きの信号として回線に流し続けるのではなく、小さなデータのまとまりに分けて送ります。このまとまりがパケットです。音声のデジタル化から一歩進めて、RTPとUDPが何を担当し、受信側でどう再生するかを見ていきます。

1. 音声を短い時間ごとにまとめる

まずコーデックで符号化した音声を、一定の時間分まとめます。例えば20 ms分を1パケットに格納するなら、連続送信時は1秒間に50パケットです。20 msは説明例であり、すべての通話で固定された値ではありません。

G.711の音声データは64,000 bit/sなので、20 ms分は64,000 × 0.02 ÷ 8=160バイトです。この160バイトに、順序や送信先などを扱う情報が付加されます。

音声を短い時間ごとにまとめ、RTP・UDP・IPの情報を付加します。領域の幅はバイト数の比率ではありません。
音声を短い時間ごとにまとめ、RTP・UDP・IPの情報を付加します。領域の幅はバイト数の比率ではありません。

2. RTP・UDP・IPは別の役割を持つ

層・形式 主な役割
音声ペイロード コーデックで符号化した音声そのもの
RTP 順序や音声の時間関係を扱う情報
UDP ポートを使ってデータグラムを受け渡す
IP IPアドレスに基づく配送

一般的なVoIPではRTPをUDP上で運びます。RTPにはシーケンス番号やタイムスタンプがあり、受信側が欠落や時間関係を判断する助けになります。ただしRTP自体が、パケットの到着や遅延上限を保証するわけではありません。

UDPは、失われたデータを自動的に再送して順番どおりにそろえる機能を持ちません。音声では再生時刻を過ぎたデータを待ち続けるより、欠落を補いながら会話を続ける判断が必要になります。

3. パケット番号と音声の時刻を分ける

シーケンス番号はパケットの順序を表します。一方、RTPタイムスタンプは音声の時間関係を表し、その単位はコーデックのRTPクロックに従います。パケット数と標本数は同じものではありません。

G.711・20 msの連続送信例では、パケットの番号が1つ進む間に、タイムスタンプは160進みます。これは8,000 × 0.02=160によります。番号の初期値は固定ではなく、無音抑圧や方式の違いもあるため、この例をすべてのRTPへ当てはめないでください。

4. 受信側では、到着した順にすぐ再生するわけではない

ネットワークではパケットの間隔が揺れたり、順番が入れ替わったりします。受信側はジッターバッファに一時的にため、音声の時間関係に沿って再生します。間に合わない部分にはPLCなどの欠落補償を使う場合があります。

ここには遅延との交換関係があります。長く待てば遅れて届くパケットを使える可能性は高まりますが、相手への応答も遅くなります。受信処理を含めて観察しないと、「パケットは届いているのに音が途切れる」状況を見落とします。

5. パケット化間隔を変えると何が変わるか

間隔を短くすると1パケットの音声量は減りますが、毎秒のパケット数とヘッダーの合計は増えます。長くするとその逆になり、1パケットを失ったときに欠ける音声時間も長くなります。音声をためる時間も変わるため、帯域だけで設定を決めないことが大切です。

例えば20 ms分をまとめたパケットが3個連続で失われれば、60 ms分の音声データが欠けます。これはデータ上の時間で、実際にどう聞こえるかは発話内容や補償処理によって変わります。

6. ログで確認する項目

  1. 使用コーデックとRTPクロックを特定する。
  2. シーケンス番号、タイムスタンプ、到着時刻を区別して見る。
  3. 送受信の方向別に欠落・並べ替え・再生の統計を確認する。
  4. 取得装置自身の取りこぼしがないか確かめる。

暗号化された音声では内容をそのまま聞けない場合があります。端末やサービスが提供する統計を組み合わせ、通信の観測結果と実際の聞こえ方を照合します。

参考規格・資料

CCアーキテクトでは、コンタクトセンターの音声品質評価や試験項目の整理についてご相談いただけます。音声品質・試験に関するお問い合わせ

コンタクトセンターの品質・負荷試験についてご相談ください Genesys Cloud / Amazon Connect / Cyara に対応
無料相談・お問い合わせ