G.711 (也称PCM), 用脉冲编码调制对音频采样,采样率为8k每秒。它利用一个 64Kbps 未压缩通道传输语音讯号。 起压缩率为1:2, 即把16位数据压缩成8位。
G.711 标准下主要有两种压缩算法。一种是µ-law, 北美和日本。另一种是A-law, 欧洲等其他区域
1972 年,为了将 模拟通信转向数字通信执行制定的话音编码标准
这个在通信原理的本科课程中都有介绍过。G.711采用一种称为分组丢失隐藏(PLC)的技术来减少丢包带来的实际影响。有效的信号带宽在静默期间通过语音活动检测(VAD)这一过程被减小。
延迟 0.125 ms
mos 4.1
G.729
也是ITU-T定义的音频编码算法,frame 只有10ms,G.729点到点的时延为25ms,G.729基于CELP模式,用CS-ACELP(Conjugate-Structure Algebraic Code Excited Linear Prediction)方法以8Kbps的波特率对语音进行编码。
G.729采用的是共轭结构的代数码激励线性预测算法(Conjugate Structure Algebraic Code Excited Linear Prediction,CS-ACELP),这是一种基于CELP编码模型的算法。由于G.729编码器能够实现很高的语音质量(MOS分3.9, 这个语音质量算很不错了)和很低的算法延时,被广泛地应用于数据通信的各个领域。
G.729是对8KHz采样16bit量化的线性PCM语音信号进行编码,压缩后数据速率为8Kbps,具备16:1的高压缩率。
延迟 15ms
MOS 3.9
G.729 CS-ACELP 8 3.92
G.723
G.723是ITU-T在1996年制订成型的一种多媒体语音编解码标准。G.723编码器采用LPC合成-分析法和感觉加权误差最小化原理编码。G.723标准可在6.3kbps和5.3kbps两种码率下工作。对激励信号进行量化时,高速率(6.3kbps)编码器的激励信号采用多脉冲最大似然量化(MP-MLQ),低速率(5.3kbps)编码器的激励信号采用代数码本激励线性预测(ACELP)。其中,高码率算法(6.3kbps)具有较高的重建语音质量,而低码率算法(5.3kbps)的计算复杂度则较低。与一般的低码率语音编码算法一样,这里的G.723标准采用的线性预测的合成分析法也就是我们通常所说的Analysis-by-Synthesis。
G.723.1是一个双速率的语音编码器.
编码器首先对语音信号进行传统电话带宽的滤波(基于G.712),再对语音信号用传统8000-Hz速率进行抽样(基于G.711),并变换成16 bit线性PCM码作为该编码器的输入;
在解码器中对输出进行逆操作来重构语音信号;高速率编码器使用多脉冲最大似然量化(MP-MLQ),低速率编码器使用代数码激励线性预测(ACELP)方法,编码器和解码器都必须支持此两种速率,并能够在帧间对两种速率进行转换;
此系统同样能够对音乐和其他音频信号进行压缩和解压缩,但它对语音信号来说是最优的;采用了执行不连续传输的静音压缩,这就意味着在静音期间的比特流中加入了人为的噪声。除了预留带宽之外,这种技术使发信机的调制解调器保持连续工作,并且避免了载波信号的时通时断。
G.723.1 MP-MLQ 6.3kbps 3.9 MOS
G.723.1 ACELP 5.3kbps 3.65 MOS
G.726
Adaptive Differential Pulse Code Modulation (ADPCM),最为常用的方式是 32 kbit/s,但由于其只是 G.711速率的一半,所以可将网络的可利用空间增加了一倍。G.726具体规定了一个 64 kbpsA-law 或 µ-law PCM 信号是如何被转化为40, 32, 24或16 kbps 的 ADPCM 通道的。在这些通道中,24和16 kbps 的通道被用于数字电路倍增设备(DCME)中的语音传输,而40 kbps 通道则被用于 DCME 中的数据解调信号(尤其是4800 kbps 或更高的调制解调器)。
G.726 encoder 输入一般都是G.711 encoder的输出:64kbps A-law or u-law.其算法实质就是一个ADPCM, 自适应量化算法。
Speex 2.15 /44
Minimizes bandwidth usage by using variable bit rate. It is one of the most preferred codecs used in many VoIP apps.
SILK/ Opus
AMR
GSM
Codec2是一个开源的 语音编解码器, 最低450 bit/s
https://github.com/drowe67/codec2
Codec2的主要开发者是David Rowe ,他同时也是另一个开源语音项目Speex 的开发者。Codec2项目允许在只占用极少带宽的情况下提供通话服务,其算法是基于1980年代的论文,并避开了未过期的专利。
VoLTE使用两种语音编码标准:AMR(或AMR-NB)、AMR-WB。
VoNR使用 EVS
twinkle支持的 codec
G.711 A-law (64 kbps payload, 8 kHz sampling rate)
G.711 μ-law (64 kbps payload, 8 kHz sampling rate)
GSM (13 kbps payload, 8 kHz sampling rate)
Speex narrow band (15.2 kbps payload, 8 kHz sampling rate)
Speex wide band (28 kbps payload, 16 kHz sampling rate)
Speex ultra wide band (36 kbps payload, 32 kHz sampling rate)
iLBC (13.3 or 15.2 kbps payload, 8 kHz sampling rate)
G.726 (16, 24, 32 or 40 kbps payload, 8 kHz sampling rate)
Linphone 自己实现了一个 G.729 编解码器
Bcg729 is an open source implementation of both an encoder and decoder for the ITU G729 Annex A/B speech codec. This library was developed by Belledonne Communications, the company supporting the Linphone project. It was written from scratch and is NOT a derivative work of the ITU reference source code of any kind.
The library is written in C 99, is fully portable, and can be executed on many platforms, including ARM and x86 processors. libbcg729 supports concurrent channel encoding/decoding for multi-call applications such as conferencing.
opus
speex 32k/16k/8k
pcmu
pcma
gsm
g722
g726 40/32/24/16
aal2-g726 32/24/16
参考资料:
https://www.gl.com/voice-codecs.html
https://en.wikipedia.org/wiki/Category:Speech_codecs