语音编解码器考古之G.711

语音编解码利用人听觉上的冗余对语音信息进行压缩从而达到节省带宽的目的。值得注意的是,本文说的是语音编解码器,也就Speech codec,而常用的还有另一种编解码器称作音频编解码器,英文是Audio codec,它们的区别如下。

图片

以前在学校的时候研究了很多VoIP的编解码器从G.723到AMR,再到EVS。后面出来工作发现G.711在很多地方仍然有用到,更有甚者直接使用PCM数据传输。而PCM格式的数据大家都很熟悉了,我们今天就介绍下经典的语音编解码器G.711。

模数转换

我们知道自然界中的声音是模拟信号,如果想要变成计算机可以处理的信号就需要将其转化为数字信号,这一般通过模数转换器ADC(analogue-to-digital conversion)完成,如下所示:

图片

不好意思放错图了

图片

一般模数转换需要经过采样保持量化编码四个步骤

  • 采样:在采样过程中对模拟信号进行精确的时间间隔采样,样本幅度连续并保持真实值,但是在时间上是离散的,此外在采样过程中需要满足采样定理,但是一般会采用过采样的方式处理
  • 保持:不进行任何处理,只是保持采样幅度直到下一个采样
  • 量化:将连续的幅度从连续(模拟)转为离散,得到数字形式,因为它在幅度和时间上都是离散的

  • 编码:将采样点从数字形式转为二进制形式

ADC 芯片的速度和精度指标是相互折中的。对应于不同的应用场景,ADC 芯片有着不同的设计架构,音频中常用的是Σ-Δ型,这里我们就不再展开了。波形编码波形编码是基于对语音信号波形的数字化处理,试图使处理后重建的语音信号波形与原语音信号波形保持一致。波形编码的优点是实现简单、语音质量较好、适应性强等;缺点是话音信号的压缩程度不是很高,实现编码速率比较高。波形编码的算法有很多种,常见的波形编码方式是脉冲编码调制(Pulse Code Modulation, PCM),其原理如下图所示,正弦波信号被均匀采样,对于每一个采样点用与其幅值最接近的值当做它编码后的值。比如8、9、11、12、13、14、15、15、15、14…等,将它们以二进制编码,就得到一组的数字:1000、1001、1011、1100、1101、1110、1111、1111、1111、1110,这些值就可以用于后续的计算机进行处理。

图片

G.711是由国际电信联盟(ITU)定义的标准非均匀量化脉冲编码调制编解码器,被广泛应用于世界上许多地区,具有高质量的音频信号同时可以保证低延迟和最小的音频质量损失。它使用64Kbps的带宽,可将14bits转换成8bits。G.711压缩有两个编码方式,A-law以及μ-law(中文读做A律和μ律)。其中μ-law主要在北美和日本使用,而A-law在欧洲和中国等其他地区使用。这两个变体在它们的数学编码算法上有所不同,其中A律计算公式为

图片

其中x为归一化输入,y为归一化输出,A=87.7;而μ律计算公式为

图片

其中μ=255。G.711编码方式属于对数压缩, 从实现的角度来看,将输入数据直接转换为对数刻度是很麻烦的。因此,A-law 和 µ-law 的对数曲线都使用 16 条称为弦的直线段进行近似,如下图所示:

图片

G.711

我们对一段10s 8kHz的音频按A律进行编码,编码前语音大小为164KB,编码后其大小为82KB,差不多减小了一半。

图片

然后我们将其解码,并与原始音频进行比较,如下所示。可以看到重构的音频与原始音频相比有一些噪声。

图片

作者:Ryuk 来源:公众号——语音算法组,本文代码在公众号语音算法组菜单栏点击Code获取


参考文献:

[1]. https://zhuanlan.zhihu.com/p/462841831

[2]. https://www.cnblogs.com/zhugeanran/p/9449911.html

[3]. https://finance.sina.cn/2021-08-07/detail-ikqciyzm0070703.d.html

[4]. https://www.elecfans.com/analog/202210251911053.html

[5]. https://www.allaboutcircuits.com/technical-articles/companding-logarithmic-laws-implementation-and-consequences/

版权声明:本文内容转自互联网,本文观点仅代表作者本人。本站仅提供信息存储空间服务,所有权归原作者所有。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至1393616908@qq.com 举报,一经查实,本站将立刻删除。

(0)

相关推荐

发表回复

登录后才能评论