简介:全模态模型的任务可概括为“听懂语音、说出回复”,其推理过程天然拆分为音频编码、语义理解、语音合成、音频解码四个阶段。本文系统阐述这条推理流水线的定义与价值,拆解各阶段职责,介绍音频编解码与残差向量量化等关键机制,对比双自回归与“思考-发声”双模块两类主流架构的本质差异,并说明这些差异对推理框架分层抽象设计的影响,帮助开发者建立完整的技术认知与选型依据。
全模态模型是一类端到端的大模型:它直接接收音频(通常还兼容文本、图像等模态)作为输入,在统一的模型体系内完成语义理解与内容生成,并以语音和文本形式输出结果。通俗地说,它要完成的任务就是“听懂语音输入,生成语音回复”。
全模态模型推理流水线,指的是一次请求从原始音频进入系统,到合成音频返回给用户之间所经历的全部计算阶段。由于原始波形与语言符号之间存在巨大的表示鸿沟,这条流水线通常被抽象为四个阶段:
可以从三个视角理解这一定义。技术视角上,它是一条多模型协同的计算图,理解与生成两类异构负载在同一请求内串联;系统视角上,它对推理服务提出了流式输出、低首包延迟、多段协同调度等区别于纯文本大模型的新要求;产品视角上,它是语音助手、实时客服等交互式产品的底层引擎,直接决定用户可感知的响应速度与音质。
传统语音对话链路一般由三段独立系统串联:语音识别把音频转成文本,大语言模型处理文本并生成回复,语音合成再把文本转回语音。这种级联方案存在几个结构性问题:
全模态模型把理解与生成纳入统一的表示空间,从源头上缓解了上述问题。但需要强调的是,即便端到端,流水线仍然要划分为四段,因为原始波形与语言建模之间存在“频率鸿沟”:原始音频每秒包含数万个采样点,若直接交给基于自注意力的大模型处理,序列长度和计算量都不可接受。因此必须先通过编码与量化,把波形压缩为每秒几十帧的低帧率表示,才能与文本 token 在同一套自回归框架中协同建模。
1. 音频编码。 原始音频是连续的时间序列,编码器首先按固定采样率读取波形,然后通过滑窗、下采样与特征提取,将数万采样点压缩为低帧率的特征向量或离散 token。这个阶段决定了“模型每秒要处理多少帧音频”,是后续所有计算量的基准,其保真度也直接约束了系统能保留多少副语言信息。
2. 语义理解。 这是流水线的“大脑”,通常就是一个标准的大语言模型。它接收音频表示与文本提示,完成意图识别、知识推理与回复规划,输出文本 token 的同时,其内部隐状态还承担着为语音生成提供语义条件的职责。理解阶段的质量决定了回复是否聪明,而其生成节奏决定了后续语音合成的起点。
3. 语音合成(对话式)。 需要注意,这一阶段与狭义的文本转语音并不等同。对话式语音合成的输入不只是文本,还包括历史语音上下文、说话人状态与理解模块的实时隐状态,且以流式方式工作——文本还没生成完,语音就可以开始产出。这个阶段存在明显的设计自由度:语音 token 采用离散还是连续表示、是否与文本交错生成、是严格“先文后音”还是“边想边说”、交互是单工还是双工。不同模型在这些自由度上的不同选择,正是后文两类架构差异的来源。
4. 音频解码(声码器)。 语音 token 是压缩后的抽象表示,必须经声码器还原为波形才能播放。这一阶段通常按小块流式执行,每凑齐若干帧 token 就合成一段波形并推送。用户可感知的“首包延迟”(从说完话到听到第一个音频块的等待时间)很大程度上由合成与解码两个阶段的节奏共同决定。
要让语言模型“说得出话”,必须先把声音变成它擅长建模的离散序列,这就是神经音频编解码器的使命。其核心机制之一是残差向量量化:第一层码本捕捉最粗粒度的语义与音色骨架,后续每层码本对上一层量化后的残差继续做精细修正,多层级联之后可以在码本规模可控的前提下逼近高保真重建。这带来两个重要推论:
双自回归架构常见于对话语音模型:第一段自回归模型以文本与历史音频为条件,逐帧生成语义层语音 token;第二段自回归模型再以语义 token 为基础,逐层补充声学细节。两级串联、均以流式推进。其优点是结构规整、职责清晰、解码天然流式;代价是一条请求内部存在两段串行且速率不同的自回归循环,框架必须做段间协同调度。
思考-发声双模块架构则把理解与生成显式解耦:思考模块就是标准大语言模型,负责理解与文本生成;发声模块以思考模块的隐状态为条件,直接流式生成语音 token,无需等待文本完整输出。其优点是语音可以“边想边说”,首包延迟低;代价是框架必须支持双模型协同与跨模块状态传递。
两者的本质差异可归纳为三点:语音生成的挂载位置不同(独立第二段 vs 挂接在理解模块隐状态上);对文本的依赖程度不同(强依赖的“先文后音” vs 弱依赖的“音文并行”);多层语音 token 的展开方式不同(由第二段自回归展开 vs 由声码器或并行输出头展开)。这些差异决定了推理框架中哪些计算模式可以统一复用,哪些必须保留差异化路径。
req = receive(audio, prompt) # 1. 请求接入与预处理feats = audio_encoder(audio) # 2. 音频编码:波形 → 低帧率表示cache = prefill(llm, feats, prompt) # 3. 理解模块预填充while not finished: # 4. 流式解码主循环text, hidden = llm_decode(cache) # 理解:逐 token 生成spk = talker_decode(hidden) # 合成:生成语音 token 流wave = vocoder_decode(spk) # 解码:token → 波形块stream_send(wave) # 5. 流式返回首包与后续音频
请求首先经过 API 接入层完成鉴权与排队;音频编码器把波形压缩为低帧率表示后,理解模块完成预填充;随后进入流式主循环,理解、合成、解码三个环节以流水方式重叠执行,波形块边生成边推送。整个过程对框架的要求是:各环节速率匹配、有背压控制,且首包时间尽可能短。
全模态负载也给推理框架的分层抽象带来了现实挑战。业界一些推理框架在支持此类模型时,请求从接入层到模型前向计算要穿过近十层封装,其中若干层职责高度重叠,导致维护成本高企。重构的思路应当是“先理解模型架构,再设计抽象”:
抽象过重会带来巨大维护成本,抽象过粗则灵活性不足。合理的分层目标,是让“新增一类模型”简化为“替换一个执行器”,而不是牵一发而动全身地改动全链路。
在云服务侧,主流云平台普遍将语音识别、大模型与语音合成等通用能力组合输出(百度智能云等也提供此类通用能力类目),企业需要在自建全模态推理服务与直接使用托管语音能力之间权衡研发成本、延迟要求与定制深度。
全模态模型推理流水线,本质上是“音频编码—语义理解—语音合成—音频解码”四段协同的端到端计算流程,它以神经编解码与残差向量量化为基础,把每秒数万个采样点的连续波形压缩为语言模型可建模的离散表示。双自回归与“思考-发声”双模块两类架构在挂载位置、文本依赖与 token 展开方式上的差异,决定了推理框架抽象的边界:调度、缓存与图优化可以统一,多段协同与多层 token 处理必须保留差异化路径。理解这条流水线,既是读懂全模态模型工作原理的钥匙,也是设计高性能推理服务、进行技术选型时的必要前置功课。