Press "Enter" to skip to content

基于深度学习的音频编/解码的实现与落地挑战

本站内容均来自兴趣收集,如不慎侵害的您的相关权益,请留言告知,我们将尽快删除.谢谢.

今年也是基于深度学习的音频编解码的元年,各家公司都发布了一些编解码器。声网在今年也公布了自研的 AI-Codec 技术——Silver。在本场大会上,声网Agora 音频算法专家冯建元分享了基于深度学习的音频编解码器的研究,以及落地挑战。关注本文标签「RTE 技术分享」,我们将陆续更新更多演讲干货。以下为演讲实录。

 

 

▲图:声网Agora 音频算法专家 冯建元

 

 

冯建元认为目前市面上主流的基于深度学习的音频编码解码器主要有 Silver、Lyra、Satin、LPCnet、SoundStream 这几种,他们分别有各自的优缺点,于是乎整理了一张表格,显示得更佳直观。

 

 

可以从这张表格中很清楚的看到 Silver 和 Satin 支持的比特率是最高的,LPCnet 支持的比特率是最低的,其它几个 AI codec 则相差无几,同时只有 SoundStream 是支持音乐的。

 

 

冯建元讲解了一下基于深度学习的编解码的具体的几种实现框架,第一种是基于 AI-vocoder。

 

 

首先是是特征提取,然后编码压缩,最后提取特征,可以使用 AI-vocoder 这个框架去完成整体的操作。AI-vocoder 在 TTS 等场景中可以获得十分接近人类正常说话的水平的 MOS 分。他的核心有两点:首先逐点生成的自回归模型可以带来一个巨大的音质提升,同时编码算力低,而解码算力高,更加适合语音的编码解码。

 

 

第二种是基于 Auto-encoder 的一个自编码的框架,上面的那个框架虽然可以在纯人声的场景下表现不错,但是在噪声鲁棒性等方面表现总是不尽如人意,于是就有了基于 Auto-encoder 以及变种的深度学习,这个框架在降噪、变声等更为专业的领域都有着不错的效果。

 

 

Auto-encoder 的核心也很简单,就是利用深度学习的模型来做到端到端的音频压缩和编码、解码。特点是这种方式的编解码算力都比较高,但可以同时处理语音和音乐。

 

 

 

基于深度学习的编解码器存在三个问题:

 

第一个是噪声鲁棒性, 在噪声的情况下,由于低码率的传输,会影响我们对噪声的听感,有的噪声不会令人厌烦。但是如果在一个低码率的情况下,它的噪声可能会变成杂音,听上去很不自然,降低了听感。

 

第二个是移动端部署的实时性, 也需要做很多的工程部署挑战。算力比较受限的情况下,做实时的编解码,甚至还需要多路同时进行解码的工作,这时都会受到实时性的挑战。

 

第三个是低码率的实时生成的稳定性, 在这里会发现模型的算力越大,码率越高,自然度就越好。但是 AI 模型在一些低码率的情况下,本就需要更多的算力来保证自然度,而模型又同时受到算力的影响,也不能太大。

 

我们从以下两个音频对比,就可以直观感受其中存在的问题。

 

 

首先看一下深度学习编解码器问题的大致的框架。AI 在降噪领域已经相对成熟,如果你是做一款语音编解码器,你要传递的信息就是语音,这时 AI 降噪就可以做一个很好的前处理。

 

在做编解码器之前,我们先用 AI 降噪的方法来实现。基于深度学习网络的降噪,能够很好地提取语音信号,把这些噪声、杂音都去掉。这里要注意降噪算法需要和编解码器的采样率相匹配,在编解码之前我们加入了一个实时的全频带的 AI 降噪算法,最高支持到 48K Hz 的采样率的语音信号的提纯、降噪。

 

这样,大部分的噪声已经被去除,就可以很好地降低码率,同时降低模型的编解码的难度。

 

但是 AI 在降噪也是引入了额外的算力。在移动端部署时,基于深度学习的降噪和传统算法的语音分析作为编码,能够在像高通 855 的单核上实现 0.05RTF 的实时编码,也就是可以 20 倍实时编码,算力可以做到很低。

 

 

Silver 语音编解码器有四个优点:

 

第一个是可以结局噪声鲁棒性的问题, 加入了实时全频带的 AI 降噪算法,可以更大程度上降低噪音。

 

第二个是移动端的实时性, 基于深度学习的降噪和传统算法的语音分析相结合进行编码,高通 855 单核上可以实现 0.05RTF 的实时编码,同时有基于深度优化的 WaveRNN 模型以及极小的算力实现语音解码,高通 855 单核上可以实现 0.125RTF 的实时解码。

 

第三个是有超低码率, 仅仅只有 3.6kbps。

 

第四个是自然, 这也是最重要的,它支持高音质,支持 32KHz 采样率,超宽带音质编码,音色饱满自然,给你不一样的体验。

 

 

市面上主流的解码/编码器的比较图如下。

 

 

 

 

大概可以分为三个方向来说明,首先是前处理,AI-NS 降噪算法可以提升语音信噪比,从而减少低码率带来的 artifact。

 

其次是编码,基于传统算法的分频带特征提取(基频、子带频谱包络、能量等),而基于 RVQ、距离编码等方法可以实现特征编码,从而达到节省码率的效果。最后一步是解码,采用自回归模型和宽带拓展的 WaveRNN 模型实现模型算力的精简,基于自研的多平台 AI 推理引擎实现的非对称量化、混合精度推理、计算压缩解码耗时会更少。

 

 

在传统的编解码里面,码率越低,能支持的采样率也越低,听起来高频部分会有很多衰减。同时在噪声环境下,听到了风噪,由于它的降噪能力,又能体现出在噪声环境下的低码率的编解码的能力。所以,在采样率和抗噪能力上,都能够有不错的提升。

 

以上是关于编解码器本身的能力,但进行在移动端的部署,就会遇到很多需要去权衡码率、算力的效果这些方面的问题和挑战。以 AI-vocoder为例给大家进行介绍。

 

刚提到,越大的模型,算力越大,越能够提供比较好的声音还原能力。对 TTS 或者是语音生成的模型进行对比,不同的模型生成,跑出来的主观评测的分数。

 

例如 WavNet 的算力是 100G,几乎在 CPU 上完全不可能,只能在 GPU 上的,甚至在 GPU 上也不能做到实时的算力。它的评分能达到 90,几乎接近于满分。比它小的是 WavRNN 模型,算力降了 6 倍左右,其实可以达到 16.3GFLOPS,它的分数也降了不少,降到了 75 分。

 

这样一个算力在一些 GPU 端,已经可以做到实时,但是如果放到 CPU 上,或者手机的移动端上,还不能实现。比如LPCnet已经降到了 3GFLOPS,大概是 70 分,大概是可用的分数线。

 

可以看到,模型越大,主观生成的音频质量越好。但是要找到其中的一个平衡点即用多大的算力去能够实现实时性,同时分数又不会降得太低。可以想到在自回归的逐点生成的编解码器,如果在低频段用逐点生成,高频采用一些 BWE 的技术进行高频的扩展,这样就会损到很多高频带宽编解码的算力,就能够把它降下来。

 

主要是看做了哪些处理。前处理部分,提升信噪比也是减少码率的较好的措施。如果经过了 AI 降噪以后的语音,再做编解码,自然就可以把它的码率压到更低,同时在还原时又不去影响它的音质。

 

另外在编码的时候,基于传统算法的分频带的特征提取,可以分成不同的子带,每个子带有不同的处理形式。通过一些特征的建模,在编码处就可以把它分成不同的频带去针对性地处理。

 

传统方法也有类似,比如距离编码,可以实现特征维度的压缩。这样,可以把码率压到 3.6K pbs。在解码端的时候,自回归模型就会把它拆成两个部分,去做低频的部分,然后结合 BWE,实现对模型的改造,这样可以实现模型算力的精简。

 

在部署的时候,比如 ARM 平台数据一般以4为单位组合计算,在其他平台基于不同芯片计算优化也不同,会涉及到多平台的优化。这里我们有一个自研的多平台的 AI 推力引擎,去实现量化、混合精度推理的加速,在工程的角度上进一步压缩解码端的耗时。

 

最后我们可以看看深度学习现在到了一个什幺样的阶段,以及后续会有哪些可以做的方向。对于现在还是针对于极低码率的编码,看看深度学习能够把音频还原到什幺样的程度。其实用深度学习,已经能够实现在 10K 以下的码率,超越传统的编解码器。

 

再往上,传统算法是在 100K pbs 以上,这已经能够做到我们对音频的编解码透明的状态,我们编解码后,大家已经分辨不出它是否经过编解码。在这种角度上说,AI-codec 现在还没有能够完美地还原音频编解码的能力。

 

再比如大于 100K pbs,我们甚至可以编一些立体声的声音。超过 100K pbs,甚至可以编一些多通道的音频。再对音质体验的更高的要求,如果能把码率降下来,对于基于深度学习的音频编解码器会带来更多收益,这也是冯建元的研究方向。

 

除了编解码本身,为了保证整条音频链路沟通的流畅性,我们还需要很多弱网的丢包的策略。比如一个比较低码率的编解码器,能够更好地去冗余、重传,这也可以更方便地做。比如本来冗余只能多做一倍,现在因为码率比较低,可以做更多倍的冗余,在弱网情况下,它的音质体验会更好。

 

对于生成的模型,在做丢包补偿,如果丢一个包,后续可以把这个包再恢复出来,这也是不错的尝试,后续我们会给大家放一个 demo。

 

我们现在基本上能做到把深度学习的编解码器放到移动端,但是我们现在能最多做到的解码,是在高通 855 芯片上做到8路同时的解码。但是如果在一些低端的手机,可能就做不了这幺多路,还需要在低端算力的多路编解码的能力上去进行一些持续的优化。

 

除了 Agora 本身能够降低码率外,其实还能够在一些丢包补偿上进行进一步提升。如果是 Agora 的解码部分,即 AI 的声码器,冯建元对做丢包补偿效果做了音频展示。

 

可以听到在补偿之前,因为有丢包,所以声音是不连续的,在可懂度方面下降得很快,在弱网情况下就很影响听感,甚至不知道对方在说什幺。

 

在经过 PLC 之后,模型是一样的,可以复用 AI 的解码能力,就能够把丢失掉的包的信息补偿回来。

 

总结:基于 TTS 的发展,我们一步一步地实现了深度学习的音频编解码器。类似的这种框架,可以在音频的框架中再找一找,可能还有其他方向的发展。

 

在现阶段,音频编解码器还面临着很多比如噪声鲁棒性、实时性以及低码率的音频生成的稳定性的问题。

 

Silver 提供了一种可落地的实现方案,它的特性主要来源于 AI 降噪对于它的前处理,解决了噪声的问题,采用频带扩展、自回归模型相结合的形式,还有多平台的工程优化,最后实现了移动端的部署。

 

在深度学习的音频编解码中,还有高音质、多通道以及对抗弱网等方向,期待有更多发展。

 

 

对于未来的深度学习的音频编码/解码将有三点展望,首先第一点是对于低码率、高保真编/解码器能力边界的探索,其次是增加立体声、多通道音频的编/解码的能力,同时增加弱网抗丢包等场景的策略完善,最后是对于低端算力的多路编解码的持续算力优化。

 

Be First to Comment

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注