0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

探究SoundStream神经音频编解码器

Tensorflowers 来源:TensorFlow 作者:TensorFlow 2021-09-23 09:49 次阅读

发布人:Google Research 研究员 Neil Zeghidour 和 Marco Tagliasacchi

音频编解码器通常可以有效地压缩音频,以此减少对存储空间的需求或网络带宽。理想情况下,音频编解码器对最终用户来说应是透明的,这样解码后的音频在感觉上便可与原始音频几无差别,且编码/解码过程不会存在感知延迟。

在过去的几年里,我们已经成功开发出不同的音频编解码器,如 Opus 和增强型语音服务 (Enhanced Voice Services,EVS),以此满足这些要求。Opus 是一种多功能的语音和音频编解码器,支持 6 kbps(每秒千比特)到 510 kbps 的比特率。

目前它已被广泛部署在视频会议平台(如 Google Meet)和在线媒体服务(如 YouTube)等各种应用中。EVS 则是由 3GPP 标准化组织开发、针对移动电话 (Telephony) 的最新编解码器。与 Opus 一样,它也是多功能编解码器,可在 5.9 kbps 至 128 kbps 之间的多个比特率下运行。

这两种编解码器,无论使用哪一种,只要是在中低比特率(12 至 20 kbps)下重建的音频,其质量都很好。但是若在非常低的比特率 (⪅3 kbps) 下运行时,音频质量便会急剧下降。虽然这些编解码器通过利用人类感知方面的专业知识,以及精心设计的信号处理流水线,能够最大限度地提高压算法效率,但人们仍希望用机器学习方法来取代这些人工流水线,通过数据驱动的方式对音频进行编码。

今年早些时候,我们发布了 Lyra,一个用于低比特率语音的神经音频编解码器。在“SoundStream:一个端到端神经音频编解码器”一文中,我们介绍了一个新颖的神经音频编解码器,它能提供更高质量的音频,并扩展至编码不同的声音类型(包括干净的语音、噪音和混响的语音、音乐和环境声音),这推动了进一步的发展。

SoundStream 不仅是第一个用于语音和音乐的神经网络编解码器,还能在智能手机 CPU 上实时运行。此外,它还具备在广泛比特率范围内,以单一训练模型呈现最高质量的能力这代表着可学习编解码器方面的一个重大进步。

SoundStream:一个端到端神经音频编解码器

https://arxiv.org/abs/2107.03312

从数据中学习音频编解码器

虽然人们可以毫不费力地推理如,话题持续时间、频率或对话中事件先后顺序等日常的时间概念,但这类任务对于对话代理而言则具有较大的挑战。例如,目前的 NLP 模型在执行填空任务时,经常会做出糟糕的决定(如下图所示),因为我们通常会假设其在推理方面仅具备基本的世界知识水平,或者需要理解整个对话回合中时间概念之间显性和隐性的相互依赖关系。

SoundStream 训练和推理。在训练过程中,使用重建和对抗性损失的组合对编码器、量化器和解码器参数进行优化,这些损失是由判别器(训练后用于区分原始输入音频和重建的音频)计算得出。在推理过程中,发射器客户端上的编码器和量化器将压缩的比特流发送到接收器客户端,然后接收器客户端就能对音频信号进行解码

利用残差向量,量化学习可

扩容的编解码器

SoundStream 的编码器可产生无限多值的向量。为了用有限的比特数将这些向量传输至接收器,需要用一个与有限的集合(称为码本)接近的向量来代替它们,这个过程被称为向量量化 (Vector quantization)。这种方法在比特率为 1 kbps 左右或更低的情况下效果很好,但在使用更高的比特率时,很快就会达到极限。例如,即使比特率低至 3 kbps,且假设编码器每秒产生 100 个向量,也需要存储一个包含超过 10 亿向量的码本,这在实践中并不可行。

在 SoundStream 中,我们提出一个新的残差向量量化器 (RVQ) 来解决这个问题,该量化器由多层组成(在我们的实验中多达 80 层)。第一层以中等分辨率对代码向量进行量化,接下来的每一层都对前一层的残差错误进行处理。通过将量化过程分为几层,可以让码本的大小缩减很多。举例来说,在比特率为 3 kbps、每秒产生 100 个向量的情况下,如果使用 5 个量化器层,码本大小会从 10 亿变成 320。此外,通过增加或删除量化器层,我们可以轻松地分别提高或降低比特率。

由于网络条件在传输音频时可能会发生变化,理想情况下,编解码器应是“可扩容的”,这样它就可以根据网络状态提高其比特率。虽然大多数传统的编解码器都是可扩容的,但以前的可学习编解码器需要针对每个比特率专门进行训练和部署。

为了规避这一限制,我们利用 SoundStream 中量化层的数量来控制比特率,并提出了一种称为“量化器丢弃”的新方法。在训练期间,我们随机丢弃一些量化层来模拟不同的比特率。这能够让解码器在任何比特率的输入音频流中展现出良好的性能,从而帮助 SoundStream 形成“可扩容性”。如此一来,单一的训练模型可以在任何比特率下运行,并且与针对这些比特率专门训练的模型具有同样好的性能。

SoundStream 模型之间的比较(越高越好):在 18 kbps 下对这些模型进行训练,分为采用量化器丢弃(比特率可扩容)、不借助量化器丢弃(比特率不可扩容)并用可变数量的量化器评估,或在固定比特率下训练和评估(特定比特率)。与特定比特率的模型(每个比特率都有不同的模型)相比,由于采用量化器丢弃,可扩容比特率模型(针对所有比特率使用单一模型)并没有损失任何质量

最先进的音频编解码器

3 kbps 下的 SoundStream 优于 12 kbps 下的 Opus,且在 9.6 kbps 下与 EVS 的质量接近,而且使用的比特少了 3.2 倍至 4 倍。这意味着用 SoundStream 编码的音频可以提供相似的质量,而使用的带宽却大大降低。此外,在相同的比特率下,SoundStream 的性能优于当前版本的 Lyra(基于自回归网络)。Lyra 已针对生产使用进行部署和优化,与之不同的是,SoundStream 仍然处于实验阶段。在未来,Lyra 将整合 SoundStream 的组件,以提供更高的音频质量并降低复杂性。

SoundStream 与 Opus、EVS 和原始的 Lyra 编解码器相比,性能的优越性在这些音频实例中得到了体现,以下是其中的一部分。

音频实例

https://google-research.github.io/seanet/soundstream/examples

联合音频压缩和增强

在传统的音频处理流水线中,压缩和增强(去除背景噪音)通常由不同的模块执行。例如,可以在音频压缩之前,在发射器端应用音频增强算法,或者在音频解码之后,在接收器端应用此算法。在这样的设置中,每个处理步骤都会造成端到端的延迟。

与之相反,我们采用独特的方式设计 SoundStream,使得压缩和增强可以由同一个模型联合执行,而不增加整体延迟。在下面的例子中,我们证明,通过动态地启用和停用去噪(5 秒不去噪,5 秒去噪,5 秒不去噪,以此类推),可以将压缩和背景噪音抑制结合起来。

原始的有噪音音频

https://www.gstatic.com/soundstream_examples/ai_blog/soundstream_controllable_enhancement_noisy.wav

去噪输出*

https://www.gstatic.com/soundstream_examples/ai_blog/soundstream_controllable_enhancement_denoised.wav

*通过间隔 5 秒启用和停用去噪功能来演示

结论

在需要传输音频时,无论是在线播放视频,还是在电话会议期间,都需要高效的压缩。对于改善机器学习驱动的音频编解码器来说,SoundStream 是非常重要的一步。它的性能优于最先进的编解码器(如 Opus 和 EVS),可以按需增强音频,并且只需部署一个可扩容的模型,而不需要部署很多。

SoundStream 将作为下一次改进版 Lyra 的一部分发布。通过集成 SoundStream 和 Lyra,开发者可以利用现有的 Lyra API 和工具进行开发工作,既获享灵活性,也拥有更好的音质。我们也会将其作为一个单独的 TensorFlow 模型发布,供实验使用。

致谢

TimeDial 研究是 Lianhui Qi、Luheng He、Yenjin Choi、Manaal Faruqui 和本文作者共同努力的结果。Disfl-QA 研究是 Jiacheng Xu、Diyi Yang 和 Manaal Faruqui 的合作成果。

编辑:jq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 解码器
    +关注

    关注

    9

    文章

    1073

    浏览量

    40145
  • 噪音
    +关注

    关注

    1

    文章

    157

    浏览量

    23774
  • 机器学习
    +关注

    关注

    66

    文章

    8105

    浏览量

    130540

原文标题:SoundStream 神经音频编解码器,无损音乐顷刻入耳

文章出处:【微信号:tensorflowers,微信公众号:Tensorflowers】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    集成电源管理和音频编解码器TPS65950数据表

    电子发烧友网站提供《集成电源管理和音频编解码器TPS65950数据表.pdf》资料免费下载
    发表于 03-06 11:15 0次下载
    集成电源管理和<b class='flag-5'>音频</b><b class='flag-5'>编解码器</b>TPS65950数据表

    TPS65920和TPS65930集成电源管理/音频编解码器数据表

    电子发烧友网站提供《TPS65920和TPS65930集成电源管理/音频编解码器数据表.pdf》资料免费下载
    发表于 03-06 10:55 0次下载
    TPS65920和TPS65930集成电源管理/<b class='flag-5'>音频</b><b class='flag-5'>编解码器</b>数据表

    视频编解码器-晶振应用选型方案简介

    随着科技的日新月异,视频编解码技术也将迎来新的发展机遇,5G网络的普及将进一步提升视频传输速度和质量,为视频编解码器的发展提供更广阔的空间。
    的头像 发表于 12-09 10:55 463次阅读
    视频<b class='flag-5'>编解码器</b>-晶振应用选型方案简介

    使用具备SigmaDSP内核的编解码器是否必须载入SigmaDSP程序才能使用?

    目前预计使用ADAU1761连接两个MEMS数字麦克风, ADAU1761与ADAU1361相比, ADAU1761多了SigmaDSP内核. 使用具备SigmaDSP内核的编解码器是否必须
    发表于 11-30 07:31

    密勒调制副载波编解码器的FPGA实现

    电子发烧友网站提供《密勒调制副载波编解码器的FPGA实现.pdf》资料免费下载
    发表于 10-26 11:10 0次下载
    密勒调制副载波<b class='flag-5'>编解码器</b>的FPGA实现

    基于VHDL语言的HDB3码编解码器设计

    电子发烧友网站提供《基于VHDL语言的HDB3码编解码器设计.doc》资料免费下载
    发表于 10-13 09:22 0次下载
    基于VHDL语言的HDB3码<b class='flag-5'>编解码器</b>设计

    如何在嵌入式系统中使用音频编解码器更轻松地优化音频性能?

    作者:Jacob Beningo 许多设计人员在其基于微控制器的嵌入式系统设计中加入了音频编解码器,以提供高保真音频。但在这样做之前,他们必须弄清楚如何对其应用进行音频
    的头像 发表于 10-03 14:34 606次阅读
    如何在嵌入式系统中使用<b class='flag-5'>音频</b><b class='flag-5'>编解码器</b>更轻松地优化<b class='flag-5'>音频</b>性能?

    使用STM32L1xx微控制器与外部I2S音频编解码器播放音频文件

    电子发烧友网站提供《使用STM32L1xx微控制器与外部I2S音频编解码器播放音频文件.pdf》资料免费下载
    发表于 09-21 11:30 2次下载
    使用STM32L1xx微控制器与外部I2S<b class='flag-5'>音频</b><b class='flag-5'>编解码器</b>播放<b class='flag-5'>音频</b>文件

    ES8336低功耗音频编解码器规格书

    ES8336低功耗音频编解码器规格书
    发表于 06-13 18:13 3次下载

    ES8388音频编解码器规格书

    ES8388是一种高性能、低功率和低成本音频编解码器。它由2路ADC、2路DAC、3路DAC组成,耳机麦克风放大器放大器、数字音效,以及模拟混频和增益功能。该设备使用高级多位Δ-∑调制技术在数字和模拟多位delta-sigma调制器使该设备对时钟抖动的低灵敏度和低带外噪声
    发表于 06-13 18:11 7次下载

    如何获得ESP8266上的opus编解码器

    我想要 ESP8266 上的 opus 编解码器(尤其是解码器),因为 128 kbps 应该足够用便宜的 I2S DAC 来传输音频。我认为这非常重要,因为 opus 可以让人们从互联网上获取
    发表于 06-12 06:54

    imx8mp - wm8962编解码器音频的问题求解

    我的音频编解码器 - WM8962 有问题。 我在自己的平台上工作,以 imx8mp-devkit 为模型。 图表: 将设备添加到设备树: reg_audio_pwr: 调节
    发表于 06-09 07:50

    如何将多个AK5554编解码器与i.MX8MN SAI线集成?

    我目前正在从事一个项目,涉及在 i.MX8MN 平台上将两个 AK5554 编解码器与同一条 SA5I 线路集成。我的目标是以这样一种方式配置系统,使其有效地充当八个音频通道,所有通道都连接到正确
    发表于 05-18 06:15

    phycore iMX8Mplus如何将WM8960音频编解码器与其集成?

    我们正在开发 phycore i MX 8M plus,我们正在尝试将WM8960 音频编解码器与其集成。 我们已经添加了我们的 dts 文件,我们也能够生成 dtb 文件,但是生成的 dtb 文件
    发表于 05-17 08:06

    TLV320AIC3100音频编解码器启动问题求解

    嗨,团队,我们正在研究 IXM8MM 定制板。我们使用带有 imx8mm 和 Android 11 代码库的 tlv320aic3100 音频编解码器。面临一些与MCLK相关的问题。当我尝试播放音频
    发表于 05-17 08:03