作者 | Teresa、王晶
技术审校 | 王晶、王立众
SoundStream
影音探索
#001#
近日,谷歌又推出了一款基于人工智能的音频编解码器—— SoundStream ,它是一款端到端的神经音频编解码器,可以提供更高质量的音频,同时编码不同的声音类型,包括干净的语音、嘈杂和混响的语音、音乐和环境声音。并且,谷歌宣布这是第一个支持语音和音乐的AI编解码器,同时能够在智能手机CPU上实时运行。
早在今年2月份的时候谷歌就已推出了 Lyra ,一种用于低比特率语音的编解码器,也是基于人工智能对音频进行压缩的(我们在《在3kbps的带宽下还能清晰地语音聊天?》这篇文章中介绍过,大家可以回顾一下)。并在4月份,谷歌宣布对Lyra Android版进行开源,我们正好通过邮件采访到了负责这个项目的产品经理Jamieson Brettle以及主管工程师Jan Skoglund(采访内容大家可以查看《Google Lyra Android版开源 支持3kbps语音聊天》)。
SoundStream V.S. Lyra
现在时隔4个月,谷歌新推出的SoundStream与其之前发布的Lyra又有什么不同呢?
1.网络条件
首先,Lyra强调的是即使在恶劣的网络条件下,也能进行清晰的实时语音通信。所以它更关注在窄带通信情况下的语音传输。(Lyra在3kbps带宽下对比Opus@6kbps,语音输出的质量效果明显优于后者)
而SoundStream不仅关注低比特率传输带宽,并且能在广泛的比特率范围内提供高质量的音频输出。(这里列出了Lyra与SoundStream同样在3kbps带宽下,对语音和音乐的处理对比示例)
语音:
音乐:
这里可以明显感受到在比特率(3kbps)相同的网络条件下,无论是语音还是音乐,SoundStream的输出效果都更优于Lyra。另外,谷歌还表示比特率为3kbps的SoundStream的语音质量要优于12kbps的Opus,并且接近9.6kbps的EVS,而与此同时它的压缩效率还提升了3.2-4倍,这意味着在使用SoundStream进行音频编码时可以输出与Opus和EVS同样的音频质量,而所使用的传输带宽量却比这二者要低得多。
2.编解码器架构
在听完SoundStream和Lyra在相同网络条件下音频效果的对比后,我们来聊一聊二者的架构有何不同。尽管谷歌将SoundStream作为Lyra的一个扩展版本,但它们在压缩音频的过程中却有很大的区别。
- SoundStream
SoundStream 模型架构图
简单来说,SoundStream由包含编码器、解码器和矢量量化器的神经网络组成,都是以端到端的模式去训练。神经编码器将输入的音频流转换为编码信号,再使用特定的矢量量化器进行流数据压缩,最后使用解码器将其转换回音频。SoundStream主要创新点在于使用了残差矢量量化器(Residual Vector Quantizers, RVQ)进行数据压缩,全卷积编码器所生成的向量会带有无限的数量值,为了使得其能够以有限数量的比特流传输到解码器进行解码,必须进行矢量量化,而简单的矢量量化解决不了3 kbps的情景下的超量的码本存储问题,所以SoundStream团队提出的RVQ从第二层开始,每一层都处理前一层的残差,实现层级递进的量化过程,不同数量层的RVQ可以在不同程度上大幅度减少码本的大小,由于量化层可扩展,研究者也可以分别通过添加或删除量化层来轻松增加或减少比特率。在模型训练过程中,SoundStream采用重构损失和对抗损失的组合损失函数对模型参数进行优化,计算损失函数组合的鉴别器使恢复的声音尽可能接近原始未压缩音频。一旦训练完成,编码器和解码器都能够在单独的客户端上运行,并通过网络去高效地传输高质量音频。所以在模型推理部署上,编码器和矢量量化器在发送端,发送压缩后的比特流到接收端,然后接收端的解码器再对音频信号进行解码形成高质量音频。
- Lyra
Lyra 模型架构图
Lyra的架构相对来说比较简单。它主要是由编码器和解码器组成,与传统的参数音频编解码器非常相似。不同的是它会每40ms从输入的语音中提取一次特征或独特的语音属性,然后对其进行量化,最后通过生成模型对这些量化后的语音特征来重新创建语音信号,输出音频。Lyra旨在提取少量的语音数据来重建语音,并在保证低比特率的同时实现高质量的语音传输。另外,谷歌推出的新生成模型也是Lyra中的一大亮点。这里用到的新生成模型是一种低成本的递归生成模型,是一种WaveRNN的变体,它以较低的速率工作,但在不同的频率范围内能够并行生成多个信号,然后在特定的采样率下将这些信号合并成单个输出信号。此生成模型在数千小时的语音数据中进行训练,并像WaveNet一样进行优化,以准确地再现输入音频。
通过对SoundStream和Lyra在模型架构中的分析可以看出,SoundStream更注重在编码端对编码信号使用残差矢量量化压缩;Lyra则是既关注编码端对语音特征的提取,又关注解码端使用生成模型重建语音。
从AI建模角度来看,Lyra主要通过生成模型重建高质量语音信号,而SoundStream借鉴了自编码网络,构建一种端到端的模型,两者都是从数据驱动角度出发,不依赖于传统的信号处理。Lyra目前看只是针对语音信号进行设计,而在SoundStream的框架下可以同时进行语音和音频信号的压缩和增强。
3.支持类型&目前情况
SoundStream相比Lyra有一些新的特点,例如压缩效率更高,支持语音和音乐等多种类型信号,可同时兼顾压缩和增强,尤其在低比特率下性能表现更好。Lyra则仅针对语音信号的处理。
目前,Lyra已对Android进行开源,而SoundStream仍处于试验阶段。谷歌计划将SoundStream整合到下一个版本的Lyra 中,并认为这种集成将利用现有的 API 和工具让开发人员在他们的项目中获得更好的音质和灵活性。
传统 V.S. 人工智能音频编解码器
关于传统音频编解码器与AI音频编解码器的最大区别在于前者依赖于传统的数字信号处理技术和语音生成模型;后者是从数据驱动角度、从大批量声音数据中学习和预测,因此AI音频编解码器很大程度上依赖于模型训练与测试的完备性。
小结
自从谷歌推出Lyra就引起业界的关注,尤其引起了AI语音编码的研究热点。其在3kbps的低比特率下表现出比传统编码器更优的性能,可以将音频压缩到3kbps左右而保持与其他音频编解码器类似的质量,属于一种低比特率的神经网络语音编码器。
这次谷歌又推出的SoundStream仍然是基于神经网络编码方式,在低比特率下有优势,是首个可以处理语音和音乐的AI编码器。据谷歌的发布情况看,它的复杂度应该有较大降低,可以运行在智能手机,推动了AI编码器的实际应用。
SoundStream集成了Lyra在低比特率“语音”方面的能力,还具有对更多声音类型的编码支持,包括清晰的语音、嘈杂的语音、带有回声的语音、音乐和环境声音等。在相同的比特率下,从谷歌目前的测试结果来看SoundStream的性能比当前版本的Lyra效果更好,并且优于同等比特率下的其它多种编解码方式如Opus、EVS等,甚至超过传统编码器在更高速率下的效果。从文献上来看,目前对SoundStream编码器的性能测试使用最多的还是合成语音的数据库,比较期待其对于手机语音通信等场景下的广泛测试和对比结果。
未来是单纯的数据驱动AI建模效果好,还是传统信号处理与AI建模相结合的方式好,还有待于深入研究和广泛测试。另外很期待看到SoundStream的实际应用表现。
参考文章:
https://ai.googleblog.com/2021/08/soundstream-end-to-end-neural-audio.html
https://ai.googleblog.com/2021/02/lyra-new-very-low-bitrate-codec-for.html
https://fossbytes.com/google-soundstream-neural-audio-codec/
特别说明:本文部分内容来自北京理工大学信息与电子学院 副教授,博士 王晶,并为此文进行技术审校,特此感谢。此外,还要感谢业内人士 王立众老师对本文进行技术审校。