11-2_数字音频压缩编码

数字音频压缩编码

参考资料:

音频信号经过数字化处理后会面临巨大数据量给存储和传输带来的压力,为了降低传输和存储的费用,必须对数据信号进行压缩编码。所以在保证重建音频质量尽可能完整的情况下,以尽量少的比特数来表征音频信息。

1.冗余信息

无论是语音还是音乐,都存在这多种形式的冗余信息,主要包括:时间域冗余、频率域冗余、听觉冗余。

对于时间域冗余:

  1. 幅度值的非均匀性:大多数音频信号中,不同幅度的样值出现的概率不同,小幅度样值比大幅度样值出现的概率要高。特别是语音通话或者音乐的间隙,会出现的小幅度样值。
  2. 样值间的相关性:对于语音波形分析表明,相邻样值之间存在相关性。可以利用差分编码技术,进行数据压缩。
  3. 信号周期的相关性:虽然音频信号都分布在20Hz~20kHz之间,但某一声音在该频带内只有少数几个频率起作用。也就是说音频信号在周期之间存在相关性。
  4. 长时相关性:上述关于样值和周期的相关性都说在20ms的间隔内进行统计的短时自相关,如果在较长时间间隔内进行统计(几十秒内),则会得到长时自相关。
  5. 静音:对于语音通话间的停顿间歇本身就是一种冗余。如果可以正确检测出该静音段,并且去掉这段时间的样值数据,就能起到压缩作用。

对于频率域冗余:

  1. 长时功率谱(Power Spectral Density)密度的非均匀性:对长时间间隔进行统计评价,得到长时功率谱密度函数,其功率谱呈现明显的非平坦性。例如某些频率成分的突出或缺失。通过对长时间间隔进行统计评价,可以得到更稳定和可靠的PSD估计,从而更准确地反映信号的频率特性。
  2. 语音特有的短时功率谱(Short-Time Power Spectrum)密度:语音信号的短时功率谱,在某些频率上出现峰值“峰值”,而在另一些频率上出现”谷底“。

对于听觉冗余:由于音频最终都是让人听的,人耳对信号幅度、频率的分辨能力是有限的,所以人耳感觉不到的成分,即对人耳辨别声音的强度、音调、方位没有任何贡献的成分,称为与听觉无关的”不相关“部分,都可以视为冗余。

心理声学模型(Psychoacoustic model)分析音频信号并计算掩蔽每个帧和每个子带的量化噪声阈值,它可以在不降低主观音频质量的情况下,最有效地分配比特来表示音频信号。

2.音频编码

音频压缩编解码技术分为无损(LossLess)编码和有损(Lossy)编码。

音频编码中常用的技术:

  1. 波形编码:直接对音频信号的波形采样值进行处理,通过静音检测、预测、非线性量化等手段进行编码。主要是利用音频样值的幅度分布规律和相邻样值的相关性进行压缩。

  1. 参数编码:对音频信号提取并生成音频参数,使用参数构建生成语音模型。解码时使用模型重构语音信号。

  2. 混合编码:结合波形编码和参数编码的优点,直接对音频信号的波形进行编码,保留了信号的细节和高质量的音质;提取音频信号的特征参数,并使用这些参数来重构信号,通常用于低比特率的压缩。

2.1 G.711

参考链接:

G.711(脉冲编码调制)是一种由国际电信联盟(ITU-T)制定音频编码标准,又称为ITU-T G.711。其中定义了两种主要的压缩拓展算法,即μ-law算法和A-law算法,它是一种波形音频编码器。

μ-law算法和 A-law 算法将 14 位和 13 位有符号线性 PCM 样本(分别)编码为 8 位样本。因此,G.711 编码器将为以 8 kHz 采样的信号创建一个 64 kbit/s 的比特流。G.711 μ律倾向于为较高范围的信号提供更高的分辨率,而 G.711 A-law 在较低信号电平下提供更多的量化级别。

G.711 μ-law:PCMUG711uG711MU

G.711 A-law:PCMAG711A

对于A-law算法输入的是13位(S16的高13位),假设输入的PCM输入为:0x1234(0b 0000 0100 1101 0010),其实数据为有符号数据,也可以这也表示(0b 0 00001 0011 010010)。

  1. 符号位取反得到s;结果为:(0b 1 00001 0011 010010)。
  2. 获取强度为00001,查表可知,编码eee=011;结果为(0b10110011010010)。
  3. 获取高位样本位wxyz;结果为(0b10110011)。
  4. 组合为seeewxyz,将seeewxyz逢偶数为取补数,编码完毕;结果为:(0b11100110),即0xE6。

对于μ-law算法输入的是14位(S16的高14位),先用0x84 - sample(小于0)或者sample + 0x84,然后对应每一段使用不同的移位值得到最终的8bit结果。

如果值为负数,则反转符号位后的所有位,加上 33(二进制100001)并将其转换为 8 位值。假设输入的PCM输入为:0x1234(0b 0000 0100 1101 0010)。

  1. 取得范围值,查表0x1234属于+2014 to +991 in 16 intervals of 64范围内,得到基础值为0xA0,间隔数为64。
  2. 当前值0x1234和区间基本值2014差异值为:2014 - 1234 = 780。
  3. 求得偏移值 = 780 / 间隔数 = 780 / 64,取整为12。
  4. 最终输出为0xA0 + 12 = 0xAC。

G.711 编码的核心在于通过压缩语音信号来减少数据量,从而提高传输效率。无论是 A律还是 μ律编码,它们的最终目标都是一致的,只是在具体实现上存在一些差异。

G.711编码算法的C语言实现A-law和μ-law的两种编码方式:

#include <stdio.h>

#define SIGN_BIT    (0x80)  /* Sign bit for a A-law byte. */
#define QUANT_MASK  (0xf)   /* Quantization field mask. */
#define NSEGS       (8)     /* Number of A-law segments. */
#define SEG_SHIFT   (4)     /* Left shift for segment number. */
#define SEG_MASK    (0x70)  /* Segment field mask. */
#define BIAS        (0x84)  /* Bias for linear code. */
#define CLIP        8159

static short seg_aend[NSEGS] = {0x1F, 0x3F, 0x7F, 0xFF, 0x1FF, 0x3FF, 0x7FF, 0xFFF};
static short seg_uend[NSEGS] = {0x3F, 0x7F, 0xFF, 0x1FF, 0x3FF, 0x7FF, 0xFFF, 0x1FFF};

static int search(int val, short *table, int size) {
    for (int i = 0; i < size; i++) {
        if (val <= table[i]) return i;
    }
    return size;
}

unsigned char linear2alaw(int pcm_val) {
    int mask;
    int seg;
    unsigned char aval;

    pcm_val = pcm_val >> 3;
    if (pcm_val >= 0) {
        mask = 0xD5;
    } else {
        mask = 0x55;
        pcm_val = -pcm_val - 1;
    }

    seg = search(pcm_val, seg_aend, NSEGS);
    if (seg >= NSEGS) {
        return (unsigned char)(0x7F ^ mask);
    } else {
        aval = (unsigned char)seg << SEG_SHIFT;
        if (seg < 2) {
            aval |= (pcm_val >> 1) & QUANT_MASK;
        } else {
            aval |= (pcm_val >> seg) & QUANT_MASK;
        }
        return (aval ^ mask);
    }
}

unsigned char linear2ulaw(int pcm_val) {
    int mask;
    int seg;
    unsigned char uval;

    pcm_val = pcm_val >> 2;
    if (pcm_val < 0) {
        pcm_val = -pcm_val;
        mask = 0x7F;
    } else {
        mask = 0xFF;
    }

    if (pcm_val > CLIP) pcm_val = CLIP;
    pcm_val += (BIAS >> 2);

    seg = search(pcm_val, seg_uend, NSEGS);
    if (seg >= NSEGS) {
        return (unsigned char)(0x7F ^ mask);
    } else {
        uval = (unsigned char)(seg << 4) | ((pcm_val >> (seg + 1)) & 0xF);
        return (uval ^ mask);
    }
}

2.2 ADPCM (G.726)

参考链接:

自适应差分编码(ADPCM)是利用预测性编码来降低音频信号数据率的方式,其过程主要是对输入的PCM信号与预测值进行比较(相减)得到输出差分信号(预测误差),然后对差分信号进行量化编码。

对于解码器,由编码器传递过来的预测值与反量化的差分信号相加,从而重新建立原始的输入信号。

G.726 是一种由国际电信联盟(ITU-T)定义的音频编码算法。它使用自适应差分脉冲编码调制(ADPCM)技术,将64kbps的PCM信号压缩为40kbps、32kbps、24kbps或16kbps。其中,32kbps的模式最为常用,因为它能将网络的可利用空间增加一倍。编码的具体流程为:

  1. 采样输入音频信号,获取音频采样值;
  2. 差分编码,计算当前采样值与预测值的差值;
  3. 量化差值,将差值映射到一个固定的量化级别上;
  4. 编码量化结果,用更少的位数对量化结果进行编码;
  5. 输出压缩后的编码数据,以便传输或存储。

G.726解码器的工作流程与编码器相对应,主要包括以下步骤:

  1. 接收压缩编码数据;
  2. 对编码数据进行解码,还原出量化结果;
  3. 对还原的量化结果进行反量化,恢复出差分编码前的差值;
  4. 对差值进行反差分编码,得到解码后的音频采样值;
  5. 输出解码后的音频信号,实现音频数据的解压缩与恢复。

2.3 MPEG-1 音频标准

参考资料:

MPEG-1音频编码是一种数字音频编码和有损压缩格式,由国际标准化组织(ISO)和国际电工委员会(IEC)联合开发。它的主要目标是通过舍弃对人类听觉不重要的音频数据,显著减少音频文件的大小。

MPEG-1音频编码包含三个层次(Layer I、Layer II 和 Layer III),其中最著名的是 Layer III,也就是我们常说的 MP3。MP3 是一种广泛使用的音频压缩格式,能够在保持较高音质的同时,将音频文件的大小压缩到原来的1/10到1/12。

MPEG-1音频编码支持的采样率:32000Hz/44100Hz/48000Hz

MPEG-1音频编码支持的比特率:

  • 第 I 层:32、64、96、128、160、192、224、256、288、320、352、384、416 和 448 kbit/s
  • 第 II 层:32、48、56、64、80、96、112、128、160、192、224、256、320 和 384 kbit/s
  • 第 III 层:32、40、48、56、64、80、96、112、128、160、192、224、256 和 320 kbit/s

MPEG-1 音频分为 3 层。每个较高的层的计算都更加复杂,并且在较低的比特率下通常比前一个层更高效。这些层是半向后兼容的,因为较高层重用了较低层实现的技术。“完整”的第 II 层解码器也可以播放第 I 层音频,但不能播放第 III 层音频,尽管并非所有更高级别的播放器都是“完整”的。

MPEG-1音频编码的技术要点:

  • 心理声学模型:利用人耳对不同频率声音的敏感度不同,去除人耳不易察觉的音频部分。
  • 混合滤波器组:将时域信号转换为频域信号,以便更有效地压缩。
  • 熵编码:进一步压缩数据以减少冗余。

2.3.1 MPEG-1 Layer 1

​ MPEG-1 Layer 1 采用子带编码方法,输入音频(PCM)信号经过子带分析滤波组按照频率等间隔分成32个子带,以子带为单位进行计算,使得量化噪声限制在各个子带中。

同时为了增加频域分辨率和满足后面的心理声学模型的计算,输入的音频(PCM)信号需要先先通过512个样本的FFT(快速傅里叶变换),完成时域到频域的变换,计算信号掩蔽比,用于各个子带的比特率分配。

动态比特分配模块根据信号掩蔽比控制各个子带的量化参数,使得满足码率条件下感知失真最小。最后将编码的子带样本值和辅助信息按照一定的格式打包形成比特流输出。

最终形成的数据帧,每帧包含以下部分:

  • 用于同步和记录该帧的同步头,长度为32bit。
  • 用于检验传输差错的循环冗余校验码(CRC),长度为16bit。
  • 用于描述bit分配信息的字段,每个子带占4bit。
  • 比例因子(Scale Factor)字段,每个子带占6bit。
  • 采样值码字字段,同一子带内的每个采样值用2~15bit表示。
  • 可能的附加辅助数据字段,长度未做规定。

2.3.2 MPEG-1 Layer 2

MPEG-1 Layer 2 采用了MUSICAM(Masking-Pattern adapted Universal Subband Integrated Coding And Multiplexing,掩蔽型自适应通用子带综合编码与复用)编码方法,也被称为MPEG-1音频层 2(MP2)。它通过将宽带声音信号的频谱分割为32个子频带,并利用人耳的心理声学效应来实现数据压缩。

Layer 2和Layer 1的不同之处在于:

  • 使用1024点的FFT运算,提高了频率的分辨率,可得到源信号的更准确的瞬时频谱特性。
  • Layer 2的每帧包含1152个采样值的码字。
  • 描述比特分配的字段长度随子带的不同而不同。
  • 编码器可对一个子带内的3块采样值使用3个不同的比例因子,即每个子带的每帧应传送3个比例因子。

2.3.3 MPEG-1 Layer 3

​ MPEG-1 Layer 3使用较好的临界频带滤波器,把输入信号的频带划分为不等带宽的子带。临界频带就是在同样的掩蔽阈值时,低频段有窄的临界频带,而高频段则有较宽的临界频带。那么在按临界频带划分子带时,就可在低频段取子带更宽,即对低频有较高的频率分辨率,在高频段时则相对有较低的分辨率。

​ Layer 3 综合前两层的不足,使用改进的离散余弦变换(MDCT),把子带的输出在频域里进一步细分以达到更高的频域分辨率。

2.3.4 MPEG-1 三个层次对比

MPEG-1音频编码分为三个层次:Layer 1、Layer 2和Layer 3。它们的主要区别在于编码复杂度、压缩率和应用场景:

  1. Layer 1 (MP1):
    • 复杂度:最低
    • 压缩率:约4:1
    • 应用:早期的数字音频应用,如LD(激光光盘)和DCC(数字紧凑磁带)
  2. Layer 2 (MP2):
    • 复杂度:中等
    • 压缩率:约6:1到8:1
    • 应用:数字音频广播(DAB)、数字视频广播(DVB)和VCD等
  3. Layer 3 (MP3):
    • 复杂度:最高
    • 压缩率:约10:1到12:1
    • 应用:广泛用于互联网和PC上的音频文件,因其高效的压缩和较好的音质而流行

MPEG 音频文件是MPEG1 标准中的声音部分,它根据压缩质量和编码复杂程度划分为三层,即 Layer-1、Layer2、Layer3,且分别对应MP1、MP2、MP3 这三种声音文件。

2.4 MPEG-2 音频标准

MPEG-2标准定义了两种音频编码格式:

  1. MPEG-2 Audio (ISO/IEC 13818-3):又称MPEG-2 BC(Backward Compatible,向后兼容)
  2. MPEG-2 AAC(Advanced Audio Coding,高级音频编码):它与MPEG-1音频编码格式是不兼容的,所以又称MPEG-2 NBC(Non Backward Compatible,非向后兼容)标准。

2.4.1 MPEG-2 BC

​ MPEG-2 BC 是一种多声道环绕声音音频编码标准,它主要是MPEG-1 音频编码格式(ISO/IEC 1117-3)和CCIR 775建议的基础上发展起来的。该标准码流形式可以与MPEG-1的Layer 1 、Layer 2 、Layer 3做到向后兼容,并且根据CCIR 775建议做到与双声道、单声道的向下兼容,还能够与杜比环绕声形式兼容。

​ 在压缩算法中除了继承了MPEG-1 的绝大部分技术外,为在低码率条件下进一步提高声音质量,还采用多种新技术,如动态传输声道切换、动态串声、自适应多声道预测、中置声道部分编码等。

​ 正是MPEG-2 BC这种向后兼容的性质成为了其弱点,使得其不得不牺牲码率来换取更好的声音质量。并且本身存在一些缺陷,使得MPEG-2 BC 在推广应用方面遇到了阻碍。

2.4.2 MPEG-2 AAC

​ MPEG-2 AAC是一种非常灵活的声音感知编码标准,使用心理声学模型的掩蔽特性来压缩声音的数据量,并通过把量化的噪声分散到各个子带中,用全局信号把噪声掩蔽掉。MPEG-2 AAC 支持的采样频率为8~96kHZ,编码的音源可以是单通道、立体声和多声道的声音。可支持48个主声道、16个低频增强声道、16个配音声道或者称为多语言声道和16个数据流。

​ MPEG-2 AAC在压缩比为11:1,即每个声道的码率为64kbps/s、5个声道的总码率为320kbps/s。在同样的质量下,MPEG-2 AAC 的码率大约是MPEG-1 Layer 3 的70%。

​ MPEG-2 AAC编码器的编码算法框图如下所示:

其中阴影模块是可选部分,可根据不同应用和成本限制对可选模块进行选择。

  • 增益控制:用于对输入信号进行增益控制,对不同频带的信号使用不同的增益器,从而达到控制信号频谱幅度的效果,减少信号编码的比特数。

  • 分析滤波组:将音频划分为一定长度的帧,然后将这些音频帧数据从时间域变换为频率域(离散余弦变换,MDCT)。AAD的MDCT采用长块(2048个时域样本)和短块(256个时域样本)两种变换块。

  • 心理声学模型:把整个信号频带按人耳的听觉特性划分出临界频带,首先计算出各个临界子带掩蔽阈值,得到信掩比,然后计算出各个临界子带的最小掩蔽阈值。

  • 瞬时噪声整形(TNS):假设时域上一段安静的信号后紧接着一个瞬时冲击信号,则在频域编码后量化噪声在解码时会扩展到整个时域,这种情况称为“预回声”。所以TNS根据输入信号自适应地减少回声效应,对频域信号进行线性预测滤波,再将预测残差进行编码并发送相关系数。

  • 声强/耦合编码和M/S编码:联合立体声编码(Joint Stereo Coding)是一种空间编码技术,其目的是去掉空间的冗余。声强/耦合(Intensity/Coupling)编码和M/S编码(Mid/Side Encoding)都是MPEG-2 AAC所使用的两种空间编码技术。

    • 声强编码(Intensity Coding)利用人耳对声音方向感知的特点,主要在低比特率下使用。它通过将左右声道的高频部分合并为单声道,然后在解码时根据强度信息重建立体声效果。

    • 耦合编码(Coupling Coding)则是将多个声道的相似部分合并编码,减少冗余信息。解码时再将这些合并的部分分离出来,恢复原始的多声道信号

    • M/S立体声编码是一种联合立体声编码技术,适用于左右声道信息相似度较高的情况。它将左右声道(L和R)转换为中间声道(M)和侧边声道(S):

      • M声道:L和R的和,即 ( M = \frac{L + R}{2} )。

      • S声道:L和R的差,即 ( S = \frac{L - R}{2} )。

        这种转换使得编码器可以分别处理中间和侧边的信号,通常中间声道包含大部分信息,而侧边声道包含立体声效果。这样可以更有效地压缩数据

  • 预测:在信号平稳的情况下,利用时间域预测可进一步减少信号的冗余度。在AAC编码器中预测是利用前面两帧频谱来预测当前的频谱,在求预测的残差,然后对残差进行编码。

  • 量化和编码:在给定的码率下,尽量达到心理声学模型下的听觉心理感觉到的失真最小。心理声学模型输出心理声学参数会送到比特分配操作,决定每个比例因子带采用多大的子带比例因子和对整个音频采用多大的全局比例因子进行编码。

  • 无损编码(熵编码):通常采用霍夫曼编码(Huffman),使用对需编码信号的统计概率来安排Huffman码字,即将出现概率较大的输入编码组合用较短的Huffman码字来表示,而出现概率较小的输入编码组合用较长的Huffman码字来表示。

  • 比特流格式化:编码后的码流参数和边信息通过复用器组合成最终的音频码流,信息参数保存有音频数据的量化因子或采样率等音频辅助信息,而码流参数包含编码后的音频实际数据。

2.4.3 AAC传输流数据包格式

每个MPEG-2 AAC的TS(Transport Stream)数据包都携带4Bit(32位)报头为前缀,184Bit的有效载荷数据。

  • 同步字节(Sync Byte):每个TS包的第一个字节是同步字节(8位),固定为0x47(01000111),用于标识TS包的开始。

  • 传输错误指示符(Transport Error Indicator):1位,指示是否存在传输错误。

  • 有效负载单元起始指示符(Payload Unit Start Indicator):1位,指示该包是否为有效负载的开始。

  • 传输优先级(Transport Priority):1位,指示该包的优先级。

  • PID(Packet Identifier):13位,数据包标识符。

    • PAT:节目关联表,指向PMT。
    • CAT:条件访问信息,如加密和解密所需的密钥
    • TSDT:输出流的描述信息
    • NIT:网络信息,如传输流的频率和调制方式
    • SDT:服务信息,如频道名称和服务类型
    • EIT:节目指南信息,如节目开始时间和持续时间
    • PMT:每个节目有一个唯一的PID,包含该节目的所有元素流(视频、音频、字幕等)
  • 传输加扰控制(Transport Scrambling Control):2位,指示是否对TS包进行加扰。

    • 加扰是一种将数据流与伪随机序列进行异或操作的技术,目的是保护数据内容,防止未经授权的访问和干扰。
  • 自适应字段控制(Adaptation Field Control):2位,指示是否存在自适应字段及其位置。

  • 连续计数器(Continuity Counter):4位,用于检测TS包的丢失或重复。

  • 自适应字段(Adaptation Field):可选字段,长度可变,包含PCR(Program Clock Reference,程序时钟参考)等信息,用于同步和控制。

2.4.4 BC和AAC的对比

MPEG-2 BC(Backward Compatible)

MPEG-2 BC 是MPEG-2标准的一部分,主要用于音频编码,增强了MPEG-1的音频功能,允许编码多声道音频节目,最多支持5.1声道。

主要特点:

  1. 向后兼容:MPEG-2 BC流可以被MPEG-1音频解码器读取和解释。
  2. 多声道支持:支持多达5.1声道的环绕声2。
  3. 低采样频率:引入了低采样频率编码(如16kHz、22.05kHz和24kHz),适用于MPEG-1 Layer I、II和III。
  4. 应用:广泛应用于数字电视广播、DVD和其他需要高质量音频的多媒体应用中。

AAC(Advanced Audio Coding)

AAC(高级音频编码)是一种有损音频压缩格式,被认为是MP3的继任者。它由Fraunhofer IIS、杜比实验室、AT&T、索尼等公司共同开发,最初基于MPEG-2标准,后来集成到MPEG-4标准中。

主要特点

  1. 更高的压缩效率:在相同比特率下,AAC提供比MP3更好的音质。
  2. 支持多声道:最多可支持48个全音域声道。
  3. 更高的采样率:最高支持96kHz的采样频率。
  4. 广泛应用:被广泛用于iTunes、iPod、iPhone、Windows、Linux等设备,以及数字广播和流媒体服务。

对比

  • 兼容性:MPEG-2 BC向后兼容MPEG-1,而AAC则是基于MPEG-2和MPEG-4标准。
  • 压缩效率:AAC在相同比特率下提供更好的音质和更高的压缩效率。
  • 应用场景:MPEG-2 BC主要用于广播和DVD等多媒体应用,而AAC则广泛应用于各种数字音频设备和流媒体服务。

2.5 OPUS

参考资料:

Opus是一种有损音频压缩格式,由Xiph基金会开发,并由互联网工程任务组(IETF)进行标准化。它的设计目标是提供高效的音频编码,适用于各种应用场景,包括语音和音乐,同时保持低延迟,以实现即时交互通信。Opus 是由两个编解码器——Silk 和 Celt 融合而成。下面是其编码原理:

  • SILK模式:是一种专门为语音优化的编码技术,可以在低比特率下提供高质量的语音编码,根据网络条件和信道状况动态调整码率,保证语音质量。其原理是利用线性预测编码(LPC),计算LPC系数,仅需线性预测分析;使用残差编码,对LPC分析后的残差信号进行量化和编码。
  • CELT模式:是一种适用于高比特率和高质量音频的编码技术,可以在高比特率下能提供接近无损的音频质量,设计用于实时应用,具有非常低的编码和解码延迟。其原理是:将时间域信号转换为频域信号,使用改进的离散余弦变换(MDCT)进行分块和变换。对MDCT系数进行量化,使用矢量量化技术。对量化后的数据进行熵编码,减少冗余信息。

2.6 其他编码算法

除了上面介绍到的编码算法,还有许多其他音频编码算法。还有一些常见的音频编码算法:

  • FLAC(Free Lossless Audio Codec):一种无损压缩格式,能够在不损失音质的情况下减少文件大小。
  • WMA(Windows Media Audio):由微软开发的有损和无损压缩格式,适用于Windows平台。
  • ALAC(Apple Lossless Audio Codec):苹果公司开发的无损压缩格式,适用于Apple设备。
  • Vorbis:一种开源的有损压缩格式,音质和压缩比与MP3相当。
  • AMR(Adaptive Multi-Rate):一种用于语音通信的音频压缩算法,适用于低比特率应用。
  • Speex:一种开源的语音编码格式,专为语音压缩设计,适用于VoIP应用。
  • EVS(Enhanced Voice Services):一种用于4G和5G网络的高效语音编码算法,提供高质量语音通信。