苹果接入GPT-4o,Siri史诗级加强背后的语音技术是如何实现的?
共 22813字,需浏览 46分钟
·
2024-06-14 10:33
👉目录
1 语音的离散化:向 LLM 看齐!
2 让 LLM 理解语音 token!
3 LLM 如何合成语音:Zero-shot TTS
4 其他问题
5 对游戏配音业务的思考
6 全文总结
在语音方面,GPT-4o 做到了实时低延迟,平均响应时间与人类反应速度相当,输出的语音能够理解极度贴合对话上下文,能够理解人类的情感情绪,听觉质量上佳,与真人无异。这背后的技术实现,是怎么做到的?
马斯克在 X(原Twitter)上的连番炮轰,为这个新闻增添了又一轮热度,他表示倘若苹果在操作系统层面集成 OpenAI,他就将禁止其设备进入自己旗下的公司,指责苹果这是出卖用户数据。并且配了一张意味深长的图:
技术背后的八卦与口水战,看看就好,技术人还是要回归技术的本源,去了解那些真正底层的知识价值。为什么 GPT-4o 的出现改写了人机交互?又为什么 GPT-4o 的语音技术颠覆了此前所有的语音助手功能?本文作者将为你详细解析。
-
语音如何离散化? -
如何让 LLM 理解语音的 token?加入语音 token 之后,LLM 在语音数据的理解上是否具有涌现性? -
LLM 如何合成/解码语音?
01
02
-
要想让 LLM 输出上下文连贯的高表现力语音,必须要让 LLM 看到语义 token 和声学 token,只有语义 token,那语音就会显得呆板机械,只有声学 token,那语音就不知所云; -
LLM 的指令微调同样可以迁移到语音-文本多模态领域中,LLM 的指令微调同样可以带来如同 NLP 一样的涌现性; -
高质量指令微调数据集的构建应该是最大的瓶颈!一下子让 LLM 同时做语音理解和语音生成,难度非常大。不如分步进行。 -
如果要分步进行的话,要先实现一个类似于 SALMONN[10] 那样的多模态理解模型和一个强大的 Zero-shot TTS 模型。前者用于给语音数据打上丰富的标签,可以是情感情绪、韵律、音高、语速,也可以是口音、意图和说话环境;后者则用于生成高质量的语音数据。毕竟,高质量的、文本和语音严格对齐的 TTS 数据实在是太少了,尤其是中文领域。有了这两个模型的加持,我们其实就能够构造出高质量的指令微调数据集。我不知道 OpenAI 是否有 SALMONN 这样的模型,但 OpenAI 的 OpenVoice 模型应该足够为其提供高质量的语音数据了。
03
-
语音既有语义 token,又有声学 token,应该要如何解码成语音? -
SLM 在合成语音的过程中是否能够遵循多轮对话中的文本指令和语音指令?这个很重要!这允许模型根据用户的即时要求来生成语音回复。比如说,OpenAI 演示视频中出现的:“将语速提高两倍”、“采用更加机械化的语气”这样的要求。
-
在 LLM 大行其道、scaling law 大显神威的时代,TTS 模型的训练数据规模已经突破了万小时,甚至达到了数十万小时的级别。在大数据的加持下,TTS 任务上也涌现出了 in-context learning 能力。 -
语音信息的解码通常都要层次化或者多步进行,不能一步到位。自回归、扩散模型和流匹配都能在 TTS 中发挥作用; -
借鉴 NLP instruction fine-tuning 和文生图的经验,TTS 模型同样可以遵循文本指令或者语音指令,合成符合用户即时要求的语音,摆脱对参考音频的依赖,这或许也能规避一些知识产权的困扰(比如最近有名的寡姐投诉 OpenAI 事件)。同时,用户也能在对话过程中随时切换语音回复的风格,这一点在 OpenAI 的 demo 中有很明确的体现。另外,不知道大家有没有注意,GPT-4o 合成的语音是可以是放映所处的声学环境的:有一段语音背后似乎是有钢琴声的。 -
text-guided zero-shot TTS 在模型架构上和 zero-shot TTS 有非常大的相似性。但训练数据可能较为缺乏。先开发 zero-shot TTS,再用类似 SALMONN 那样的多模态理解模型来打标签(类似 DALLE3 的做法),这样数据集构造方式,可能会是更好的选择。
-
如果要做流式推理,外接类似 HIFIGAN 这样的声码器的方式可能不是好的选择。HIFIGAN 并不天然支持流式解码。相反地,诸如 SoundStream 和 Encodec 这样的方法,同时有流式变体和非流式变体; -
先做语义 token 的解码,这个解码大概率是自回归解码。语义 token 毕竟是建模上下文依赖关系,自回归方法已经在 NLP 上证明了这一点; -
然后做声学 token 的解码,扩散或者 flow-matching 可能是更好的选择。扩散模型或者流匹配可以很好地修补语音的细节;
04
05
-
用自然语言提示去合成音色稳定的语音,摆脱对参考音频的依赖,在业务中能够更加灵活,至少比克隆已有人物/角色的语音的方式更加方便,更不容易出戏。举个例子,在开放世界剧情类游戏的研发阶段,我们会设定一些 profile 赋予 NPC,让玩家跟 NPC 聊天。我们曾经用克隆《原神》、《崩坏:星穹铁道》已有角色的方式赋予这些 NPC 角色语音,但放在那些欧美背景的 NPC 中,就是很有违和感,没有现实世界中的 accent,不够 decent。 -
剧情任务中的配音会更加真人化、更有沉浸感。过年期间过《崩坏:星穹铁道》花火和黑天鹅的同行任务的时候,部分 NPC 角色会有六公主的翻译腔,这是花火行于欢愉命途的恶趣味,空气中顿时充满了快活的味道。如果走 bv2、gsv 的语音克隆方案,应该是很难有这种效果的。而且,玩家在剧情任务中势必会经过不同的地势地貌,至少室内、室外的声音听起来是有不同的。室内的声音至少会有回响、混响的吧。这种感觉语音克隆方案也是无法做到的。
06
-
audio & text tokenizer 的实现应该是语音离散化部分所用的技术,例如 SoundStream、Encodec、SpeechTokenizer,或者是 MEL+VQ 最后配合声码器来解码;参考 zero-shot TTS、AudioLM/AudioPaLM、SpeechGPT-Gen 等工作的结果,LLM 中语音 token 的解码应该是要走层次化或者多步的方法,先解码语义特征,再解码声学特征,或者是先解码 MEL,再加一个HIFIGAN 这样的声码器。另外,如果做 audio/speech/music 这样的通用声合成的话,可能也能通过 prompt 来控制。AudioLDM2 虽然做了这方面的工作,但 audio/music 和 speech 的参数其实是不一样的,说到底还不是同一个模型。 -
对于指令微调,数据集的构造非常重要,大概率要用到合成数据。其一,网络上高质量语音数据的量级远远不及文本,直接拿 ASR 数据来做肯定会影响模型合成语音的音质;其二,大语言模型合成的 instruction 往往触及不到语音的细粒度特征,这样的 instruction 其实无法准确详尽地描述 text 和 speech 之间的关系。因而,需要引入强大的 zero-shot TTS 模型合成高质量语音,然后用多模态语音理解模型来为合成语音打标签,当然也可以评分做筛选什么的。 -
最后是要让大模型的输出对齐人类的偏好。这方面的方法有很多,有 DPO、PPO 什么的,都可以用。
作者主页链接:https://www.zhihu.com/people/wen-xue-zhi-45/posts
📢📢欢迎加入腾讯云开发者社群,享前沿资讯、大咖干货,找兴趣搭子,交同城好友,更有鹅厂招聘机会、限量周边好礼等你来~
(长按图片立即扫码)
评论