GLM-4-Voice:智谱新一代端到端语音大模型

GLM-4-Voice: Towards Intelligent and Human-Like End-to-End Spoken Chatbot

代码仓库:https://github.com/THUDM/GLM-4-Voice

技术报告:https://arxiv.org/abs/2412.02612

继语言模型、图像理解、视频理解、图像生成、视频生成等模型之后,今天,智谱的多模态大模型家族再次加入新成员——GLM-4-Voice(端到端语音模型)。这一成果使得大模型具备了完整的感官系统,实现了机器与人交互的自然与流畅。
GLM-4-Voice 模型具备直接理解和生成中英文语音的能力,能够根据用户指令灵活调整语音的情感、语调、语速及方言等特征,且具有更低的延时,支持实时打断,进一步提升交互体验。
具体来说,GLM-4-Voice具备:

  1. 情感表达和情感共鸣:模拟不同的情感和语调,如高兴、悲伤、生气、害怕等情绪,用合适的情绪语气进行回复。传统 TTS 通常在情感表达上比较僵硬,声音缺少起伏和细腻的变化。
  2. 调节语速:在同一轮对话中,可以要求 TA 快点说 or 慢点说。
  3. 随时打断,灵活输入指令:根据实时的用户指令,调整语音输出的内容、风格和情感,支持更灵活的对话互动。例如,你可以随时打断 TA,让 TA 输出新的内容,更加符合日常对话情境。
  4. 多语言、多方言支持:目前 GLM-4-Voice 支持中英文语音以及中国各地方言,尤其擅长粤语、重庆话、北京话等。

技术细节

与传统的 ASR + LLM + TTS 的级联方案相比,端到端模型以音频 token 的形式直接建模语音,在一个模型里面同时完成语音的理解和生成,避免了级联方案“语音转文字再转语音” 的中间过程中带来的信息损失,也解锁了更高的能力上限。

GLM-4-Voice 由三个部分组成:

  • GLM-4-Voice-Tokenizer: 通过在 Whisper 的 Encoder 部分增加 Vector Quantization [单层量化]训练,通过在 ASR 数据上有监督训练的方式得到,将连续的语音输入转化为离散的 token,每秒音频转化为 12.5 个离散 token。
  • GLM-4-Voice-9B: 在 GLM-4-9B 的基础上进行语音模态的预训练和对齐,从而能够理解和生成离散化的语音。
  • GLM-4-Voice-Decoder: 基于 CosyVoice 的 Flow Matching 模型结构训练的支持流式推理的语音解码器,将离散化的语音 token 转化为连续的语音输出。最少只需要 10 个音频 token 即可开始生成,降低端到端对话延迟。
 CosyVoice  模型架构

具体来说,GLM-4-Voice 以离散 token 的方式表示音频,实现了音频的输入和输出的端到端建模。具体来说,我们基于语音识别(ASR)模型以有监督方式训练了音频 Tokenizer,能够在 12.5Hz(12.5 个音频 token)单码表的超低码率下准确保留语义信息,并包含语速,情感等副语言信息。

Speech Tokenizaion

语音分词器将连续的语音波形转换为离散的语音标记,这些标记保留了语义信息以及部分声学信息

我们采用了 Zeng 等人[Scaling speech-text pre-training with synthetic interleaved dat] 提出的 12.5Hz 语音分词器。为确保内容完整,下面简要描述其架构:

  • 基础模型
    • 基于 Whisper-large-v3(来自 Whisper 系列)的预训练自动语音识别模型
  • 关键改进
    • 在编码器中引入了池化层向量量化层
    • 码本向量通过指数移动平均 (EMA) 学习。
    • 为防止码本崩溃,在量化之前,会将低使用率的码本向量使用随机选取的连续表示进行重置。

流式推理的因果性设计(Causality for Streaming Inference)

为支持在推理阶段对输入语音进行流式编码,我们对 Whisper 编码器架构进行了因果性改造

  • 因果卷积(Causal Convolution)
    • 将编码器 Transformer 之前的卷积层替换为因果卷积 [39],以确保当前时间步的输出不会依赖未来的信息。
  • 块级因果注意力(Block Causal Attention)
    • 将编码器中的双向注意力机制替换为块级因果注意力,进一步支持流式输入的逐步推理。

Speech Decoder

语音合成方面,我们采用 Flow Matching 模型流式从音频 token 合成音频最低只需要 10 个 token 合成语音,最大限度降低对话延迟。

训练策略

我们从零开始训练语音标记编码器(speech token encoder)和流匹配模型(flow matching model),并采用两阶段训练范式,以充分利用不同质量的丰富语音数据。

  • 预训练阶段(Pre-training Stage)
    • 使用来自不同说话人质量各异无监督语音数据中的所有语音样本进行训练。
    • 该阶段旨在让模型学习通用的语音表示,以提升模型在多样化语音场景下的泛化能力。
  • 微调阶段(Fine-tuning Stage)
    • 使用来自单一说话人高质量语音样本进行训练。
    • 该阶段旨在提升模型在一致性语音质量上的表现,使生成的语音在音色和风格上更加自然流畅。

Support for Streaming Inference

为了实现流式推理并降低延迟,我们在微调阶段引入了截断音频样本(即音频的前n⋅b 秒,其中 n=1,2,3,…且 b 为块大小)。这种设计能够有效地为模型处理流式场景做好准备。

推理阶段,解码器会处理与前 n⋅b秒音频对应的语音标记。具体而言,它将前 (n−1)⋅b秒的语音作为提示,预测从 (n−1)⋅b秒到 n⋅b 秒之间的语音内容。这种方法使模型能够以最小延迟为 b 秒的速度生成语音标记。

基于实证研究,我们为 GLM-4-Voice 设置了 b=0.8秒,这意味着:生成初始语音输出至少需要 10 个语音标记。

Training Procedure

预训练方面,为了攻克模型在语音模态下的智商和合成表现力两个难关,我们将 Speech2Speech 任务解耦合为 Speech2Text(根据用户音频做出文本回复) 和 Text2Speech(根据文本回复和用户语音合成回复语音)两个任务,并设计两种预训练目标适配这两种任务形式:

  • Speech2Text:从文本数据中,随机选取文本句子转换为音频 token;
  • Text2Speech:从音频数据中,随机选取音频句子加入文本 transcription。

分别基于文本预训练数据和无监督音频数据合成语音-文本交错数据以适配这两种任务形式。

阶段一:语音-文本联合预训练:通过结合交错语音-文本数据大规模无监督语音数据有监督语音-文本数据,实现了对 LLM 语音建模能力的全面扩展。通过这种联合预训练策略,模型能够在跨模态知识迁移语音理解生成任务中展现出卓越的性能,同时保持其在文本任务中的竞争力。

阶段2:SFT微调

整体时延:

总体延迟:生成首个语音波形的总体响应延迟可按以下方式计算:

  • 语音分词(Speech Tokenization)
    用户的语音输入由语音分词器以流式方式处理,分词器以固定大小的块 (tblock) 进行操作。
    由于采用了流式设计,分词器能够在接收到语音输入后立即开始处理,并且只需处理当前块所需的时间,而不受语音总时长的影响。

因此,分词延迟 为:

LLM 预填充(Prefilling):语音分词器生成的语音标记数量 (Nspeech_tokens) 取决于用户语音的长度 (Tuser_speech) 和帧率 (fₙ = 12.5 个标记/秒)。

LLM 的预填充延迟 计算公式为:

LLM 解码(Decoding):在生成初始音频响应时,LLM 会生成 13 个文本标记10 个语音标记,总计:Nfirst_speech=13+10=23 个标记 个标记。

该步骤的解码延迟 计算公式为:

语音解码(Speech Decoding):在该步骤中,Nspeech = 10 个音频标记 由语音解码器处理,以生成首个音频片段

该步骤的解码延迟 计算公式为:

总延迟:

Model List

Model Type Download
GLM-4-Voice-Tokenizer Speech Tokenizer 🤗 Huggingface 🤖 ModelScope
GLM-4-Voice-9B Chat Model 🤗 Huggingface 🤖 ModelScope
GLM-4-Voice-Decoder Speech Decoder 🤗 Huggingface 🤖 ModelScope

效果和其他说明

支持语音输入/文本输入,以及语音+文本交替输出

音频实时生成的质量较差,Gradio 的流式音频播放效果不稳定。在生成完成后点击对话框中的音频质量会更高。目前仅支持女声输出,指令遵循能力较强。

关于实时打断功能

作者目前还没给出实现方法和demo。有关打断问题,可以考虑参考开源项目 CleanS2S,虽然是级联式 pipeline【ASR+LLM+TTS】,但是相关代码逻辑应该可以结合 GLM-4-Voice 这样的 end-to-end 模型。目前支持实时输入语音打断和输入文字打断两种方式,后续还会设计更多有趣的打断模式(例如 agent 视角的主动打断)。

https://github.com/opendilab/CleanS2S/blob/main/README.zh.md

总结:

GLM-4-Voice 在 GLM-4-9B 的基座模型基础之上,经过了数百万小时音频和数千亿 token 的音频文本交错数据预训练,拥有很强的音频理解和建模能力。对齐方面,为了支持高质量的语音对话,我们设计了一套流式思考架构:输入用户语音,GLM-4-Voice 可以流式交替输出文本和语音两个模态的内容,其中语音模态以文本模态作为参照保证回复内容的高质量,并根据用户的语音指令变化感情需求,在保证智商的情况下仍然具有端到端建模的能力,同时保持低延迟性(最低只需要输出 20 个 token 便可以合成语音)。

发表评论

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