VoIPに使われる音声コーデックはいろいろある。
尚、コーディックという言い方がされることがあるが、これはデスクトップをディスクトップと言うのに似ている気がする。
説明を読むのが面倒な人へ
有線,(安定した)Wi-Fi経由でサーバーと繋げられるならG.711
それ以外はiLBC>Speex>GSM
音質
G711>iLBC≒Speex Narrow>GSM
パケット破損・損失耐性
iLBC>Speex>GSM>G.711
演算量(低いほうが良い,良いほうが左)
G.711<<GSM<Speex≒iLBC
G.711
通信量:84kb/s
IAXでは:80kb/s
G.711は固定電話に使われているコーデックである。
G.711には、μ-lawとA-lawの2種類がある。(μは特殊な記号なので、u-lawと書かれることもある。)
日本・北米がu-lawでヨーロッパがA-lawである。国際電話時に、違う形式が使われている場合はA-lawが使われる。
どうせA-lawに合わせる必要があるなら統一しろよ
GSM
通信量:33kb/s
IAXでは:30kb/s
GSMは携帯電話で使われるコーデックである。(日本の携帯だとAMRだけど)
GSMは元々特許があって面倒だったが、今は特許が切れたのでVoIPではほとんどの事業者は対応しているはず。
(本当はGSMってのは携帯電話での通信規格であって音声の規格の名前ではないんだけどね。別名2Gってやつ。海外だと未だに主流。だから本当は音声に限って言えばGMSK。ただ、GSMで使われている音声規格ではあるからそこまでの誤用ではないのかも?)
GSMには3種類あり、GSM-FR,GSM-HR,GSM-EFRがある。
FRはフルレート、HRはハーフレート、EFRはエンハンスドフルレートの略である。
VoIPでは通常GSM-FRが使われる。
GSM-EFRは、Wikipedia曰く、「典型的な通信エラーの条件や背景雑音のある環境でも有線の電話回線と同じ音質を維持できる」
「符号化に必要な演算量はハーフレートコーデックの GSM-HR より低い。」
何故EFRが使われないのか。
Speex
通信量:可変
VoIP向けに開発された、オープンソースのコーデックである。
固定ビットレート、可変ビットレートが選べる。自分は音声部分11kbpsで使っている。
GSM-FRよりも音質が良い。
パケットロスへの耐性があるが、主観としては、iLBCのほうがパケットロスに強い気がする。
音楽には向かない。
iLBC
通信量:27kb/s
IAXでは:25kb/s
(どちらもiLBC30)
iLBCは、パケットごとに完全に独立して音声が入っているためにパケットロス・破損への耐性が高いコーデックである。
Speexと同じくらいの音質。(私の主観)
ただし、FreePBX(Asterisk)でこのコーデックを使うとエラーが発生する。iLBCは30msごとにパケットを送るが、外線(トランク)は20ms単位でパケットを送るかららしい。
音楽には向かない。
G729
特許とかいろいろあって面倒なコーデック。
なーに、iLBCやSpeexが使えればこんなもんいらんわい。
Opus
Speexと同じ開発元が作ったコーデック。こちらのほうが新しい。低遅延。 音楽に使える超高音質から音声に特化した音質まで幅広く使える。 しかし、新しい故に対応している事業者は2016/11/28現在、いないようだ。
また、他のコーデックよりもCPUへの負荷が大きく、特にトランスコード時の負荷は大きかった。
ただし、音楽を聞くこともできるほどの音質なので、潤沢なリソースがあるならばこれ一択だろう。
PR
COMMENT