音频通信网络之一:音频编解码
音频编解码主要分为语音编码和音频编码。
- 语音编码用于语音通话,要求低延时,包括G711,G722等,主要由ITU-T和ETSI制定。
- 音频编码用于多媒体存储和传输,要求高质量,包括mp3,aac,flac,aptx等。
- OPUS 采用的SILK CELT能兼顾实时语音通话和高质量的音频编码。2024年3月opus也发布了它的神经网络版本1.5.1。2021年Google 发布了一个用于低比特率语音的神经音频编解码器 Lyra和用于音频编码的SoundStream。本文主要讲述用于语音通信的音频编码方式,所以主要侧重在低码率的编码方式。
语音通话 (G711, G722, G722.2, G729, Opus)
GSM通话
GSM通话的编码方式主要有四种,增强型全速率编码(EFR)、全速率编码(FR)、半速率编码(HR),自适应多速率编码(AMR)。
编码器 | 频宽/采样率 | 码率 | 延迟 | 场景 |
---|---|---|---|---|
HR | 300-3.4k/8kHz | 5.6kbps | 20ms | 语音质量较差 |
FR | 300-3.4k/8kHz | 13kbps | 20ms | QOS4.1 |
EFR | 50-7k/16kHz | 12.2kbps | 20ms | QOS4.7 |
ARM | 50-7k/16kHz | 12.2kbps | 20ms | QOS4.7 |
GSM-FR
- GSM-FR是在ETSI 06.10(ETS 300 961)中规定的,基于RPE-LTP(Regular Pulse Excitation - Long Term Prediction)语音编码范式。与大多数现代语音编解码器不同,线性预测的阶数仅为8。在现代的窄带语音编码中,阶数通常为10,宽带语音编码中,阶数通常为16。
- 在GSM全速率(GSM-FR)标准中RPE-LTP编码器,添加了单抽头长期预测器(LTP)到初始 RPE 编码器,因此 GSM-FR 对应于图中的编码器结构与长期综合滤波器。
- GSM-FR编码器使用四种可能的规则间隔脉冲序列。帧大小为 20ms,子帧大小为 5ms。对于5ms子帧,有3个可能的规则间隔脉冲序列。每个序列仅包含 13 或 14 个非零脉冲,其中剩余样本具有零幅度。脉冲序列由2位标识,对应的脉冲幅度采用 3 位块自适应编码PCM 量化器。每个子帧的块最大值用6位编码。所以RPE参数2+6+3*13=47bits/5ms。
- 音调周期和音调节奏导出一次子帧并量化为7 位和2位,所以LTP参数9bits/5ms。
- GSM-FR每20ms的编码长度为260bits。编码包括三个部分,LPC滤波器系数36bits/20ms;RPE参数47bits/5ms,LTP参数9bits/5ms。
GSM-HR
由于编解码器以5.6 kbit/s的速率运行,所以需要的带宽仅为全速率编解码器的一半,这样一来,语音通信的网络容量就翻了一番,但音频质量会有所损失。采样率为8 kHz,分辨率为13位,帧长度为160个样本(20毫秒),子帧长度为40个样本(5毫秒)。
GSM-EFR
采样率为8000个样本/秒,比特率为12.2 kbit/s。编码方案代数编码激励线性预测编码器(ACELP)。编码器接收的数据分辨率13位,左对齐在16位字中。最不显著的三位被设为0。解码器以相同格式输出数据。
AMR
AMR可以根据信道的变化动态改变编解码速率,提升网络的容量和质量,AMR也可分为全速率和半速率。AMR可以使用的语音编码模式(CM)包括12.2、10.2、7.95、7.4、6.7、5.9、5.15、4.75kbit/s等8种速率,其中12.2和10.2kbit/s只用于全速率,7.4kbit/s只用于半速率。
VOIP通话
编码方式主要有G711, G722, G722.2, G729, Opus,主要用于视频通话,视频会议场景,基本特征如下表。
编码器 | 频宽/采样率 | 码率 | 延迟 | 场景 |
---|---|---|---|---|
G711 | 300-3.4k/8kHz | 64kbps | 125us | VOIP PSTN |
G722 | 50-7k/16kHz | 32kbps | 4ms | 高品质低延迟 |
G722.2 | 50-7k/16kHz | 6.6-23.85kbps | 20ms | 音质和带宽的统一 |
G729 | 300-3.4k/8kHz | 8kbps | 15ms | 低带宽通话 |
opus | 50-20k/48k | 6-510kbps | 26.5ms | 高清通话 |
G711
G711有两种编码标准,μ-law and A-law 编码分别将 14-bit and 13-bit PCM数据编码到8-bit 的样本中。
G.711 编码器将128kbps音频数据编码成64 kbps,压缩比为2:1,编码延迟可以认为是1个样本,即125us。
G722
G722 使用的是自适应差分脉冲调制即ADPCM,可以提高压缩比到4:1。但因为自适应差分编码需要更新量化步长,延迟增加到了4ms。
G722.2
G722.2又被称为AMR-WB,AMR-WB”全称为“Adaptive Multi-rate - Wideband”,即“自适应多速率宽带编码”,采样频率为16kHz,是一种同时被国际标准化组织ITU-T和3GPP采用的宽带语音编码标准,也称为G722.2标准。AMR-WB提供语音带宽范围达到50~7000Hz,用户可主观感受到话音比以前更加自然、舒适和易于分辨。
G729
G.729算法是以语音编码方案中的码激励线性预测(CELP,Code Excited Linear Predication)技术为基础提出的。
G.729编码器以10ms的输入帧(80个采样点)为单位进行编码,每一帧的处理时间控制为5ms,则其时延相当于10ms+5ms=15ms。
G.729编码器的输出为8kbit/s的码流,因此其压缩比高达16:1。还原后的声音质量却达到了相当高的水准,其主观平均得分(MOS,Mean Opinion Score)在4分以上(MOS最高得分为5分),音质与码率为64kbit/s的G.711编码标准相近,而占用的带宽仅为G.711的1/8。
Opus
多媒体直播 (AAC,AACLC,HEAAC)
近年直播带货兴起,AAC成为了最常用的音频编码方式。传统的直播卖货场景对语音质量要求不会特别高,一般64kbps就足够了,96kbps以上音频质量就区分不开了。但对于销售音响设备的带货主播和才艺主播,会有高品质音频的需求。此时码率就要升到192kbps以上,直到256kbps。
AACLC
HEAAC
神经网络 (Opus,Lyra)
Opus 1.5.1
Lyra
编码基本原理
时域编码
PCM,DPCM,ADPCM
线性预测编码(LPC,CELP,ACELP)
线性预测编码通过估计共振峰、剔除它们在语音信号中的作用、估计保留的蜂鸣音强度与频率来分析语音信号。剔除共振峰的过程称为逆滤波,经过这个过程剩余的信号称为残余信号(residue)。
LPC分析去除的是相邻语音样点之间的相关性,相当于在信号频谱中去除了谱包络,而经LPC分析后的频谱仍然存在相当大的变化,远远没有达到白噪声的要求,在浊音持续区域的样品之间仍然存在长时相关。因此,要去除残差信号的周期结构,还需除去频谱中的精细结构,即进行基音预测,使得频谱更加平坦。