1. iLBCオーディオフォーマットとは?
Internet Low Bitrate Codec は、もともとスウェーデンの音響工学会社 Global IP Solutions (GIPS) によって作成され、2010年に Google に買収されました。インターネットエンジニアリングタスクフォースによって RFC 3951 として定義され、RTP ペイロードのカプセル化は RFC 3952 に記載されており、iLBC は不安定な IP リンク上での堅牢な音声伝送のために特別に設計されています。
現代のウェブブラウザはリアルタイム通信に Opus コーデックを頻繁に使用しますが、iLBC は企業向け電話システム、SIP クライアント、WebRTC の下位互換プロファイル、そして Cisco、Polycom、Asterisk PBX システムが製造するレガシー VoIP 機器に組み込まれた、重要なロイヤリティフリー標準として依然として残っています。
2. iLBCの主な特徴
| パラメータ | 仕様 |
|---|---|
| 標準化 | IETF RFC 3951(コーデック)、RFC 3952(RTP ペイロード) |
| 一般的なファイル拡張子 | .ilbc, .lbc |
| MIME メディアタイプ | audio/iLBC |
| サンプリング周波数 | $8\text{ kHz}$ (ナローバンド) |
| 量子化解像度 | 16ビット リニア PCM |
| オーディオチャンネル | モノ (単一チャンネル音声) |
| サポートされているフレーム長 | $20\text{ ms}$ モードおよび $30\text{ ms}$ モード |
| 動作ビットレート | $15.20\text{ kbit/s}$ ($20\text{ ms}$) / $13.33\text{ kbit/s}$ ($30\text{ ms}$) |
| ブロックあたりのペイロードビット | $304\text{ bits}$ ($20\text{ ms}$) / $400\text{ bits}$ ($30\text{ ms}$) |
| マジックヘッダー識別子 | #!iLBC20\n ($20\text{ ms}$) または #!iLBC30\n ($30\text{ ms}$) |
| ライセンス | ロイヤリティフリー (WebRTC 経由の 3 条項 BSD オープンソース) |
3. 詳細な機能とアーキテクチャ設計
独立フレームエンコーディング(エラー伝搬ゼロ)
G.729 や CELP 系列コーデックなどの従来の音声圧縮フォーマットは インターフレーム予測 を利用し、各音声フレームは前フレームの状態情報やピッチ予測ベクトルに依存します。混雑したネットワークでパケットが失われると、その欠落した状態が前方に伝搬し、数百ミリ秒にわたって下流の音声が乱れます。
iLBC はこの依存性を排除します。 iLBC の各音声フレームは独立してエンコードされます。 パケット $N$ が転送中に失われても、パケット $N+1$ は完全な音響忠実度でデコードされます。
デュアル動作モード($20\text{ ms}$ 対 $30\text{ ms}$)
通信エンジニアに柔軟なレイテンシ管理を提供するため、iLBCは2つの必須動作モードを定義しています:
- $20\text{ ms}$ フレームモード ($15.20\text{ kbit/s}$):
- 1フレームあたり160サンプルの音声を38バイト($304\text{ bits}$)にエンコードします。
- アルゴリズム的バッファリング遅延が低く、インタラクティブ通信に適しています。
- $30\text{ ms}$ フレームモード ($13.33\text{ kbit/s}$):
- 1フレームあたり240サンプルの音声を50バイト($400\text{ bits}$)にエンコードします。
- ビット消費を約 $12%$ 削減し、長距離接続におけるネットワークペイロード効率を最適化します。
高度なパケット損失隠蔽 (PLC)
パケットがドロップした場合、iLBCは状態変数LPC(線形予測符号化)合成フィルタを使用し、隣接フレームの境界状態を用いて欠損したピッチサイクル表現を再構築します。クリック音やデジタルポップ、過度なミュートを生成するのではなく、ドロップした音声パケットは自然に劣化します。
音質とビットレートプロファイル
理想的なネットワーク条件(パケットロス0%)では、iLBCは平均意見スコア(MOS)約 4.14(5.0満点)を達成します。非圧縮のG.711 PCM($\mu$-lawで $\sim 4.3$)よりやや低いものの、iLBCはパケットロス率が $5%\text{ to }10%$ と高くても音声の明瞭さを保ちます。この範囲では G.729 や G.711 の可聴性が大幅に低下します。
4. .ilbc オーディオファイルの開き方と再生方法
.ilbc は汎用のコンシューマメディアコンテナ(MP3 や WAV など)ではなく、専門的な生テレフォニー・ストリーム形式であるため、主流のコンシューマプレーヤーは専用のコーデックパックがない限り常に検出できるわけではありません。
方法 1: Audacity を使用する(生データのインポート)
Audacity は生 PCM ダンプまたはデコードされた iLBC 音声ファイルをインポートできます:
- Audacity を起動します。
- File > Import > Raw Data… に移動します。
- ファイルを選択し、エンコーディングを Signed 16-bit PCM、バイトオーダーを Little-endian、1 Channel (Mono)、サンプルレートを 8000 Hz に設定します。
方法 2: FFplay を使用したコマンドライン再生
FFmpeg のビルドが libilbc 拡張でコンパイルされている場合:
ffplay -f ilbc sample.ilbc
方法 3: 専用 VoIP アナライザー
Wireshark などのネットワーク診断ツールは、キャプチャされた SIP/RTP パケットセッションから .ilbc 音声ペイロードを直接抽出・再構築し、内蔵の RTP Player ユーティリティで再生できます。
5. .ilbc オーディオファイルの作成と変換方法
.ilbc オーディオを扱うには、16 ビット、単一チャンネル、$8000\text{ Hz}$ 入力オーディオが必要です。
FFmpeg を使用した iLBC エンコード
既存の .wav または .mp3 オーディオサンプルを .ilbc ビットストリームに変換するには:
ffmpeg -i input_speech.wav \
-ar 8000 \
-ac 1 \
-c:a libilbc \
output_audio.ilbc
-ar 8000: 必要な 8 kHz のレートにオーディオをリサンプリングします。-ac 1: マルチチャンネルオーディオをモノラルにダウンミックスします。-c:a libilbc:libilbc参照エンコーダーを使用します。
フレームモードの指定 ($20\text{ ms}$ または $30\text{ ms}$)
-mode フラグを使用してフレームモードを選択できます:
# Encode using 30ms mode (13.33 kbit/s)
ffmpeg -i input_speech.wav -ar 8000 -ac 1 -c:a libilbc -mode 30 output_30ms.ilbc
# Encode using 20ms mode (15.20 kbit/s)
ffmpeg -i input_speech.wav -ar 8000 -ac 1 -c:a libilbc -mode 20 output_20ms.ilbc
.ilbc ファイルを標準 WAV にデコードする
.ilbc ファイルをどこでも再生可能な非圧縮 WAV ファイルに変換するには:
ffmpeg -f ilbc -i voice_message.ilbc converted_audio.wav
6. よくある質問 (FAQ)
Q1: iLBC オーディオフォーマットが作成された主な問題は何ですか?
iLBC 形式は、各オーディオフレームを独立させることで、IP ネットワーク上での音声の可聴性を保つよう設計されており、パケットロスエラーが後続の音声フレームに連鎖するのを防ぎます。
Q2: .ilbc ファイルの2つの動作ビットレートは何ですか?
.ilbc ストリームは、$30\text{ ms}$ フレームを使用する場合は $13.33\text{ kbit/s}$、$20\text{ ms}$ フレームに設定する場合は $15.20\text{ kbit/s}$ のいずれかで動作します。
Q3: iLBC フォーマットは高音質音楽のストリーミングに使用できますか?
いいえ、iLBC は狭帯域音声コーデックで、サンプリングレートは $8\text{ kHz}$ に厳密に限定され、人間の音声が $90\text{ Hz}$ から $4000\text{ Hz}$ の範囲に最適化されています。
Q4: iLBC オーディオコーデックはロイヤリティフリーですか?
はい、iLBC は IETF RFC 3951 に完全に標準化されており、WebRTC プロジェクトを通じてオープンソースのロイヤリティフリーな 3 条項 BSD ライセンスで提供されています。
Q5: iLBC は最新の Opus コーデックと比較してどうですか?
iLBC は初期のブロードバンドネットワークにおいて狭帯域 VoIP 用のパケットロス隠蔽を提供しましたが、最新の Opus コーデックは動的ビットレート、フルバンド($48\text{ kHz}$)オーディオ、そして低いアルゴリズム遅延をサポートしています。
7. 公式仕様と参考文献
- IETF RFC 3951 仕様: インターネット低ビットレートコーデック (iLBC) 音声およびオーディオ標準
- IETF RFC 3952 ペイロード形式: iLBC 用リアルタイムトランスポートプロトコル (RTP) ペイロード形式
- WebRTC オープンソースプロジェクト: WebRTC コーデックライセンスと iLBC 実装
- FFmpeg コーデック ドキュメント: FFmpeg libilbc 統合ガイドライン