不小心瞄到競爭對手 Telechips 的 audio 格式中竟然有兩個我不認識的 format, 只好研究一下那是什麼?
QCELP 全名 Qualcomm Code Excited Linear Prediction, 又叫做 Qualcomm PureVoice. 既然是 Qualcomm 做的, 想來是給手機使用, 沒錯! 它用在 CDMA 手機的語音壓縮上. 後來 QCELP 被 EVRC 所取代.
QCELP 有兩個版本, QCELP8 和 QCELP13 分別對應 8 kbps 和 13kbps 的版本. 由於原始的 speech 訊號是 8 KHz x 8 bits per samples, 所以為壓縮之前是 64 kbps, 壓縮率的大小, 大家應該一目瞭然. 至於 CELP 的原理, 也正如其名: Code Excited Linear Prediction.
EVRC (Enhanced Variable Rate CODEC) 以 160 個 samples 為一個 frame, 輸出有三種格式: Full rate: 8.55kbps, Half rate: 4 kbps, eighth rate: 0.8 kbps. 大家可能會好奇, 為何少了一個 1/4 rate? 因為那個獨立成 EVRC-B 的壓縮法. 1/8 倍不是比 1/4 倍更猛嗎? 為何主流不是 1/8 rate 呢? 因為壓縮總是有物理極限的, 所以 1/8 專門用來對付 noise 而不是 speech.
後來 EVRC 又給 SMV (Selectable Mode Vocoder) 所取代了. SMV 繼承 EVRC 的特徵, 又加上錄音狀況的判斷 voice activity detection (VAD) . 根據下列的場合不同, 它可以動態採用 full rate / half rate 壓 speech ,1/4 or 1/8 rate 壓 noise, 每個 frame 可以有 2~4 個 sub-frame, 因此效能比 EVRC 高.
- Silence/Background noise
- Non-stationary unvoiced
- Stationary unvoiced
- Onset
- Non-stationary voiced
- Stationary voiced
CDMA 2000 的 G4V 取代了 SMV, 但是在 3GPP2 系列 (3GPP 是 GSM, 3GPP2 是 CDMA), 還是看得到 SMV 的身影, 它的副檔名叫做 3G2. 因此本文標題上寫的兩個格式可以說都不重要了, 不如去關注 3GPP 來得有意義.