コーデック
VoIPはコーデックによって音質が変わる。高音質のコーデックを使えば、電話の音声もそのまま高音質となる。ただし、総じて高音質コーデックは広帯域であり、モバイル回線とは相性が悪い。
そこでモバイル回線の帯域幅に応じて、VoIPに特化した音声コーデックを使うこととなる。
ここではつなぐに必要なことのみ記載するので、詳細は個別のWikiを見て頂きたい。
標準的な音声コーデック
G.711(u-Law)
標本化周波数 - 8kHz
ビットレート - 64kbps(標本化周波数8kHz × 8ビット符号)
アルゴリズムによる遅延は通常0.125ms。先読み遅延はない。
ネットワーク負荷条件下でのPSQMの平均オピニオン評点は4.13である。
G.722
サンプリング周波数が 16kHz となっており、VoLTEと同程度の音質。低帯域のネットワークへの負荷はG.711と変わらない。しかし、Wi-Fi接続時などは自動的に多くの帯域を使いかなりの高音質となる。
G.726
サンプリング周波数: 8 kHz
ビットレート: 16kbit/s、24kbit/s、32kbit/s、40kbit/s
フレーム長はパケット化の際に決定(10ms で 80 サンプルが典型的なフレーム長)
アルゴリズムによる遅延は 0.125ms(先読み遅延を含まない)
ネットワーク負荷条件下でのPSQMの平均オピニオン評点は 3.79(G.726、32kbit/s)
G.729
G.729aの拡張前の前身。IP電話ではG.729aが脚光を浴びているが、実は素のG.729の方が高音質である。ただし、使用帯域はG.729aには劣る。
Acrobits製のSIPクライアントやCSipSimpleではG.729aコーデックが使われるが、Zoiperでは無垢のG.729が使われるため、前者に比べ高音質になる。
G.729a
サンプリング周波数: 8 kHz/16-bit(10ミリ秒のフレームで80サンプル)
固定ビットレート(8 kbit/s、10ミリ秒フレーム)
固定フレーム長(10ミリ秒フレームの場合10バイト)
アルゴリズムによる遅延は15ミリ秒(先読み遅延5ミリ秒を含む)
ネットワーク負荷条件下でのPSQMの平均オピニオン評点は3.51
GSM
入出力のサンプリング周波数は 8 kHz/ 13 bit
ビットレートは 13.0kbps(33バイト/20 ms に丸められた場合 13.2kbps)
RPE-LTP アルゴリズムを使用
20 msのフレーム長
符号化遅延は 20 ms
GSM で利用された最初の音声符号化方式
iLBC
サンプリング周波数 8 kHz/16 bit
2種類のフレーム長をサポート(20 ms、30 ms)
固定ビットレート (20 msフレームでは 15.2 kbps、30 msフレームでは13.33 kbps)
固定ブロックサイズ(20 msフレームでは 304ビット/ブロック、30 msフレームでは 400ビット/ブロック)
パケットロスやパケット遅延による性能低下が穏やか。パケット損失補償付きのITU-T G.711 (64kbps)のような PCM と同程度のロバスト性
ITU-T G.729a (8kbps)と同程度のCPU負荷で、基本音質は同じか高く、パケットロス時の音質低下が少ない
Speex
オープン標準であり、特許/ロイヤルティーフリーである。
狭帯域と広帯域を同じビットストリームに統合。
広範囲なビットレート(2 kbit/s から 44 kbit/s)
動的ビットレート切り替えと可変ビットレート (VBR)
発話区間検出(VAD、VBRと統合)
圧縮率が可変
32 kHz での超広帯域モード(最大 48 kHz)
インテンシティステレオ符号化オプション(左右の音量差のみでステレオにする方式)
狭帯域(8 kHz)での遅延は 30ms
Opus
高音質・低遅延・低帯域と三拍子そろった音声コーデック。
「ちゃんと使えれば」間違いなく最強といえるほどのものである。「ちゃんと使う」ポイントは以下のとおり。
- AsteriskにOpus対応パッチを当てる必要がある
- ケータイがOpusに対応できるほどに高音質化されていないと意味が無い(VoLTE対応)
- VoLTE対応のchan_dongleが存在しない
- chan_mobileでOpusを使ってもHFP1.5では頭打ちしてしまう
- chan_mobileによるHFP1.6(HDVoice)の実績がない
- 内線通話においては他コーデックでも十分すぎる音質となる
- IAX2でOpusに対応しているスマホ用のクライアントがない