第一次用 ChatGPT 的语音模式时,我有个很别扭的感觉:它反应很快,但对话节奏总像在跟一个翻译机器人说话——我说完,它停顿一下,然后字正腔圆地回我。直到看到 OpenAI 的架构图才明白,原来这背后是三个模型在接力:一个把你说的话转成文字,一个用文字生成回复,第三个再把文字读出来。每一步都在累加延迟,而且把声音里的情绪、停顿、重音全丢了。

那能不能直接把音频扔给模型,让它直接输出音频?这就是端到端语音模型(speech-to-speech model)要干的事。2023 年以来,Google 的 AudioPaLM、Meta 的 Spectron、Kyutai 的 Moshi,再到 OpenAI 的 GPT-4o 高级语音模式,都在往这个方向踩油门。这篇文章会把我自己理解这个技术的过程摊开,讲清楚它凭什么能跳过文本、内部怎么运作、以及它现在到底能做到什么程度。
传统级联方案:三个模型接力,每一步都在丢信息
先看一眼你现在用的“语音助手”。主流的方案叫级联 ASR-LLM-TTS:
- 自动语音识别(ASR,比如 Whisper)把音频波形变成文字,“你好,帮我订个闹钟” → 一串文本。
- 大语言模型(LLM)读这段文字,生成回复文本,“好的,几点?”
- 文字转语音(TTS,比如 VITS)把文本读出来,生成音频。
这个链条有三个很要命的问题:
- 延迟叠加:每个模型至少跑一轮,尤其 LLM 生成第一个 token 之前还要等整段语音识别完,一来一回的延迟往往超过 500 毫秒,你感觉到的“卡顿”就是它。
- 副语言信息全丢:你的语气是愤怒还是开玩笑,ASR 只输出文字,它完全不管。你停顿了三秒表示犹豫,文字里只剩一个逗号。
- 错误传递:ASR 把“订个闹钟”听成“订购闹钟”,LLM 就会一本正经地回“好的,您的收货地址是?”,TTS 再深情地念出来,整个对话就崩了。
级联方案就像三个人传话,中间还隔着一层文本翻译,失真不可避免。那端到端模型怎么打破这个魔咒?
端到端模型的“大脑”:直接咀嚼音频 token
核心思路非常粗暴:把音频压缩成离散的 token,让模型直接预测音频 token,最后再解码回波形。这听上去很抽象,但拆开看就清楚了。
音频是连续的模拟信号,要交给 Transformer 处理,必须变成离散的符号,就像文本被切成 token 一样。Google 的 SoundStream 和 Meta 的 EnCodec 就是干这个的:它们把音频波形压缩成一个个整数,比如每秒 50 个 token,每个 token 代表一小段音频的“声学指纹”。这个编码器-解码器结构叫神经音频编解码器(Neural Audio Codec),它会在训练时尽量保留语义和音质,同时把码率压到极低。SoundStream 论文 里甚至能做到 3kbps 下依然可懂的语音。
有了音频 token,端到端语音模型就可以直接玩“下一个 token 预测”了:输入一段音频 token 序列,模型自回归地生成后续音频 token,最后通过同一个编解码器解码回波形。这个过程和文本 LLM 几乎一模一样,只是 token 的“词汇表”变成了声学码本里的代码。
我最早以为端到端模型就是直接把原始波形扔进 Transformer,结果发现根本不行——波形每秒包含几万个采样点,直接建模计算量爆炸。从 Meta 的 Spectron 到 Kyutai 的 Moshi,大家用的都是“先压缩再预测”的框架,Spectron 论文 里明确提到,他们用了一个预训练的语音编码器把语音映射到中间表示,再让语言模型去学习这个表示。而 Moshi 论文 更进了一步,直接端到端训练一个音频语言模型,连文本 token 都没用,完全在音频空间里操作。
为什么跳过文字反而更“懂”你?
这里有一个很多人会误解的点:端到端模型并不是“不懂文字”,它只是不需要把文字显式地写出来。事实上,音频 token 里已经天然包含了语义信息——就像你听到一段外语,虽然没翻译成母语,但你还是能理解意思。音频 token 在训练时通过大量语音数据,学会了把声学模式和语义概念绑定,就像婴儿学说话那样,直接建立声音到意义的映射。
这样做的好处是保住了副语言信息。你说话时的笑声、叹气、语速变化、音调起伏,这些不是噪音,而是沟通的一部分。传统级联方案把这些全抹平了,而端到端模型可以直接在音频 token 里保留它们,甚至在生成时模仿出来。比如 Moshi 就能在回复中加入类似“嗯……让我想想”的犹豫音,还能自然打断你,因为它的整个处理都在同一个音频流里,没有文字转换的断点。
但挑战也在这里:音频 token 序列比文本 token 序列长得多。同样一句话,文本可能 10 个 token,音频 token 却有几百个。这意味着模型需要处理更长的上下文,而且生成时必须保持音质稳定、不同 token 之间连贯,否则就会出现噪音或变调。这也是为什么早期的端到端模型口语播报像“机器人”,直到 Moshi 和 GPT-4o 才达到接近真人的自然度。
一张表看清级联和端到端的关键差异
| 维度 | 级联 ASR-LLM-TTS | 端到端语音模型 |
|---|---|---|
| 延迟 | 高(500ms – 2s) | 低(200ms 以内,可流式) |
| 副语言信息 | 全部丢失 | 保留笑声、停顿、情绪韵律 |
| 错误传播 | ASR 错误会污染下游 | 无文本中介,错误只影响音频局部 |
| 模型复杂度 | 三个独立模型,工程复杂 | 单一模型,训练和部署更集成 |
| 多语言 | 语言间切换依赖 ASR 和 TTS 支持 | 音频 token 天然跨语言,但需要训练数据覆盖 |
| 可控性 | 可精确控制文本内容 | 难以直接注入文本指令,可控性较弱 |
| 训练数据 | ASR 需标注语音-文本对,LLM 需海量文本 | 需要大量语音-语音数据,稀缺且昂贵 |
这张表背后有一个关键判断:端到端模型在对话体验上碾压级联,但在信息精确性和可控性上目前还打不过。比如你让它读一段精确的新闻稿,它可能自己加个“嗯”或者拖长音,没法像 TTS 那样一个字不错。这也是为什么 OpenAI 的 GPT-4o 高级语音模式仍然保留了部分文本中间层,用来做安全对齐和内容过滤——完全端到端在可控性上太野了。
我踩过的一个认知坑:端到端≠完全不要文本
有一段时间我以为端到端语音模型就是彻底抛弃文本,纯音频训练。后来看 AudioPaLM 的论文 才发现,很多模型其实是多模态 token 混合:把文本 token 和音频 token 扔进同一个模型训练,让模型学会两种模态之间的对齐。AudioPaLM 继承了 PaLM-2 的文本能力,又在音频 token 上做了扩展,结果它在语音翻译任务上直接吊打了单独的 ASR+MT+TTS 链路。因为文本 token 提供了语义锚点,音频 token 提供了声学细节,两者互补。
这让我想通一件事:端到端不是非黑即白,而是可以有一个从“全级联”到“全端到端”的光谱。我们现在看到的 GPT-4o 可能就处于中间地带——它内部能同时处理文本和音频 token,但对外展现的是统一的多模态能力。真正的纯音频端到端模型(如 Moshi)在对话自然度上做到了极致,但在需要精确事实或长文本指令的任务上还不太行。
常见误解澄清
端到端模型是不是完全不需要文本标注数据?
不是。很多端到端模型在训练时仍然会用到文本转写,作为辅助任务或预训练对齐。比如 Spectron 会先用文本-语音对预训练语音编码器,让音频 token 包含更干净的语义信息。纯无文本的端到端训练目前还很难达到高论质量。
它能处理所有语言吗?
理论上音频 token 是语种无关的,但实际效果严重依赖训练数据中各种语言的覆盖度。资源匮乏的语言,模型可能只会模仿音色,但说不出有意义的词。多语言端到端语音模型是当前的研究热点。
它会不会像文本模型一样“胡说八道”?
会。而且因为直接生成音频,你听不出它是在“编造”文字,可能被一段听起来很自信的语音欺骗。幻觉问题在端到端语音模型中一样存在,甚至更难检测,因为你没法像检查文本那样快速扫描。
端到端语音模型目前的能力边界
到这里,我想给出几个明确的判断:
- 在开放式对话、情感陪伴、低延迟交互场景,端到端是明确的未来。 它带来的体验提升不是渐进式的,而是“突然感觉对面是个活人”的质变。Moshi 的实时打断和情绪反馈,让人一度怀疑是不是背后藏了个人。
- 在需要精确事实、长文档朗读、代码发音等场景,级联模式仍占优。 因为文本层可以精确控制每一个字,还可以做后处理校对。端到端模型目前还做不到逐字精准,更适合“说人话”而不是“念稿子”。
- 数据瓶颈是最大路障。 高质量的语音对话数据远比文本数据稀缺,而且标注困难。这可能会限制端到端模型在低资源领域的普及速度。
- 与多模态融合是必然趋势。 当我们能用一个模型同时理解文本、音频、图像,甚至视频,端到端语音就只是其中一条支线。GPT-4o 已经展示了这种可能性:同一个模型既能和你打字聊天,也能直接语音对话,还能识别你的面部表情。
回到最初那个“慢半拍”的别扭感,其实传统语音助手的根本问题不是慢,而是它们把一场对话拆成了三截冷冰冰的机械步骤。端到端语音模型试图把这三截焊在一起,让对话重新变成连续的、有体温的交流。这条路还没走完,但方向已经非常清楚——下次你再和 AI 语音聊天时,可以留意一下它的停顿位置和语气变化,这可能是判断它背后到底有几个模型的最直接线索。
原创文章,作者:guanweilu,如若转载,请注明出处:https://guanweilu.cn/article/116.html