热门搜索:和平精英 原神 街篮2 

您的位置:首页 > > 教程攻略 > ai资讯 >别慌!一文教你看懂GPT-4o背后的语音技术

别慌!一文教你看懂GPT-4o背后的语音技术

来源:互联网 更新时间:2026-08-10 15:20

5月14日凌晨,OpenAI正式发布了新一代生成模型GPT-4o,这一波更新带来的冲击力,用“技术碘伏产品形态”来形容并不为过。最让人眼前一亮的地方在于:它用一种几乎无缝的交互方式,把GPT-4级别的智能体验带给了每一位用户。语音方面尤其惊艳——响应速度极快,平均延迟几乎和人类对话节奏同步,输出的语音不仅听感自然,还能精准感知上下文,甚至捕捉到情感和情绪的微妙变化,说实话,这已经和真人对话没有明显界限了。

GPT-4o本质上是一个“any2any”的多模态模型。它能接收文本、音频、图像、视频等多种输入形式,也能同时输出文本、语音、图像、视频等混合内容。本文的重点落在语音多模态实现上,顺带聊聊我对语音研究方向的一些看法。

如果只看文本和语音这两个模态,GPT-4o其实就是一个“语音语言模型”(speech language model, SLM)。它既具备语音理解能力,也具备语音合成能力,输入和输出都可以是文本和语音的混合体。那么,这个SLM到底是怎么造出来的呢?在大型语言模型(LLM)已经深入人心的今天,一个直觉的思路是:

把连续的语音数据离散化成像词元(token)一样的单元,放进LLM的词表里,然后按训练LLM的老路子走一遍。

按照这个思路来搭建SLM,我们需要解决三个核心问题:

  1. 语音怎么离散化?

  2. LLM怎么理解语音token?加入语音token之后,LLM在语音数据上会出现涌现能力吗?

  3. LLM又该怎样合成/解码语音?

下文就逐一拆解这些问题,看完现有的方案之后,还会延伸聊一些工程实现的思考,以及这些新兴语音技术对游戏业务可能带来的影响。最后用一张完整的路线图来收尾。

01 语音的离散化:向LLM看齐

在讨论语音离散化之前,我们先搞清楚语音和文本这两种模态的区别和联系,这直接关系到后续建模方法的选择和离散化特征的侧重点。

语音和文本的差异很明显:

文本是离散的、序列短、信息密度高(几乎每个词都携带语义);语音则是连续的、序列长、信息密度低。

序列长、信息密度低意味着语音数据有巨大的压缩空间,这一点和图像很像。所以,一些图像领域用惯了的离散化压缩方法也能迁移过来。

当然,语音和文本也有联系:

语音其实是文本的超集,它既包含“说了什么”的语义信息,也包含音色、韵律、语速等副语言信息。

既然语音包含文本,那么NLP中的预训练语言模型完全可以用来建模语音中的上下文依赖关系,进而提取出离散化的语音token。这类方法得到的token主要承载语义信息。

接下来,先看语义token是怎么拿到的。

语义token:用MLM建模语音的上下文依赖

语音的语义建模,最经典的方法就是BERT的MLM(掩码语言模型)思路。这方面的里程碑工作有三个:

wa v2vec 2.0、HuBERT和w2v-BERT。

和BERT类似,wa v2vec 2.0在隐空间中随机遮盖一部分语音输入,然后用对比学习的目标来训练帧的表征。这里有一个特别巧妙的设计:对比学习中目标帧的离散化处理,把连续的无限特征空间压缩成有限的离散空间,让帧特征的鲁棒性显著增强。这个trick在语音领域非常实用,模型可以接受带噪声的语音作为输入。

图1:wa v2vec 2.0的模型架构

wa v2vec 2.0只是借用了BERT的mask操作,核心训练目标还是对比学习。能不能直接用BERT的MLM目标来得到高质量的语音表征呢?HuBERT做的就是这件事。它的核心思想是用简单的KMeans聚类方法给语音数据抽取离散化的分类标签,也就是论文里说的hidden unit或acoustic unit。拿到分类标签后,再用BERT的MLM loss来学习语音数据内部的上下文依赖关系。针对KMeans对初始值和K值敏感的问题,作者设计了集成(ensemble)和迭代优化(iterative refinement)的方法:前者是用多个聚类模型投票,后者则是先在基于MFCC的聚类标签上学习,学到一定程度后,用模型学到的表征重新聚类,再跑一轮BERT。

图2:HuBERT的模型架构

对比学习和BERT的MLM都能学语义表征,那把二者结合起来会不会有互补效果?w2v-BERT就是干这个的。HuBERT的离散token需要通过KMeans离线聚类获得,不是端到端的,而wa v2vec 2.0正好能提供音频帧的量化离散表征,两个模型天然可以缝合。方法也很直观:前几层做类似wa v2vec 2.0的对比学习,学出HuBERT要用的离散表征;后面几层再做类似HuBERT的MLM训练。

图3:w2v-BERT的模型架构

声学token:压缩+离散

前面讲的预训练模型主要学习上下文关系,得到的表征以语义信息为主。但如果要把语音token还原成有真人表现力的信号,还需要包含

音色、韵律、语速

这些副语言信息的声学特征。这一部分在很大程度上借鉴了图像领域的工作,核心是VQVAE、VQGAN这类离散化压缩方法,同时针对语音特性做了优化。经典的代表就是SoundStream和Encodec,二者高度相似,可以放在一起讲。

说到压缩,第一个想到的自然是自编码器(AutoEncoder)。要提升压缩效率、方便数字传输和存储,同时满足离散化建模的要求,压缩模型里还需要引入量化(quantization),把连续的音频信号转换成离散的数值。基于这些考虑,模型大体上采用VQVAE的结构。为了平衡向量量化(VQ)与音频实时高保真传输之间的矛盾,通常会使用多个残差连接的码本(codebook)来量化,这就是所谓的RVQ(残差向量量化)。RVQ的好处主要有两个:第一,不同的量化块有明确分工,第一个块承载最重要的语义信息,后续的块负责还原副语言信息;第二,训练时可以随机采样前面若干个块来训练,保持一定精度的同时,实现对码率的动态适应。

总的来说,

SoundStream

/

Encodec

本质上就是一个RVQ-VAE,它们建模的语音离散化token包含了层次化的语义信息和声学信息。

图4:Encodec的模型架构

语音的统一表征?

不难发现,SoundStream和Encodec这种基于RVQ-VAE的压缩建模,虽然包含了声学特征,但也不可避免地带入了语义特征。两者提取的其实是一种语义和声学的混合体。在此基础上,

SpeechTokenizer

引入语义引导信息来解耦语义和声学特征。这一步对于最终的语音合成至关重要。SpeechTokenizer的具体做法是:用HuBERT的特征对RVQ的第一个码本做语义蒸馏,其余部分保留声学信息。

图5:SpeechTokenizer的模型架构

语音的其他表征:MEL依旧有用

上面讲的语音离散表征,无论是HuBERT的语义token还是Encodec的声学token,都是直接从原始音频波形中抽取的。其实也可以基于语音的中间表征来抽取,最典型的就是梅尔谱(MEL spectrogram)。梅尔谱本身就对语音做了一次压缩,把梅尔谱类比成图像,用单码本的VQ就能达到和SoundStream、Encodec类似的压缩程度。这种MEL+VQ的做法在各种语音合成模型中很常见,我们在合成部分会详细介绍。

02 让LLM理解语音token

有了语义token和声学token之后,就可以着手构建语音层面的语言模型了。经典的工作包括谷歌的AudioLM、AudioPaLM,字节的SALMONN,复旦的SpeechGPT系列,阿里的LauraGPT,以及新加坡国立大学的NextGPT。它们的思路大同小异,挑几个代表性的看看就明白了。

AudioLM:最初的SLM

顾名思义,AudioLM构建的是一个语音层面的语言模型——给定一段语音,模型预测后续的语音。输入和输出都只有语音模态。这个任务形式和GPT-4o非常接近,不会经历ASR→LM→TTS的流程,而是直接从语音上下文中推理语义信息,再结合声学信息合成贴合上下文的高表现力语音。前面讲的语义token和声学token正好能满足这个任务的要求。

AudioLM的具体做法是:用SoundStream提取声学token,用w2v-BERT提取语义token,模型主体是一个常规的GPT,词表包含所有声学token和语义token。它的建模过程很有启发性:先做最重要的语义建模,然后预测SoundStream的前若干层特征(粗糙的声学特征),再预测剩余层特征(声音的细节信息),最后基于所有声学token还原为语音。这种层次化的建模思路,在VALL-E这类语音合成模型里也很常见。

图6:AudioLM的tokenizer

图7:AudioLM的建模流程

当然,AudioLM只关注语音模态,用的也是常规LM,还不具备GPT-4o那种强悍的指令遵循和对话能力,语音对话的连贯性和表现力都比较弱。但它的开创性在于证明了:即使是常规的LM,也能理解语音token。

AudioPaLM:整合LLM

这是AudioLM的后续版本。谷歌把常规LM替换成了已经训练好的、具备强大文本理解和生成能力的大语言模型PaLM-2。这样一来,模型既继承了AudioLM保留副语言的能力,又融合了PaLM-2的语义理解和推理能力。此外,模型的词表同时包含大语言模型的token和语音token,可以同时做语音理解和语音生成,第一次把这些任务整合到了一个模型里。

不过,论文中的语音token嵌入是直接输入到Transformer中的,没有使用音频编码器做转换。而且AudioPaLM的训练更接近文本多任务的T5,没有用到丰富多样的指令来表达任务意图,还不是真正严格的指令微调。

图8:AudioPaLM的模型架构

SALMONN:让LLM理解语音

这是字节跳动和清华大学电子系的合作成果。虽然这个工作的目标是让LLM理解语音(还不能生成语音),但它的训练方法跟LLM很接近,而且在多个语音相关任务上都表现出了涌现能力,可以用作通用的特征提取器。这对于构建高质量的、包含语音-文本多模态的指令微调数据集非常有价值。

图9:SALMONN的模型架构

SpeechGPT/SpeechGPT-Gen/SpeechAlign:向LLM的训练方法看齐

这是复旦大学邱锡鹏组在这个领域的一系列工作,一个一个来看。

SpeechGPT也是兼具语音理解和语音生成能力的多模态模型。在训练上,它大幅度向LLM看齐,用了三段式训练:第一阶段做模态适应的预训练(其实就是用ASR数据);第二阶段和第三阶段都是指令微调,根据指令模态的不同,细分为跨模态指令微调和模态链指令微调。指令微调的数据集来自ASR,描述任务需求的指令由GPT-4生成。

这个工作还是偏学术化,有几个值得商榷的地方。第一,语音的离散化只用了HuBERT,模型只能看到语义特征,对合成语音的音质和表现力影响很大,demo中的语音也确实验证了这一点。第二,指令微调数据集的构造有问题。他们用的是ASR数据集,其实更好的选择应该是TTS数据集,但高质量TTS数据集实在太少了。ASR数据集中的文本和语音可能不是严格对齐的,GPT-4生成的元提示词和语音本身的特征也可能对不上——比如提示词要求大声朗读,但语音本身可能是低沉的。而且元提示词本身无法做到足够复杂丰富,描述不了语音的一些细粒度信息。第三,训练方法也没有跟人类偏好做对齐。

图10:SpeechGPT的模型架构

针对第一个问题,作者在后续的SpeechGPT-Gen中做了改进。核心思路是让模型不仅看到语义token,也要看到声学token。具体做法是:将HuBERT特征替换成SpeechTokenizer中的语义特征,用SpeechGPT这个LLM自回归地建模语义特征,然后使用Flow-Matching这类扩散模型来建模声学特征。这里选用Flow-Matching,可能是受了SD3和Voicebox/Audiobox的启发。为了增强两阶段建模的依赖关系,作者还把语义特征的先验信息注入到第二阶段扩散模型的先验分布中。可以看到,语音的解码同样是层次化渐进式的。

图11:SpeechGPT-Gen的模型架构

SpeechAlign做的则是SLM与人类偏好的对齐,彻底向LLM的训练方法看齐。他们构建了对比gold token和合成token的Encodec数据集,然后通过偏好优化(包括RLHF和Chain of Hindsight)来改进模型。

图12:SpeechAlign的流程图

简单总结一下上面这些工作中值得关注的点:

  1. 要让LLM输出上下文连贯的高表现力语音,必须让LLM同时看到语义token和声学token。只有语义token,语音会呆板机械;只有声学token,语音则不知所云。
  2. LLM的指令微调方法可以迁移到语音-文本多模态领域,同样能带来涌现能力。
  3. 高质量指令微调数据集的构建可能是最大的瓶颈。一下子让LLM同时做语音理解和语音生成,难度非常大,分步进行可能更现实。
  4. 如果要分步走,需要先实现一个像SALMONN那样的多模态理解模型,和一个强大的Zero-shot TTS模型。前者用于给语音数据打上丰富的标签(情感、韵律、音高、语速、口音、意图、环境等),后者用于生成高质量的语音数据。毕竟,高质量的、文本和语音严格对齐的TTS数据太稀缺了,尤其是中文领域。有了这两个模型,才能构造出高质量的指令微调数据集。

既然前面重点讲了语音理解多模态模型,那接下来就把目光转向Zero-shot TTS模型——它对构建高质量指令微调数据集同样至关重要。同时,LLM解码语音的方法也能从Zero-shot TTS方案中得到很多启发。

03 LLM如何合成语音:Zero-shot TTS

前面提到,SLM的词表里包含了语音的语义token和声学token。语义token保证生成语音与对话上下文的连贯性,声学token保证合成语音的质量和表现力。要想合成上下文连贯、自然度高的语音,必须解决两个问题:

  1. 语音既有语义token又有声学token,如何解码成语音?
  2. SLM在合成语音时,能否遵循多轮对话中的文本指令和语音指令?这一点至关重要,它允许模型根据用户的即时要求生成语音回复——比如OpenAI演示视频中间出现的“把语速提高两倍”或“用更机械化的语气”这类要求。

对于第一个问题,以VALL-E为代表的众多Zero-shot TTS模型给出了不同的解决方案,虽然各有千秋,但也有一些共同点。对于第二个问题,以VoiceLDM和ParlerTTS为代表的text/prompt-guided Zero-shot TTS工作给出了肯定的答案。简单解释一下:通常的语音合成只是把文本变成声音,而text/prompt-guided TTS在文本之外还增加了描述性输入,用来描述合成语音的情感、口音、语气、语速、音高、环境、氛围等信息。逐个来看这些工作。

Zero-shot TTS

2023年以来,学术界和工业界出了不少具备in-context learning(zero-shot/few-shot)能力的TTS模型。这些模型通常会把低信息密度、长序列的连续语音数据,压缩成高信息密度的token或latents(也就是码本中的具体嵌入向量)。它们本质上在做的事情就是:如何高效地实现语音token/latents到音频波形的映射。

这些方案基本都遵循一个准则:语义token和声学token层次化解码,先语义后声学,或者先解码成MEL再加声码器,并且非必要不做自回归(毕竟自回归上线虽高,但太吃数据了)。

基于声学token或语义token的工作

先看微软的VALL-E,这是Zero-shot TTS的开山之作,首次在TTS任务上用上了上万小时的数据。它用Encodec把语音转换为离散token,然后用GPT在这些token上做语言模型的任务。但语音毕竟不是文本,如果直接在语音的所有特征上都做自回归,训练成本高得吓人。考虑到Encodec RVQ特征的层次性——低层特征表示语义内容这类重要信息,高层特征表征声学细节——前者上下文依赖强,适合用自回归建模;后者如音色这类全局性特征,用非自回归也能搞定。于是就有了VALL-E中自回归+非自回归的层次建模方式。

图13:VALL-E的模型架构

尽管VALL-E已经基于token的层次化特性做了分治处理,但受限于语音数据集的规模(几万小时可能还不够),GPT自回归的难度仍然很大,解码过程中存在常见的错误传播问题,鲁棒性差,非常不稳定。按照Ilya Sutskever对自回归的论述,GPT自回归比BERT这种双向结构要更依赖数据,万小时级别的数据可能确实不够。根据一些同行的经验,VALL-E这类自回归模型(也包括tortoise-tts和xtts v2),至少需要十几万小时的数据才能显现出威力。

既然GPT自回归的难度这么大,很多人就开始想办法降低它的学习难度。最直接的方案就是给GPT提供额外的条件信息。典型的工作有微软的RALL-E和吉利的HAM-TTS。RALL-E先生成时长和音高信息,作为GPT自回归的先验——这个思路大概来自FastSpeech2这样的非自回归模型,这两个指标的引入有助于提升合成的鲁棒性。HAM-TTS则补充了基于HuBERT的语义信息。值得注意的是,

HAM-TTS把训练数据扩充到了65万小时,其中50万小时是合成数据。合成数据也能大幅提升合成语音的音质。

图14:RALL-E的模型架构,框出来的就是辅助信息

图15:HAM-TTS的模型架构

说到VALL-E的后续改进,VoiceCraft值得一提。我愿意称它为“优雅的VALL-E”。它的优雅主要体现在两个设计上:causal masking和delayed stacking。Causal masking是为了用自回归GPT架构来做语音编辑任务——把被mask的部分移到序列末尾去预测,一套架构同时搞定合成和编辑。Delayed stacking则是为了适配自回归和RVQ,通过延时错位让当前码本的token预测正好能利用前面token的预测结果,比起VALL-E那种自回归和非自回归缝合在一起的结构要优雅得多。

图16:VoiceCraft的建模流程

基于声学/语义latents的工作

我们通常说的语音token是离散的。但如果用对应码本中的嵌入向量来表示语音,它也可以是连续的、低维的latent变量。既然是低维的连续latent变量,那图像合成领域大火的LDM(latent diffusion model,也就是Stable Diffusion 1&2采用的模型)自然也能用到语音合成上。这方面的经典工作不少,比如NaturalSpeech 2&3、AudioLDM 2、VoiceLDM。不过这里面只有NaturalSpeech 2用到了前面讲的声学/语义token,NaturalSpeech 3的属性分解式VQ更像是另一种形式的RVQ。先看NaturalSpeech 2&3,其他工作后面再说。

NaturalSpeech 2基本上就是VALL-E的连续版本。它用的latent也来自Encodec,先把不同层次的latent求和,然后作为扩散模型的训练目标。值得一提的是,扩散模型和FastSpeech2一样,也用了时长和音高作为合成的先验条件——这一点后来也被RALL-E采用。这个扩散模型是用Wa veNet实现的,同时预测不加噪的latent和后验均值,和图像合成领域的扩散模型在实现方式上不太一样。

图17:NaturalSpeech2的模型架构

然后是NaturalSpeech 3,依然是非自回归的,而且非自回归的正统味道更浓,借鉴了不少FastSpeech2和MegaTTS 1&2的设计思想。和MegaTTS一样,它也用了监督信号对语音token编码的内容做了限制,不再是VALL-E/NaturalSpeech2那样一把抓。相应地,语音token化的方法用VQ就行。具体来说,文章把语音信号分解为时长、内容、韵律和细节四个部分,每个部分用离散化的扩散模型来建模。不过,原文用GRL来促进语音属性分解的做法,可靠性存疑。我也试过文章里的FACodec,效果不太理想。三级扩散模型级联的结构,预测起来也非常复杂。

图18:NaturalSpeech3的模型架构

基于MEL谱+VQ token的工作

当然,也有不少工作用梅尔谱作为中间特征,然后在梅尔谱上用VQ提供离散token,或用CNN提取连续latent。MEL+VQ的代表有tortoise-tts、xtts 1&2、MegaTTS 1&2、Base TTS。MEL+latents的代表有AudioLDM 1&2、StyleTTS 1&2。简单看看它们是怎么做的。

Tortoise-tts

。这是著名的开源英文TTS模型,其作者目前在OpenAI任职,也是GPT-4o的重要贡献者(他自己在博客里说的)。Tortoise-tts用MEL+VQVAE的方法得到语音的MEL token,然后对MEL token和text token做GPT自回归建模。语音的解码分两步:先用扩散模型把MEL token转换成梅尔谱——这一步跟文生图很像,用扩散模型很自然——再用声码器把梅尔谱转成音频波形。Tortoise-tts和VALL-E的主体都是自回归建模,区别主要在于token的选择不同。

图19:tortoise-tts的模型架构

MegaTTS 1&2

。字节跳动的MegaTTS系列对语音token编码信息做了显式的信息压缩处理,让语音token只编码上下文依赖强的韵律信息,然后用GPT自回归建模语音的韵律。至于其他方面的信息,处理得比较常规:音色一般具有全局性,用单一的音色编码器从参考音频中提取就行;文本语义内容的处理则参考了非自回归的FastSpeech 2。语音的解码同样分两步:先通过MEL decoder还原成梅尔谱,再通过声码器解码成音频波形。MegaTTS 2和1总体类似,在音色编码(音素级编码、多条参考音频)、语音提示长度(扩展同说话人的语音上下文长度硬训练,音频prompt更长)和时长建模(也用GPT自回归)上做了改进,同时堆了更大规模的数据。剪映的后端TTS模型用的就是MegaTTS 2。该工作在各论文的评测中表现也不错。

图20:MegaTTS 1的模型架构

基于MEL谱+VAE的latents的工作

AudioLDM 1&2

。AudioLDM 1&2使用的语音latents是一致的,都是通过MEL+VAE获得的。既然是连续的latents,用扩散模型来建模很自然。解码过程也简单:VAE decoder得到梅尔谱,然后用声码器转成音频波形。这两项工作的核心创新是利用多模态模型统一了扩散模型条件输入侧的信息:AudioLDM 1用CLAP统一了文本和音频模态,只用单模态的音频数据就能完成训练;AudioLDM 2则包含了图像、文本、转录文本等更多模态,模型泛用性更强,既能做语音合成,也能做音乐生成、音频事件生成。

图21:AudioLDM 1的模型架构

图22:AudioLDM2的模型架构

StyleTTS 1&2

。StyleTTS系列在众多Zero-shot TTS模型里显得比较“老派”,整体结构基本沿袭了非自回归的FastSpeech 2,不同之处在于增加了基于参考音频抽取的风格信息。这个“风格”跟MegaTTS里的“音色”很像。StyleTTS 2则把风格进一步拆分为声学风格和韵律风格。训练时的风格信息由音频提供,推断时的风格信息则由扩散模型提供。StyleTTS 2通过一个扩散模型桥接了文本韵律和语音风格之间的联系,摆脱了对参考音频的依赖。不用参考音频对产品意义很大——如果都要用真人(尤其是名人)的声音作参考,版权纠纷几乎是必然的。最近寡姐投诉OpenAI的事件就是一个典型案例。

图23:StyleTTS 1的模型架构

图24:StyleTTS 2的模型架构

TTS对指令的遵循

SLM不仅要合成合乎上下文语义的高表现力语音,还要能响应用户的即时要求。一些text-guided Zero-shot TTS工作值得参考。这些工作通常是在已有的Zero-shot TTS模型或text-to-audio模型上改造而来,同时接收转录文本和描述文本两路条件。重点还是在于数据集的构建。这方面的代表有PromptTTS、InstructTTS、ParlerTTS、VoiceLDM和Audiobox。重点说说ParlerTTS和VoiceLDM。

ParlerTTS

。可以看作VALL-E/VoiceCraft的增强版,通过T5编码器和cross-attention旁路引入了描述性文本的信息。目标是用自然语言prompt来指定说话风格和环境信息,摆脱对参考音频的依赖。描述性标签文本的收集过程很朴素:通过定制的监督模型获取语音数据的口音、录音质量、音高、语速等特征,然后让LLM把这些特征转成自然语言的描述。这个工作有几个局限性:一是缺乏情绪标签;二是语音描述性标签的收集比较繁琐,不够通用,远不如一个强大的多模态语音理解模型来得实在。虽然文章demo达到了预期效果,但场景似乎局限在朗读情境中。

图25:ParlerTTS的模型架构

VoiceLDM

。在VoiceLDM 1的基础上增加了转录文本的输入。这个工作和AudioLDM 1很像,也是用CLAP注入语音的描述性信息。不同之处在于,为了做TTS任务,它通过cross-attention旁路增加了转录文本的信息。

图26:VoiceLDM的模型架构

TTS总结

林林总总说了这么多Zero-shot TTS方法,核心结论有这么几点:

  1. 在大模型和Scaling Law大行其道的时代,TTS模型的训练数据规模已经突破了万小时,甚至达到了数十万小时。在大数据的加持下,TTS任务上也涌现出了in-context learning能力。
  2. 语音信息的解码通常需要层次化或多步进行,不能一步到位。自回归、扩散模型和流匹配都能在TTS中发挥作用。
  3. 借鉴NLP指令微调和文生图的经验,TTS模型同样可以遵循文本或语音指令,合成符合用户即时要求的语音,摆脱对参考音频的依赖——这或许也能规避一些知识产权问题(比如最近沸沸扬扬的寡姐投诉OpenAI事件)。同时,用户可以在对话中随时切换语音风格,这一点在OpenAI的demo里体现得很明确。另外不知道大家注意到没有,GPT-4o合成的语音有时还能反映所处的声学环境——有一段语音背后似乎有钢琴声。
  4. Text-guided Zero-shot TTS在模型架构上和Zero-shot TTS非常相似,但训练数据可能比较匮乏。先开发Zero-shot TTS,再用SALMONN那样的多模态理解模型来打标签(类似DALLE 3的做法),这种数据集构造方式可能是更好的选择。

另外,对于语音的解码方案,倾向认为:

  1. 如果要做流式推理,外接HiFiGAN这类声码器的方式可能不太合适——HiFiGAN并不天然支持流式解码。相反,SoundStream和Encodec这类方法既有流式变体也有非流式变体。
  2. 先做语义token的解码,大概率是自回归解码。语义token建模的是上下文依赖关系,自回归方法已经在NLP上证明了它的有效性。
  3. 再做声学token的解码,扩散或Flow-Matching可能是更好的选择,它们能很好地修补语音的细节。

除了上面这些,Zero-shot TTS还有很多值得研究的方法,限于篇幅不再详述:HierSpeech++、Base TTS、Voicebox/Audiobox、UniAudio、Make-a-Voice等。

04 其他问题

如果聚焦于GPT-4o的语音多模态,还有几个问题值得关注:

  1. 语音交互如何做到低延迟?大概率需要流式切片处理,主要工作在于工程优化,比如用C++重写算子。推理框架方面,TensorRT、MNN等都可以。前面讲到的音频离散化方法(如SoundStream、Encodec)也支持流式处理。
  2. 语音对话中怎么实现打断?个人认为有两种可能的方案:turn-based和流式处理。Turn-based方案比较工程化,简单说就是检测是否有停顿,如果一段时间内没有声音,模型就开始返回语音回复。流式方案则是模型一直在接收用户的流式语音输入,判断是否应该输出语音回复——一个充分训练的模型应该能准确预测出语音词表中的[START]和[END]。

05 对游戏配音业务的思考

Text/prompt-guided Zero-shot TTS方法对游戏的AI配音意义重大,主要体现在两个方面:

  1. 用自然语言提示合成音色稳定的语音,摆脱对参考音频的依赖,在业务中更灵活。至少比克隆已有角色语音的方式更方便,也更不容易出戏。举个例子,在开放世界剧情类游戏的研发阶段,我们会给NPC设定一些profile,让玩家跟NPC聊天。我们曾经尝试克隆《原神》《崩坏:星穹铁道》已有角色的声音来给NPC配音,放在欧美背景的NPC身上,违和感很强——没有现实世界中的accent,不够decent。
  2. 剧情任务中的配音会更真人化、更有沉浸感。过年期间过《崩坏:星穹铁道》花火和黑天鹅的同行任务时,部分NPC角色会带有六公主的翻译腔——这是花火行于欢愉命途的恶趣味,空气中顿时充满了快活的味道。如果走BV2、GSV的语音克隆方案,很难达到这种效果。而且,玩家在剧情任务中会经过不同的地势地貌,室内室外的声音听起来应该有区别——室内的声音至少会有回响和混响吧?这种感觉,语音克隆方案同样无法做到。

06 全文总结

总结一下本文的内容。GPT-4o语音多模态的实现可能走了以下的技术路线:

  1. 音频和文本的tokenizer实现,应该用了语音离散化部分讲的技术(如SoundStream、Encodec、SpeechTokenizer),或者MEL+VQ再配合声码器来解码。参考Zero-shot TTS、AudioLM/AudioPaLM、SpeechGPT-Gen等工作的结果,LLM中语音token的解码应该是层次化或多步的——先解码语义特征,再解码声学特征,或者先解码MEL再加HiFiGAN这样的声码器。另外,如果是做音频/语音/音乐这类通用声音合成,可能也能通过prompt来控制。AudioLDM 2虽然做了这方面的尝试,但音频/音乐和语音的参数其实不一样,说到底还不是同一个模型。
  2. 对于指令微调,数据集的构造非常重要,大概率要用到合成数据。一方面,网络上高质量语音数据的量级远不及文本,直接拿ASR数据做肯定会影响模型合成语音的音质;另一方面,大语言模型生成的指令往往触及不到语音的细粒度特征,这样的指令其实无法准确详尽地描述文本和语音之间的关系。因此,需要引入强大的Zero-shot TTS模型来合成高质量语音,再用多模态语音理解模型来给合成语音打标签,也可以评分、筛选。
  3. 最后是要让大模型的输出对齐人类的偏好。这方面的方法很多,DPO、PPO什么的都可以用。

图27:全文总结,可能的roadmap

关于宇宙的好的网名有哪些
关于宇宙的好的网名有哪些

类型:角色扮演

大小:1

语言:简体中文

平台:互联网

游戏下载

热门手游

手机号码测吉凶
本站所有软件,都由网友上传,如有侵犯你的版权,请发邮件haolingcc@hotmail.com 联系删除。 版权所有 Copyright@2012-2013 haoling.cc