Internet Low Bitrate Codec あるいは iLBC は、ロイヤリティフリーのナローバンド音声符号化方式で、米国の Global IP Solutions 社(旧 Global IP Sound 社)が VoIP などのために開発した。 他の方式と比べパケットロスの多いIPネットワークでも音質の低下が少ない特徴がある。
iLBC は、Gizmo5、Ekiga、QuteCom、Google トーク、Yahoo! Messengerなどでの音声コーデックの1つとして使われている。
概要
iLBC はIPネットワークのようなパケットロスやパケット遅延の多い環境のために開発された音声符号化方式である。ITU-T G.729など一般的な低ビットレートの音声コーデックは音声信号を 20 ms 程度のフレームに分割して処理を行い、適応型コードブックのような複数フレームにまたがる情報を用いて符号化/復号を行う。この方法は圧縮効率がいいが、パケットロスなどにより途中のフレームの情報が失われた場合、その後の多くフレームに影響が及び音質が劣化する。
iLBC ではフレームごとに独立して符号化/復号を行うことで、パケットロスやパケット遅延の影響を最低限に抑え、他の方式より性能低下が穏やかになるようにしたものである。
iLBC の特徴は以下の通りである
[1]
[2]。
iLBC の符号化データを Real-time Transport Protocol(RTP)を用いインターネット上で送るためのデータ形式は、IETF標準の RFC 3952 で定義されている
[3]。
アルゴリズム
iLBC の符号化アルゴリズムはIETF標準の RFC 3951 で定義されている[1]。
符号化アルゴリズムは、大まかには、線形予測符号化(LPC)と、線形予測の残差信号のフレーム単位コード化とを組み合わせたものである。残差信号の符号化には CELP のような適応型コードブックが使用される。
20 ms/30 msのフレームは 5 ms(40サンプル)のサブフレームに分割されて処理される。
線形予測の残差信号は、その中で最もエネルギーの大きい連続する2つのサブフレームの先頭あるいは最後の複数ビットが「開始ステート」(start state)として最初にコードブックに登録され、そこから後ろ向きあるいは前向きに順次コードブックを用いた符号化が行われる。
最もエネルギーの大きいサブフレームは有声音の開始部分やピッチ周期の繰り返し波形の先頭部分である可能性が高いため
[4]、音声波形の周期性を生かした効率の良い符号化が行える。
また、開始ステートから後ろ向きあるいは前向きに処理する方法により、前のフレームの適応型コードブックを使用することなく現在のフレームのみでコードブックの構築ができる[4]。
符号化は以下のように行われる[1]。
- 音声のハイパスフィルタによる前処理(必要な場合)
- 線形予測パラメータの計算、量子化、補間
- 音声を分析フィルタに通し残差信号を計算
- 線形予測係数から生成した分析フィルタに音声信号を入力し、線形予測の残差信号を計算
- 開始ステートを選択(20 msフレームでは57サンプル、30 msフレームでは58サンプル)
- 最もエネルギーの大きい連続する2つのサブフレームの先頭あるいは最後を開始ステートとして選択
- 開始ステートをスカラー量子化
- 各サブフレームごとにコードブックを検索
- 開始ステートを含む2サブブロックの残り部分を符号化
- その後、時間で前向き方向のサブブロックを符号化
- その後、時間で後ろ向き方向のサブブロックを符号化
- 得られたビット列をパケット化
復号はこれとは逆に、パケットの情報を使って開始ステートのビット列から順番に線形予測の残差信号を計算し、それを線形予測フィルタの入力とすることで最終的な音声信号を生成する。
復号は以下のように行われる[1]。
- ビット列からパラメータを抽出
- 線形予測パラメータのデコードと補間
- 開始ステートを構築(20 msフレームでは57サンプル、30 msフレームでは58サンプル)
- 差分PCM で量子化された開始ステートを元のサンプル値に復元
- 開始ステートから順に残差信号を復号
- 後置フィルタを用い残差信号を強調
- 音声信号の生成
- ハイパスフィルタによる後処理(必要な場合)
脚注
参考文献
関連項目
外部リンク