Moshi论文精度 Moshi: a speech-text foundation model for real-time dialogue

  • Code, Paper: Moshi: a speech-text foundation model for real-time dialogue

  • 整体概述

    • Moshi是一个多流语音到语音Transformer模型,能够实现与用户的全双工语音对话。它基于Helium构建,是一个从零开始创建的文本大型语言模型(LLM)
    • 引入了“Inner Monologue”,使得在训练和推断过程,该过程中同时处理文本和音频标记,使模型可以利用文本模态的知识,但仍保持为一个语音到语音系统
    • 设计为多流架构,允许模型同时进行说话和聆听,不需要明确地控制讲话轮次,以支持实时对话
    • 提出了Mimi,一种神经音频编码器,通过残差向量量化(RVQ)和知识蒸馏技术将语义和声学信息整合进单一tokenizer中,以高效且高质量地捕捉用户输入音频并输出声音
  • Helium大语言模型

    • Helium是基于Transformer的自回归语言模型,做了如下改进:在attention block,feed-forward block以及output layer之前使用了RMS Norm;使用RoPE旋转位置编码;在feed-forward block中,使用门控线性单元GLU;tokenizer使用了unigram model(from sentencepiece)
    • 预训练数据只保留了英文数据,做了数据去重和质量过滤
  • Audio Tokenization

    • 背景:
      • 声学token表征了音频细节信息,可以用来重建高质量的音频。声学token一般有下面几个用处:与text结合生成语音(即ASR),与text结合生成音乐,与语义token结合进行无条件的音频生成。
      • 声学token无法重建高质量的音频,而是与人类语言内容相关,因此与语言模型的token更加相似。语义token主流是使用双向transfomer模型建模,无法支持流式任务。
    • 基于背景介绍中存在的问题,文章提出了Mimi音频编解码器,核心是将支持语义token编码的双向模型蒸馏到单向因果模型中。
    • Mimi编码器使用了时序卷积网络对输入音频进行encoding,得到隐式表征。接着使用残差向量量化RVQ将隐式表征离散化为codebook中的向量(RVQ具体方法可以学习相关论文)
    • 在量化前和量化后添加了8层的casual transformer层,为了稳定训练,使用了LayerScalue初始化方法
    • 如何蒸馏?论文将WavLM语义信息蒸馏到了RVQ的第一层中,方法是计算RVQ首次量化输出的embedding和WavLM的embedding的cosine举例,作为训练loss的一部分。因此第一个量化层保留语义token信息,而声学token则在RVQ的其他量化层进行了保留。
    • 在这里插入图片描述
  • 音频生成建模

    • 首先论文尝试说明了Mimi编解码器的audio token相比text token的压缩率很低。对于codebook为8的12.5Hz的音频,1秒的音频生成需要模型生成100个audio token,这在推理时是不可接受的。相反,每秒钟的音频只需要3-4个text token。

    • 根据前文我们知道,音频编码之后的每个step有Q个量化向量组成(Q是codebook的数量),论文使用RQ-Transformer来建模。

    • RQ-Transformer:同时在时序方向和深度方向对数据进行建模。在Moshi中,时序方向对应时间步,而深度方向对应RVQ模块的多层量化向量
      在这里插入图片描述

    • 前面已经提及,Q为8的codebook中,第一个codebook对应语义token信息,其他的codebook对应着声学token信息。论文发现,对声学token信息进行delay可以提供更稳定的语音生成效果。

    • 将Moshi和用户的音频同时建模,并且对每个音频流都使用了声学token信息delay。两个音频流的audio token直接进行拼接,如果使用了Q个codebook,那么量化向量的数量为2Q,此时RQ-Transformer的每个step输入时2Q个量化向量

    • 论文提出了”Inner Monologue“方法

      • 即相比只使用audio token,同时使用audio的转录文本信息,能够增加生成音频的质量。只对Moshi的音频进行了转录,不对用户的音频进行转录,因为推理时对用户的音频进行转录需要额外的ASR进行语音识别。

      • 为了将text token与audio token进行对齐,使用whisper对语音进行识别,获取识别文字的时间窗口,从而对应到audio token,未被text token覆盖到的时间窗口使用PAD token来表示,并在下一个text token前添加EPAD,表示padding的截止符。

      • 通过在text token和audio token引入delay,这种delay可以将一个模型被另外一个模态支配。如果text token在audio token的前面,那么text便由audio决定,此时可以衍生出ASR系统;反之,如果audio token在text token的前面,那么audio便由text决定,此时可以衍生出TTS系统。因此只需要改变delay的方向,可以支持不同的系统,而不需要改变训练的Loss。

      • 由于引入了”Inner Monologue”,即Moshi音频的text输入,此时RQ-Transformer的每个step输入时2Q+1个量化向量,如下图:

      • 在这里插入图片描述

    • Moshi的联合多个sequence的表征,如下图:在这里插入图片描述

    • 推理过程

      • 在推理时,我们对与Moshi输出的所有子序列索引 V s , k V^{s,k} Vs,k 中进行采样:即,对于k=1是对应于Moshi讲话的文本标记,而对于k∈{2,…, 2+Q}则是Moshi的音频标记。在推理环境中,来自用户的音频标记(k>2+Q)的预测实际上是被忽略的,因为使用的是实际的用户音频。
      • 用户和Moshi之间的轮次转换没有明确的界限:Moshi可以在任何时候说话和倾听,必要时甚至可以同时进行。特别是当用户说话而Moshi保持沉默时,Moshi流对应的音频标记解码为“自然静音”,一种接近静音的波形,而不是具有固定、明确定义的值;同时,Moshi的文本流将填充PAD标记。
  • 训练数据

    • 纯文本数据
    • 音频数据
      • 收集了7M小时的音频数据,并且用whisper进行了转录。基于该数据进行audio预训练,该预训练阶段只使用了单流模式,以及转录的文本流模态
      • 为了实现双流,使用了2000小时的Fisher语音对话数据进行了训练。
      • 我们收集了多对参与者之间 170 小时对话,每个说话者使用单独的通道进行记录,以便提供一个小的数据集,用于对模型进行微调,以提高仅使用 Fisher 时获得的质量。我们将这个数据集称为有监督的多流数据集。我们不会直接在这个数据集上训练 Moshi,而是使用它来训练一个逼真的多流文本到语音(TTS)模型
    • Speech-Text指令数据
      • 传统的文本指令数据不适合语音对话模型,因此使用Helium和真实对话的转录生成了真正的AI与用户的交互数据。
  • 训练loss

    • 计算ground-truth离散token的 V s , k V_{s,k} Vs,k和估计的logits l s , k l_{s,k} ls,k的交叉熵损失
    • 给与text token同等的重要性,对于语义token给与的重要性系数是100,对于声学token给与的重要性系数是1。
    • 在这里插入图片描述

点击查看我的更多AI学习笔记github

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值