語音編碼格式完整比較
語音編碼器(Codec, Coder-Decoder)把類比語音變成數位資料。不同 Codec 就是在位元率、延遲、音質、運算量這幾件事之間做取捨——選哪個,直接關係到通話品質和頻寬成本。
G.711:基準參考
概述
G.711 是 ITU-T 定義的最基礎語音編碼標準,也是 PSTN 的原生編碼格式。它採用 PCM(Pulse Code Modulation)技術,以 8 kHz 取樣率、8 bits 量化產生 64 kbps 的位元流。
兩種壓縮律
| 特性 | A-law(PCMA) | u-law(PCMU) |
|---|---|---|
| RTP Payload Type | 8 | 0 |
| 使用地區 | 歐洲、亞洲(含台灣) | 北美、日本 |
| 動態範圍 | 較大(13 段線性近似) | 較小(15 段線性近似) |
| 小訊號品質 | 略優 | 略劣 |
| 量化位元 | 8 bits(13 bit 線性映射) | 8 bits(14 bit 線性映射) |
G.711 頻寬需求雖然最高,卻一直沒退場,原因很實際:它幾乎沒有演算法延遲(只有取樣延遲),音質接近原始語音,又不用付授權費。區域網路頻寬夠的話它仍是首選,跟 PSTN 互通時也免轉碼,延遲和複雜度都少一截。
技術參數
| 參數 | 數值 |
|---|---|
| 位元率 | 64 kbps |
| 取樣率 | 8000 Hz |
| 頻率範圍 | 300-3400 Hz |
| 演算法延遲 | 0.125 ms(1 個取樣) |
| 框架大小 | 無固定框架(通常 20ms 打包) |
| MOS 分數 | 4.1-4.3 |
| 運算複雜度 | 極低 |
G.723.1:極低位元率
概述
G.723.1 是為低頻寬場景設計的編碼器,提供兩種位元率模式。它是 H.323 多媒體會議系統的強制 Codec 之一。
技術參數
| 參數 | 高位元率模式 | 低位元率模式 |
|---|---|---|
| 位元率 | 6.3 kbps | 5.3 kbps |
| 演算法 | MP-MLQ | ACELP |
| 框架大小 | 30 ms | 30 ms |
| Look-ahead | 7.5 ms | 7.5 ms |
| 演算法延遲 | 37.5 ms | 37.5 ms |
| MOS 分數 | 3.9 | 3.7 |
G.723.1 有幾個明顯的短處:框架是 30ms(不是常見的 20ms),基礎延遲就偏高,再加上 look-ahead,單次編碼延遲達 37.5ms;加上它有專利授權費,現代 VoIP 系統已經很少用它了。
G.729:低頻寬主流
概述
G.729 是企業 VoIP 中最常用的低頻寬 Codec,以 8 kbps 提供接近 G.711 的語音品質。它使用 CS-ACELP(Conjugate-Structure Algebraic-Code-Excited Linear Prediction)演算法。
變體
| 變體 | 位元率 | 說明 |
|---|---|---|
| G.729 | 8 kbps | 完整版 |
| G.729A(Annex A) | 8 kbps | 降低複雜度版,品質略降 |
| G.729B(Annex B) | VAD/CNG | 靜音偵測 + 舒適噪音 |
| G.729AB | 8 kbps + VAD | A + B 功能組合 |
技術參數
| 參數 | 數值 |
|---|---|
| 位元率 | 8 kbps |
| 取樣率 | 8000 Hz |
| 頻率範圍 | 300-3400 Hz |
| 框架大小 | 10 ms |
| Look-ahead | 5 ms |
| 演算法延遲 | 15 ms |
| MOS 分數 | 3.9-4.0 |
| 運算複雜度 | 中等(約 20 MIPS) |
授權方面,G.729 的核心專利從 2017 年起陸續過期,現在多數實作都不用再付授權費了;不過部分硬體設備的 G.729 通道還是以授權方式賣,買之前確認一下。
G.722:寬頻語音(HD Voice)
概述
G.722 是第一個被廣泛部署的寬頻語音 Codec,取樣率從 8 kHz 提升到 16 kHz,頻率範圍擴展到 7 kHz,提供明顯優於窄頻 Codec 的語音清晰度。
技術參數
| 參數 | 數值 |
|---|---|
| 取樣率 | 16000 Hz |
| 頻率範圍 | 50-7000 Hz |
| 演算法 | Sub-band ADPCM |
| 框架大小 | 無固定(通常 20ms) |
| 演算法延遲 | 1.5 ms |
| MOS 分數 | 4.5+ |
| 運算複雜度 | 低 |
三種模式
| 模式 | 位元率 | 語音子帶 | 輔助資料子帶 |
|---|---|---|---|
| Mode 1 | 64 kbps | 48 kbps | 16 kbps |
| Mode 2 | 56 kbps | 48 kbps | 8 kbps |
| Mode 3 | 48 kbps | 48 kbps | 0 kbps |
G.722 在 SDP 裡有個有名的坑:它的 RTP Payload Type 是 9,但因為歷史因素,SDP 中 G.722 的時脈率被標成 8000 Hz(RFC 3551 這麼規定),實際取樣率卻是 16000 Hz。這就是所謂的「G.722 時脈率錯誤」,而所有實作至今都照著這個「將錯就錯」的慣例走。
Opus:新世代全能 Codec
概述
Opus 是由 IETF 標準化(RFC 6716)的現代音訊 Codec,結合了 SILK(語音)和 CELT(音樂)兩種演算法,支援極寬的位元率範圍和多種應用場景。它是 WebRTC 的強制 Codec。
技術參數
| 參數 | 數值 |
|---|---|
| 位元率 | 6-510 kbps(可動態調整) |
| 取樣率 | 8/12/16/24/48 kHz |
| 頻率範圍 | 最高 20 kHz(全頻帶) |
| 框架大小 | 2.5/5/10/20/40/60 ms |
| 演算法延遲 | 5-66.5 ms(依配置) |
| 通道數 | 單聲道 / 立體聲 / 多通道 |
| 授權 | 免授權費(BSD License) |
| MOS 分數 | 4.5+(依位元率) |
Opus 模式
| 模式 | 適用場景 | 特點 |
|---|---|---|
| SILK 模式 | 語音通話(位元率 < 12 kbps) | 語音優化,低延遲 |
| CELT 模式 | 音樂、高品質音訊(位元率 > 40 kbps) | 全頻帶,低延遲 |
| 混合模式 | 中等位元率(12-40 kbps) | 結合兩者優點 |
Opus 的優勢
- 動態位元率調整:根據網路狀況即時調整,無需重新協商
- 前向錯誤更正(FEC):內建冗餘資料,抵抗丟包
- 不連續傳輸(DTX):靜默期間不發送封包,節省頻寬
- 無授權費:完全免費使用
AMR/AMR-WB
AMR(Adaptive Multi-Rate)
AMR 是 3GPP 行動通訊的標準語音 Codec:
| 模式 | 位元率 |
|---|---|
| AMR 12.2 | 12.2 kbps |
| AMR 10.2 | 10.2 kbps |
| AMR 7.95 | 7.95 kbps |
| AMR 7.4 | 7.4 kbps |
| AMR 6.7 | 6.7 kbps |
| AMR 5.9 | 5.9 kbps |
| AMR 5.15 | 5.15 kbps |
| AMR 4.75 | 4.75 kbps |
AMR-WB(Wideband)
AMR-WB(也稱 G.722.2)是行動通訊的寬頻語音標準,VoLTE HD Voice 使用此 Codec:
| 參數 | 數值 |
|---|---|
| 位元率 | 6.6-23.85 kbps(9 種模式) |
| 取樣率 | 16000 Hz |
| 頻率範圍 | 50-7000 Hz |
| 框架大小 | 20 ms |
完整對照表
| Codec | 位元率 (kbps) | 取樣率 (Hz) | 頻率範圍 (Hz) | 演算法延遲 (ms) | MOS | 封包頻寬* (kbps) | 授權費 |
|---|---|---|---|---|---|---|---|
| G.711 u-law | 64 | 8000 | 300-3400 | 0.125 | 4.1 | 87.2 | 免費 |
| G.711 A-law | 64 | 8000 | 300-3400 | 0.125 | 4.1 | 87.2 | 免費 |
| G.723.1 | 5.3/6.3 | 8000 | 300-3400 | 37.5 | 3.7/3.9 | 20.8/21.9 | 有(已過期) |
| G.729 | 8 | 8000 | 300-3400 | 15 | 3.9 | 31.2 | 有(已過期) |
| G.722 | 48/56/64 | 16000 | 50-7000 | 1.5 | 4.5 | 87.2 | 免費 |
| Opus | 6-510 | 8k-48k | 最高 20000 | 5-66.5 | 4.5+ | 依設定 | 免費 |
| AMR | 4.75-12.2 | 8000 | 300-3400 | 25 | 3.5-4.0 | 依模式 | 有 |
| AMR-WB | 6.6-23.85 | 16000 | 50-7000 | 25 | 4.0-4.5 | 依模式 | 有 |
*封包頻寬以 20ms 封包間隔 + IP/UDP/RTP 標頭計算(G.723.1 為 30ms)
頻寬需求詳細計算
以 20ms 封包間隔、Ethernet 傳輸為基準:
| 項目 | G.711 | G.729 | G.722 | Opus (16kbps) |
|---|---|---|---|---|
| 語音負載 | 160 B | 20 B | 160 B | 40 B |
| RTP Header | 12 B | 12 B | 12 B | 12 B |
| UDP Header | 8 B | 8 B | 8 B | 8 B |
| IP Header | 20 B | 20 B | 20 B | 20 B |
| Ethernet | 18 B | 18 B | 18 B | 18 B |
| 每封包大小 | 218 B | 78 B | 218 B | 98 B |
| 每秒封包數 | 50 | 50 | 50 | 50 |
| 單通話頻寬 | 87.2 kbps | 31.2 kbps | 87.2 kbps | 39.2 kbps |
一個好記的經驗法則:規劃頻寬時,在算出來的值上再多留 20-30% 餘裕,用來吸收 RTCP、信令和網路波動。以 G.711 為例,100 通並發大約要 11 Mbps(含餘裕)。
場景選擇建議
企業內部通話(LAN)
建議 Codec:G.722 或 G.711
理由:區域網路頻寬充裕,應優先選擇音質最佳的 Codec。G.722 提供 HD Voice 體驗,G.711 則具有最低延遲且無需轉碼。
遠端辦公 / WAN 通話
建議 Codec:Opus 或 G.729
理由:WAN 頻寬有限且不穩定。Opus 的動態位元率調整和 FEC 能有效適應網路波動。G.729 在低頻寬下提供可接受的品質。
客服中心外線
建議 Codec:G.711(PSTN 直連)或 G.729(SIP Trunk)
理由:與 PSTN 互通時使用 G.711 可避免轉碼。SIP Trunk 若線路數多,G.729 可大幅降低頻寬成本。
WebRTC 客服
建議 Codec:Opus
理由:Opus 是 WebRTC 的強制 Codec,瀏覽器原生支援,無需額外安裝。其動態位元率調整適合不穩定的網際網路環境。
錄音儲存
建議 Codec:G.711(品質優先)或 Opus(空間優先)
理由:錄音需考慮長期儲存成本。G.711 品質最佳但佔用空間大;Opus 可在低位元率下保持良好品質,大幅節省儲存空間。
最後提醒一件事:每轉碼一次,音質就掉一點。所以轉碼次數能少就少,最理想是端對端用同一種 Codec。規劃架構時,把 IP-PBX、SBC、SIP Trunk 和錄音系統各自支援的 Codec 清單先對一遍,盡量讓它們有交集,就能少轉幾次。