技術
SIPオーディオコーデックの解説
VoIPで使用されるオーディオコーデック、通話品質や帯域幅への影響、および最適な結果を得るためのSipLineでの設定方法について解説します。
読了時間 10 分
1
コーデックとは?
コーデック(codec: coder-decoder)は、ネットワーク経由で音声を送信するために、オーディオを圧縮および展開する仕組みです。VoIPにおいて、コーデックは音声品質、帯域幅の使用量、および処理能力のトレードオフを決定します。SIP通話を行う際、両端のデバイスは、SIPシグナリングのSDP(Session Description Protocol)部分で定義されたプロセスを通じて、使用するコーデックを交渉します。
「コーデック(codec)」という言葉は、coder(符号化)とdecoder(復号)に由来します。各コーデックは、音声をデジタル化して圧縮するために異なるアルゴリズムを使用します。
2
G.711 — 世界標準規格
G.711は、電話通信で最も広くサポートされているコーデックです。これには2つのバリアントがあります。主にヨーロッパで使用される
PCMA(G.711a、A-law)と、北米や日本で使用されるPCMU(G.711u、mu-law)です。G.711は双方向で各64 kbpsを使用し、高品質な音声(サンプリングレート8 kHz、ナローバンド)を提供します。IPオーバーヘッドを含めると、G.711通話は片方向あたり約87 kbpsを消費します。迷った場合は、
G.711a (PCMA)を使用してください。世界中のほぼすべてのVoIPプロバイダーやSIPデバイスでサポートされています。相互運用性において最も安全な選択肢です。3
Opus — モダンな選択肢
Opusは、インターネットオーディオ用に設計されたモダンなオープンソースのコーデックです。アダプティブ(適応型)であり、ネットワーク状況に基づいてビットレートを6 kbpsから510 kbpsの間で動的に調整します。Opusはワイドバンドおよびスーパーワイドバンドオーディオ(最大48 kHz)をサポートしており、G.711よりも大幅に豊かな音質を提供します。また、組み込みの前方誤り訂正(FEC)により、パケットロスをスムーズに処理します。
Opusは、2人のSipLineユーザー間の通話や、それをサポートするプロバイダーとの通話に最適です。G.711のわずかな帯域幅で、HDに近い音声品質を実現します。
4
適切なコーデックの選択
選択はユースケースによって異なります。あらゆるプロバイダーとの最大限の互換性を求めるなら、G.711aを使用してください。良好な接続環境で最高の音声品質を求めるなら、Opusを使用してください。モバイルホットスポットなどの低帯域幅のシナリオでは、低ビットレートのOpusが最適なオプションです。SipLineでは複数のコーデックを有効にして、SDP交渉によって最適なものを自動的に選択させることができます。
SipLineでは、コーデックをドラッグして優先順位を並べ替えることができます。リストの最初にあるコーデックが、交渉時に最初に提案されます。優先するコーデックを一番上に配置してください。
5
SIPにおけるコーデック交渉(SDP)
SIP通話が開始されると、発信者はサポートされているコーデックのリスト(ペイロードタイプ番号で識別)を含むSDPボディを保持したINVITEメッセージを送信します。着信側は独自のSDPで応答し、一致する1つ以上のコーデックを選択します。共通のコーデックが見つからない場合、通話は
488 Not Acceptable Hereエラーで失敗します。この交渉は自動的に行われるため、互換性のあるコーデックが有効になっていることを確認するだけで済みます。音声が聞こえずすぐに通話が切れる場合は、プロバイダーがサポートしているコーデックがSipLineで少なくとも1つ有効になっているか確認してください。コーデックの不一致は、通話失敗の一般的な原因です。
6
SipLineでのコーデック設定
設定 > SIPアカウント > [あなたのアカウント] > コーデックに移動します。利用可能なコーデックのリストが表示され、チェックボックスで有効・無効を切り替えることができます。コーデックをドラッグして優先順位を設定してください。ほとんどのユーザーにとって推奨される設定は、1番目に
G.711a (PCMA)、2番目にG.711u (PCMU)、3番目にOpusです。これにより、Opusが利用可能な場合はその利点を活かしつつ、最大限の互換性を確保できます。絶対に使用しないコーデックは無効にしてください。SDPオファーに含まれるコーデックが少ないほど、通話のセットアップが速くなり、交渉の問題が発生する可能性が低くなります。
よくある質問
G.711とOpus、どちらを使用すべきですか?
G.711は安全な選択肢です。世界中でサポートされており、品質が予測可能で、ライセンスの問題もありません。Opusは音声品質と帯域効率において優れていますが、すべてのプロバイダーがまだサポートしているわけではありません。従来の電話回線(PSTN)への通話には、ほとんどの場合G.711が使用されます。ソフトフォン間やモダンなVoIPプラットフォーム間の通話では、Opusの方が明らかに優れた品質を提供します。
各コーデックはどの程度の帯域幅を使用しますか?
IP/UDP/RTPオーバーヘッドを含めると、
G.711は片方向あたり約87 kbpsを使用します。OpusはデフォルトのVoIP設定で片方向あたり約30–40 kbpsを使用しますが、設定により10 kbpsまで下げたり、128 kbpsまで上げたりすることが可能です。Opusコーデックは利用可能な帯域幅にリアルタイムで適応するため、非常に効率的です。複数のコーデックを同時に使用できますか?
複数のコーデックを有効にすることはできますが、1回の通話で使用されるのは1つだけです。SDP交渉中に、双方が単一のコーデックに合意します。複数のコーデックを有効にしておくと、相手側との一致が見つかる可能性が高まります。SipLineは、設定された優先順位に従ってコーデックを試行します。
G.729についてはどうですか?
G.729は、歴史的に帯域幅を節約するために人気があった低帯域幅コーデック(8 kbps)です。しかし、以前は特許の問題があり(特許は2017年に失効)、多くの最新システムは、同様またはそれ以下のビットレートでより良い品質を提供するOpusに移行しています。SipLineは後方互換性のためにG.729をサポートしていますが、低帯域幅が必要な新しい導入環境にはOpusを推奨します。
通話が488エラーで失敗するのはなぜですか?
488 Not Acceptable Hereという応答は、相手側があなたのSipLine設定と共通のコーデックを見つけられなかったことを意味します。最も普遍的にサポートされているコーデックであるG.711a (PCMA)を有効にしてください。Opusのみを有効にしていて、プロバイダーがそれをサポートしていない場合、通話はこのエラーで失敗します。コーデックは遅延(レイテンシ)に影響しますか?
はい、わずかに影響します。G.711は最小限の圧縮しか行わないため、処理遅延が非常に短いです。Opusは小さなエンコード遅延(通常20–40 ms)を導入しますが、優れたパケットロス耐性でそれを補います。実際には、コーデックによる全体の遅延への寄与は、ネットワーク遅延に比べればわずかです。G.711とOpusはどちらも、リアルタイムの会話において許容範囲内に十分に収まっています。