Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

VoIP 向けのインターネット低ビットレート コーデック (iLBC)

この例では、インターネット低ビットレート コーデック (iLBC) を実装し、その使用方法を示します。iLBC は、VoIP (ボイス オーバー IP) を介した伝送向けに音声をエンコードおよびデコードするために設計されたものです。

VoIP

VoIP は、電話やテレビ会議などの音声アプリケーションで IP ネットワークを使用できるようにする一連のテクノロジーです。このようなアプリケーションの帯域幅要件を下げるために、通常は圧縮が必要とされます。効率を上げるために、軽量でありながらも信頼性の低いユーザー データグラム プロトコル (UDP) が VoIP の実現に使用されることが多いです。損失の多いネットワークを介して受信された音声の質を維持するために、パケット損失補正が必要です。

基本的な iLBC の設計と性能

iLBC は、インターネットを介して伝送される音声を圧縮するために設計されています。このため、iLBC のアルゴリズムは、90 ~ 4000 Hz という狭い周波数範囲のみをカバーするように意図されており、通常の音声に合わせて調整された知覚的エンコードを実現します。iLBC エンコーダーへの入力信号はすべて、-32768 ~ +32767 の 16 ビット サンプルで正確に 8000 Hz でサンプリングされたパルス符号変調 (PCM) 音声信号でなければなりません。

iLBC は、2 つの異なる伝送レート向けに定義されています。それは、30ms または 20ms のいずれかの長さの音声ごとにデータ パケットがエンコードされるというものです。30 ms ごとにエンコードする利点は、エンコードされたデータのレートが 13.33 kbit/sec と低いということです。これに比べ、20 ms ごとのエンコードの場合は 15.20 kbit/sec です。ただし、30ms ごとにエンコードすると、受信される音声の遅延が 50% 増えて、待機時間が長くなることがあります。

iLBC への入力はすべて、8000 Hz、16 ビットの PCM 音声でなければならず、入力レートは (8000 Hz) * (16 bits) = 128 kbit/sec です。このため、iLBC では、音声を元のデータ レートの 10.4% と 11.9% (それぞれ 13.33 kbit/sec モードと 15.20 kbit/sec モード) に圧縮します。

iLBC は、低いデータ伝送速度にエンコードすることに加え、パケット損失補正 (PLC) システムを容易に実現するためのフレームワークです。このコーデックはインターネットを介したリアルタイム音声向けのものですが、インターネットではリアルタイムでの情報ルーティングにランダムな遅延が生じやすいため、多くのパケットが iLBC デコーダーで処理できなくなります。PLC の役割は、パケットが失われる前またはその直後のパケットに基づいて、失われたパケットの音声を内挿することです。iLBC は特定の PLC アルゴリズムを定義しませんが、この例では説明のために簡単な PLC を実装します。

iLBC モデル例

以下に示すモデルでは、音声信号を読み取り、iLBC を通してから、既定のオーディオ デバイスを使用して出力を再生します。

モデルを開いて実行する。

iLBC モデル例の使用

このモデル例の最上位は、少数の単純なブロックで構成されています。基本的な操作は、音声信号を読み込んで iLBC エンコーダーに渡し、iLBC パケットのストリームに変換することです。次に、シミュレートされた損失の多いチャネルを介してパケットが送信されます。これにより、ランダムなパケットがすべてゼロに設定されます。最後に、パケットが iLBC Decoder ブロックに送信され、音声信号に再び変換された後、再生されます。また、元の音声信号を復号化された信号と比較するために、モデルの実行時に切り替えることができる手動スイッチもあります。

モデルの右上隅にある構成ブロックをダブルクリックすると、ダイアログが表示されます。そこで、2 つの iLBC モード (13.33 kbit/sec または 15.20 kbit/sec) のいずれかにデータ伝送速度を変更できます。デコーダーの伝送速度はエンコーダーと同じに設定しなければなりません。そうしないと、エラーが発生します。また、エンコーダーとデコーダーでのすべての内部計算で倍精度または単精度のどちらを使用するかを指定できます。

Lossy Channel サブシステムをダブルクリックすると、ダイアログが表示されます。そこで、失われたパケットの割合を設定できます。iLBC デコーダーのパケット損失隠蔽アルゴリズムは、0 ~ 10% のパケット損失を補正するように調整されています。10% を上回るパケット損失率は、すぐにわかります。

iLBC エンコーダーとデコーダーのブロックは、このモデルでサブシステムとして実現されます。再利用のレベルに対応するために、これらのブロックではサンプル ライブラリも使用します。サンプル ライブラリは dspilbclib にあります。このライブラリには、エンコーダーとデコーダーで使用される 4 つのヘルパー ブロックが含まれています。自由にライブラリを開いて、各ブロックを調べ、Simulink® で iLBC がどのように実装されているかを確認してください。

Switch ブロックをダブルクリックすると、オーディオ再生元の音声信号とデコードされた iLBC 信号が切り替わります。Time Scope ブロックは、元の音声とデコードされた iLBC 音声の両方をプロットします。デコードされた音声が元の音声とどれだけ一致しているかを観察します。

参考

| |

関連するトピック