技术分享| RTC 通讯中常用的音频格式
上次我们介绍了RTC通讯中常用的图像格式,这次我们来介绍一下 RTC 通讯中常用的音频格式。
一,概述
音频格式有哪些?要回答这个问题,先来给大家看一下百度百科对音频的解释:音频格式即音乐格式。音频格式是指要在计算机内播放或是处理音频文件,是对声音文件进行数、模转换的过程。音频格式最大带宽是 20KHZ,速率介于 40-50KHZ 之间,采用线性脉冲编码调制 PCM,每一量化步长都具有相等的长度。人们说话的声音频谱能量范围大部分分布在 300-3400HZ,而人耳能听到声音的频谱范围一般为 20~20000HZ,所以人耳是可以听到除人说话外的自然界的很多其他声音的,像乐器,自然界,尖鸣声等等。
通讯发展经历了几个阶段-飞鸽传输-烽火台-消息(电报)-语音通话-视频通话-AR/VR,从之前的文字通讯发展到现在的音视频通讯,而且随着时代的发展,人们已经不再满足于简单的能听到对方的声音,现在对于声音的音质,立体声甚至空间环绕声都有着强烈的需求场景;所以也需要各种音频格式与之相匹配,才能满足现实场景中的需求。
二,常用的音频格式
就目前的音频市场来看,音频格式主要分为两种:无损压缩何有损压缩。如果我们听不同格式的音频,音质上也会有比较大的差异。无损压缩的音频能在百分百保存源文件的所有数据的基础上,将音频文件的体积压缩的更小,然后将压缩的音频文件还原后,就能实现与源文件相同的大小、相同的码率。还有一种就是有损压缩的音频,这种就是降低音频采样频率与比特率,这样输出的音频文件会比源文件晓。
1、MP3 ——没有比这更熟悉的名字:MPEG 音频文件的压缩是一种有损压缩,MPEG3 音频编码具有 10:1~12:1 的高压缩率,同时基本保持低音频部分不失真,但是牺牲了声音文件中 12KHz 到 16KHz 高音频这部分的质量来换取文件的尺寸,相同长度的音乐文件,用 *.mp3 格式来储存,一般只有 *.wav 文件的 1/10,因而音质要次于 CD 格式或 WAV 格式的声音文件。
2、PCM ——最常用的音频格式:PCM 中文称脉冲编码调制(Pulse Code Modulation),是 70 年代末发展起来的,记录媒体之一的 CD,在 80 年代初由飞利浦和索尼公司共同推出。脉码调制的音频格式也被 DVD-A 所采用,它支持立体声和 5.1 环绕声,1999 年由 DVD 讨论会发布和推出的。脉冲编码调制的比特率,从 14-bit 发展到 16-bit、18-bit、20-bit 直到 24-bit;采样频率从 44.1kHz 发展到 192kHz。PCM 脉码调制这项技术可以改善和提高的方面则越来越来小。
3、AMR ——AMR 全称 Adaptive Multi-Rate,自适应多速率编码,主要用于移动设备的音频,压缩比比较大,但相对其他的压缩格式质量比较差,由于多用于人声,通话。
4、Opus ——WebRTC 的首选音频:集成了两种声音编码的技术:以语音编码为导向的 SILK 和低延迟的 CELT。Opus 可以无缝调节高低比特率。在编码器内部它在较低比特率时使用线性预测编码在高比特率时候使用变换编码(在高低比特率交界处也使用两者结合的编码方式)。Opus 具有非常低的算法延迟(默认为 22.5 ms),非常适合用于低延迟语音通话的编码,像是网上上的即时声音流、即时同步声音旁白等等,此外 Opus 也可以透过降低编码码率,达成更低的算法延迟,最低可以到 5 ms。在多个听觉盲测中,Opus 都比 MP3、AAC、HE-AAC 等常见格式,有更低的延迟和更好的声音压缩率。
5、AAC ——直播场景的常胜将军:AAC 实际上是高级音频编码的缩写,苹果 ipod、诺基亚手机也支持 AAC 格式的音频文件。AAC 是由 Fraunhofer IIS-A、杜比和 AT&T 共同开发的一种音频格式,它是 MPEG-2 规范的一部分。AAC 所采用的运算法则与 MP3 的运算法则有所不同,AAC 通过结合其他的功能来提高编码效率。AAC 的音频算法在压缩能力上远远超过了以前的一些压缩算法(比如 MP3 等)。它还同时支持多达 48 个音轨、15 个低频音轨、更多种采样率和比特率、多种语言的兼容能力、更高的解码效率。总之,AAC 可以在比 MP3 文件缩小 30%的前提下提供更好的音质。
6、Lyra 一一人工智能的新产物:Lyra 是 google 提出的一种基于深度学习的低码率语音编解码器,在 google Duo 中使用,能够实现每秒 3kb 的网络下清晰地聊天。将数据分为 40ms 每帧,提取特征(log mel spectrograms)压缩,在 decoder 部分一个生成模型将特征转为语音信号。与传统参数音频编解方法混合激励线性预测(MELP 通过计算和传输线性预测系数来提高效率)结构很相似,但是传统参数音频编解码生成的数据音质比较差,而生成模型(如 WaveNet)已经被证明是可以实现从特征生成多个语音采样点。(WaveNetEQ 利用生成模型实现丢包补偿)。 MBE(多频带激励,将频域划分为相等大小的频带,传输频带的能量,并确定每个频带的有声/无声信息)的解码器 Griffin-Lim 算法是在仅提供能量而没有相位信息的情况下恢复信号的方法,与 WaveNet 系列算法相比,Griffin-Lim 算法在音质方面要差很多。但是 WaveNet 等方法计算量较大,Lyra 中使用超过 70 种语言的数千小时的数据来训练 WaveRNN 的变种模型来实现较高的音质和较低的复杂度。
三,声音是如何在 RTC 中传输的
先看一下音频编码和解码的整体流程:
人说话的声音经过数字采样后,即为 PCM 原始采样数据,从上图中可以看出,无论什么编解码类型,都是将 PCM 编码压缩后方便传输,然后再解码恢复成 PCM 的过程。
首先看在早期的固定电话时期,固话时期的编解码主要有 G.711a/u;G.729;G.722;G.723;G.726 等等;这些编解码基本都是使用 8KHZ 的采样的,由于当时的通讯只是主要是人与人之间说话,8K 采样率足以覆盖人说话声音的最主要部分能量范围了。最初的 G.711a/u 属于无损编码,但是由于要 64Kbps 的速率(但是 ADSL 电话线的速率也就是 64K 带宽)。
不知道还有多少朋友知道 ADSL 上网,最初就是用这 64K 的电话线传输,但是 G.711 把带宽占光了,还怎么传输数据呢,因此后续逐渐被压缩率更高但是效果也不逊色的 G.729,G.726 等编解码取代使用。其中 G.722 属于比较出名的一个系列,G.722.1 是 polycom 研发的编解码,而 G.722.2 就是 AMR-WB+,下面提到的 AMR-WB 的超宽带版本。
接下来到了移动通信(2G/3G)时代,由于通信的内容仍然是人与人之前的说话,所以编解码仍然是采用语音编解码,移动侧主要是使用的 AMR(Adaptive Multi Rate-Narrow Band Speech Codec),AMR-WB(分别是窄带 AMR 和宽带 AMR)。窄带 AMR 虽然仍然使用 8K 采样,但是从其全称可以看出,编解码本身是多速率(8 种速率模式),并且是可以切换的,这个特性的主要原因是适应无线信道和传输通道的情况来自适应。举个例子,可以想象一下,一个基站,如果有 10 部手机通话和 100 部通话,每部手机被分配的信道带宽肯定是不一样的,速率变换则可以根据信道情况进行灵活的速率切换,从而保障更多人的通话。
再往后就是 Volte(4G),也就是大家当前在用的,采用了 AMR-WB(Adaptive Multi-RateWideband Speech Codec);此编解码采用是 16K 采样,比原来高了一倍;产生的效果就是时域上每秒多采样 8K 个数据,频域上覆盖的高频范围更广,声音细节更丰富。不过对于消费者体验来说好像未得到大的提升。
但是到了 4G 时代,随着带宽越来越高,业务发展越来越丰富,为了提升语音清晰度和通话体验,几个大厂推出了 EVS 高清编解码,并作为进入 3GPP 的唯一标准,EVS 兼容了 AMR-NB 和 AMR-WB,同时支持 SWB(超宽带)和 FWB(全宽带)采样(最高到 48KHZ),已经覆盖人耳听到声音的全部频谱范围了。大家手机上可以看到一个“HD”的标签,这个其实就是 E2 了。随着 EVS 的推出以及新业务的推广(像最近的视频彩铃),大家应该可以感受到更丰富的声音体验了。
当然到了 3G/4G 时代,随着互联网的发展,基于互联网的 VOIP 技术也蓬勃发展起来,但是基于互联网的 VOIP 比运营商语音通话面临着更加严峻的复杂网络情况,毕竟不是专网,因此面临的延时带宽问题更加严峻。VOIP 的音频编解码也存在类似的发展阶段,首先是语音编解码,像 iLBC 和 iSLK,这两种编解码都是 GIPS 公司开发的编解码技术,被 Google 收购后,两种编解码技术就用应用在 WebRTC 技术中并且开源了,ILBC 编解码的特点是减少每个音频编码帧之间的冗余性,每帧独立可解,因此具备了很不错的抗丢包特性。ISAK 除了继承 ILBC 能力之外,好像是增加了带宽预测功能。红极一时的 Skype 使用的编解码则是 silk,silk 编解码对于语音有特别好的编码效果,据说可以使得通话双方听起来像双方在同一个房间里一样。
明星级开源项目-WebRTC 为了提升语音体验,默认使用的编解码就是 Opus(silk 编解码和 celt 编解码的组合);此编解码器内一个 Music detector 去判断当前帧是语音还是音乐,语音选择 silk,音乐选择 celt;同时 opus 支持 PLC(丢包补偿),而且具备较好的网络抗丢包特性。
其实音频也不只在通讯领域使用,像 AAC(Advanced AudioCoding(高级音频编码)),是一种由 MPEG-4 标准定义的有损音频压缩格式,由 Fraunhofer 发展,Dolby, Sony 和 AT&T 是主要的贡献者。在使用 MP4 作为各种内容的容器格式的新多媒体 MPEG-4 标准中,它是 MPEG Layer III / MP3 的天然后继者。AAC 编解码跟 Mpeg4 的视频编解码协议类似,也分为多 Profile,LC-AAC(低复杂性,普通质量)和 HE-AAC(高效性,高质量);同时 AAC 在直播领域也是大放光彩。
四,总结
有的小伙伴会问,这么多音频编码格式,我到底该选哪个;从文章中我们可以看到,没有任何一个音频编码格式可以覆盖所有应用场景,在不同的场景下根据自己的需求去选择一个适合的编码器是个明智的选择。
版权声明: 本文为 InfoQ 作者【anyRTC开发者】的原创文章。
原文链接:【http://xie.infoq.cn/article/5bc1ad9c9b4c1f71d8bdac2a6】。文章转载请联系作者。
评论