【大模型】大模型时代的语音合成:音频的离散化表示

这篇具有很好参考价值的文章主要介绍了【大模型】大模型时代的语音合成:音频的离散化表示。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


【大模型】大模型时代的语音合成:音频的离散化表示,大模型,音视频,语言模型,人工智能,音频,视频编解码

📊什么是音频离散化

🎬音频离散化是什么

在自然语言处理(NLP)中,文字是天然的离散特征,譬如我们可以通过维护一个词表,将下面一句话表示成离散的token序列,最终映射到词典对应的 embedding 上:

word_dict = {"大": 0, "模": 1, "型": 2, "时":3, "代": 4, "的": 5, "语": 6, "音": 7, "合": 8, "成": 9}
# sentence
sent = "大模型时代的语音合成"
# tokens
tokens = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

在语音领域,音频的原始表示是连续的音频信号(以时间为一轴的波形图)。通常情况下,我们习惯于选取固定长度的音频信号(窗口),以固定的重叠部分和步长,通过模型编码的方式得到固定维度的向量表示,如下:

# 原始的音频窗口数据
audio_wind_data = [0.14, 0.98, 0.25, ... ...]
# 经过模型 M 卷积后
audio_feature = M(audio_wind_data)  # e.g. shape = [256, ]

这种方法虽然做到了音频的向量表示,但未够将音频编码到一个固定的 “词表” 中(通常成为码本,codebook)、进而实现音频的离散化表示(token)。本文将要介绍的方法,即尝试将音频编码为离散化表征,该方法有两大优点:

音频压缩:将连续的特征以离散化的方法近似表示,可以显著减少音频文件的大小;
类LLM语音合成模型的前置模块:音频离散化,意味着可以用离散的token序列表征音频,就可以用NLP中的建模思路(特指LLM)来实现语音合成任务。

🌈SoundStream、Encodec

以下代表性模型,核心思想都围绕 残差矢量量化(RVQ,Residual Vector Quantization),我们先详细介绍 RVQ 的原理,再简要介绍以下工作的异同与特点。

矢量量化(RQ)基于向量近似表征的朴素方法:对于一个原始的向量 v,我们有一个码本(CodeBook)W,码本中有 n个编好序的码本向量 ,我们希望将 v用码本中与之最接近的向量ω 来表示(评估向量相似度的方法有很多,欧式距离、余弦相似度等),这样向量 v 就可以用离散的 token i来表示了,上述方法我们称为矢量量化(RQ)。

RQ 看上去已经能够达到 音频向量离散化表征 的目标了,但这个朴素的方法很难在 表示效果与存储空间 中找到平衡(此处细节非本文讨论的重点,按下不表):

  • 希望ω对 v 的描述尽可能准确,则 CodeBook 的向量个数 通常要大到难以接受;
  • 想要控制 n 在一个合理的区间,那么 ω 与 v 之间的距离又会比较大,容易造成音频的失真。

残差矢量量化(RVQ,Residual Vector Quantization) 以一种巧妙的 “分层描述” 方法来解决 效果与存储空间 的平衡问题:将量化过程分成多个阶段(与量化器数量有关),每个阶段(或量化器)都有自己的小码本;一个原始的输入向量 v 会先由第一层码本中最近的码本向量(ω,i) 表示,然后计算v 和 (ω,i) 之间的残差(或更直观地称之为误差),交由下一层量化器更精确地表示,以此类推。具体流程如伪码所示:

Input: v0
Quantizers: Q = (q1, q2, ..., qn)
Codebooks: CB = (cb1, cb2, ..., cbn)
            cbn = {wn1, wn2, ..., wnm}

v = v0
for i, q in enumerate(Q):
    wi = min_dis(v, cbi)
    v = v - wi

Output: Q(v) = w1 + w2 + ... + wn

RVQ 的优点包括以下三个方面:

  • 较小的码本:每个量化器都只需要近似表示向量、更精确的近似通过逐层传递残差完成,因此每层的码本可以设计得比较小,总码本也远小于传统的 VQ 方式;
  • 更高的压缩比:更小的码本意味着需要更少地比特数表达,也就意味着能够在更低的比特率下达到相同的量化精度,因此能够提供更高的压缩比。
  • 更高质量的还原效果:RVQ 可以在较低的比特率下达到相同的量化精度。

通常情况下 RVQ 的压缩与还原,需要由 Encoder、Quantizer 和 Decoder 组成的神经网络来实现,他们分别用来做特征编码、矢量量化和音频还原,也即:

  • Encoder:将输入的原始音频信号 x,编码为稠密、长度固定的向量 v ;
  • Quantizer:使用码本向量,描述向量 v,实现向量的离散化表示;
  • Decoder:将离散化表征还原为原始向量、乃至原始的音频信号。

🌂 SoundStream

SoundStream 的功能是提供音频的离散化压缩表示,结构上是一个由编码器、解码器和量化器组成的神经网络,以自监督的方式端到端训练。其中,
【大模型】大模型时代的语音合成:音频的离散化表示,大模型,音视频,语言模型,人工智能,音频,视频编解码

  1. 编码器
    将输入的音频流,转化成 feature sequence;Encoder 部分的结构和 SEANet encoder 一致,但剔除了 skip connection。具体地,由 1 个 1D Conv Layer 和 n 个 EncoderBlock 组成,每一个 Conv block 包含 3 个残差单元和一个 1D 的空洞卷积,最后再接一层 1D Conv Layer。为了确保是可以流式输出的,使用的都是 Casual CNN。

  2. 量化器: 量化器由conv & residual module组成,量化流程如上文所示。

  3. 解码器: 将离散 tokens 还原成音频流。1 个 Conv Layer + n DecoderBlock 组成,其中 DecoderBlock 相当于是 EncoderBlock 的逆操作,由 1 个反卷积接 3 个 residual unit 做上采样,最后再接 1 个 卷积层。

  4. 其它
    SoundStream 在训练的过程中,采用 1)重构损失(语谱) 和 2)对抗训练损失 对模型进行优化。对抗训练中的 Discriminator 的输入是真实音频与解码器还原的音频;

伪码如下:
【大模型】大模型时代的语音合成:音频的离散化表示,大模型,音视频,语言模型,人工智能,音频,视频编解码

🚀Encodec

整体结构与 SoundStream 相似,encoder-decoder支持 streaming & non-streaming 两种推理方式;Quantizer 的 base module 替换成了 transformer,其中第一层量化器是自回归结构(NAR),后续的量化器是非自回归结构(AR);
【大模型】大模型时代的语音合成:音频的离散化表示,大模型,音视频,语言模型,人工智能,音频,视频编解码

在损失函数上,除了 1)mel语谱重构损失 和 2)对抗损失,增加了 3)VQ commitment 损失(针对 encoder 的output 及其量化后的 features 的距离),从而提升量化器对向量描述的效果:
【大模型】大模型时代的语音合成:音频的离散化表示,大模型,音视频,语言模型,人工智能,音频,视频编解码

最后,作者引入了 encoder-decoder 结构中很常见的 Language Model,用于提前预测下一时刻的离散特征;该模块在提高编解码速度的同时,音频表示效果并没有明显降低,这也从侧面验证了利用 LLM 的范式解决语音合成问题的可行性(离散化表示后,万物皆可"生成")。文章来源地址https://www.toymoban.com/news/detail-857796.html

到了这里,关于【大模型】大模型时代的语音合成:音频的离散化表示的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 5G时代下,Android音视频强势崛起,我们该如何快速入门音视频技术?

    作为Android开发者的我们到底应不应该上音视频这条船? 接下来一起分析下。 大趋势 从未来的大趋势来看,随着5G时代的到来,音视频慢慢变成人们日常生活中的必需品。除了在线教育、音视频会议、即时通讯这些必须使用音视频技术的产品外,其它的产品也需要加入音频、

    2024年04月15日
    浏览(79)
  • 5G时代音视频开发前景怎么样?音视频开发需要掌握哪些技术?(1),手把手教你5G时代Webview的正确使用姿势

    你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。 我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你

    2024年04月11日
    浏览(59)
  • 5G 时代来了;还不赶紧学习音视频?

    随着 5G 时代的到来 , 移动技术 的发展不仅带来 网速的提升 ,同时也推动 流量单位成本下降 , 企业通信方式 从 文本消息 到 富媒体消息 ,如今也逐渐向 实时高清音视频升级 ; 防护 工作的持续使得 视频会议、远程办公、线上教学 成为许多人工作中的**“常态” ;对于

    2023年04月14日
    浏览(54)
  • 音视频基础概念(5)——音频基础说明

    现实生活中,音频(Audio)主要用在两大场景中,包括语音(Voice)和音乐(Music)。语音主要用于沟通,如打电话等。目前由于语音识别技术的发展,人机语音交互也是语音的一个应用方向,很多大厂推出智能音箱、语音助手等。音乐主要用于欣赏和陶冶情操,如播放音乐。

    2023年04月08日
    浏览(109)
  • 【FFmpeg】音视频录制 ① ( 查询系统中 ffmpeg 可录制的音视频输入设备 | 使用 ffmpeg 命令录制音视频数据 | 录制视频数据命令 |录制音频数据| 同时录制音频和视频数据命令 )

    在 Windows 系统中 , 使用 ffmpeg 命令 录制 音视频 , 需要先获取 系统的 音视频设备 信息 , 录制 音视频 本质上是从 系统音视频设备 中获取数据 ; 执行 命令 , 可以获取 系统中 ffmpeg 可用的 DirectShow 音视频输入设备 ; 命令参数解析 : -list_devices true : 列出所有 ffmpeg 的 指定类型的可

    2024年04月25日
    浏览(92)
  • 音视频开发:音频编码原理+采集+编码实战

    消除冗余信息,压缩量最大,也叫有损压缩 剔除人耳听觉范围外的音频信号20Hz以下和20000Hz以上; 去除被掩蔽的音频信号,信号的遮蔽可以分为频域遮蔽和时域遮蔽; 频域遮蔽效应 屏蔽70分贝以下,20HZ以下,20000HZ以上 屏蔽分贝小,频率小的声音 两个频率相近发出的声音,

    2024年02月05日
    浏览(61)
  • 【音视频 | AAC】AAC格式音频文件解析

    😁博客主页😁:🚀https://blog.csdn.net/wkd_007🚀 🤑博客内容🤑:🍭嵌入式开发、Linux、C语言、C++、数据结构、音视频🍭 🤣本文内容🤣:🍭介绍AAC格式音频文件解析🍭 😎金句分享😎:🍭你不能选择最好的,但最好的会来选择你——泰戈尔🍭 本文未经允许,不得转发!!

    2024年02月04日
    浏览(55)
  • 音视频八股文(11)-- ffmpeg 音频重采样

    所谓的重采样,就是改变⾳频的采样率、sample format、声道数等参数,使之按照我们期望的参数输出。 为什么要重采样?当然是原有的⾳频参数不满⾜我们的需求,⽐如在FFmpeg解码⾳频的时候,不同的⾳源有不同的格式,采样率等,在解码后的数据中的这些参数也会不⼀致(最

    2024年02月04日
    浏览(102)
  • Android 音视频开发—MediaPlayer音频与视频的播放介绍

    Android多媒体中的——MediaPlayer,我们可以通过这个API来播放音频和视频该类是Androd多媒体框架中的一个重要组件,通过该类,我们可以以最小的步骤来获取,解码和播放音视频。 它支持三种不同的媒体来源: 本地资源 内部的URI,比如你可以通过ContentResolver来获取 外部URL(流

    2024年02月10日
    浏览(61)
  • 音视频开发系列(10):基于qt的音频推流

    今天分享一下利用qt录制音频,然后再利用ffmpeg推流到nginx服务器,最后再利用vlc进行拉流的demo。 首先介绍一下如何利用qt来进行音频的录制,qt的音频录制主要利用qt的QAudioFormat先进行音频信息的配置。主要需要配置以下的信息: 然后使用QAudioDeviceInfo来获取是否支持改设置

    2024年02月02日
    浏览(60)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包