Moshi:
github.comMini-Omni:
github.com九月截止当前,最重要的两个端到端(end2end)大语言模型(LLM)项目:Moshi 和 Mini-Omni,离追上 GPT-4o 的语音对话能力又近了一步。
- Moshi 是年中法国 Kyutai 实验室发布的模型demo,仅160 毫秒的理论延迟,在 L4 GPU 上的实际整体延迟低至 200 毫秒,项目终于开源。技术报告里的细节印证了部分为什么当时体验经常有莫名其妙打断用户对话的情况,下面会展开说明。
- Mini-Omni 月初异军突起的项目,比 moshi 早发布 2 个星期,在 Git 上收获 2.4k stars。moshi 一发布,就显得逊色许多,但项目第一作者 Xie Zhifei,仅是清华大学硕士一年级学生,这就非常离谱了……
- 2 个月前我在这篇(
web-next.okjike.com)提到“真·首个开源”的端到端大语言模型 SpeechGPT,实验组只有 1 人。Mini-Omni 在提升输出体验情况下,还公布了一系列的训练方法、合成数据集,作者也仅仅 2 人,还是太卷了。
---- 以下是正文 ----
大语言模型(LLM)。
- Moshi 内置自研的 7B 的时间序列变换器(Temporal Transformer)模型,处理长序列的音频内容。这个模型的参数在不同的音素流之间是共享的,这意味着它能够处理多个音素流,如用户的语音输入和 Moshi 的回应输出。而 Moshi 本身就是支持全双工(full-duplex)的大语言模型,就是说用户的音频输入不会被模型的输出(即 Moshi 的回应)所影响。这里的仿真程度和人脑思考的链路基本一致,你在说话的时候,被动地接受其他人的输入其实逻辑上应该不会,也不能影响你的输出,甚至还要一边接受输入一边输出,比如一边写文章一边听歌,或者一边打游戏一边看视频。Moshi 还引入了小模型深度变换器(Depth Transformer)模型,没有说明参数量。这个模型可以理解为单独处理音频细节的,比如说话人的声音、情感、语调、重音以及背景噪音等声学特征。
- Mini-Omni 是 Qwen 的 0.5B 参数模型,智能程度相对有限。它的处理逻辑相当于把原本暴露出去的工程编码部分缝合在一起(其实 moshi 也是,MO 能讲的地方不多)。
音频编解码器。
- Moshi 内置了自研 Mimi 模块,这个独立模块能同时处理输入和输出音频流,转为模型可读的离散音素(speech tokens)。Mini-Omni 用 Whisper 编码器处理输入音频(并行处理文本标记(text token)),输入用损耗小的 SNAC 音乐级编码器处理输出。
- 输出速率上没有太明显差异,Mimi 使用了 8 个级别的向量量化(RVQ),每一帧(每 1/12.5 秒)生产一个由 8 个音素组成的序列,每秒 Mimi 处理 12.5 帧×8 音素/帧 = 100 个音素;SNAC 有 8 层码本,每秒处理数也大约是百个。
生成策略差异。
- Moshi 是多流的生成模型,能够同时处理用户和系统的语音流。在生成系统回应时,Moshi 首先在内部生成时间对齐的文本标记,这些文本标记作为语音回应的前缀,帮助模型更准确地理解和生成语言内容。这套系统称之为内部独白(Inner Monologue),模拟人在对话过程中“预备输出”的过程,也就是当我们在听某个人发言的时候,相应地会准备针对发言人的内容做出回应内容。独白能力是一种类人思考的仿真系统,但目前策略是不可调整,比如业务可能需要大语言模型能突然打断用户发言并输出新的内容。
- Mini-Omni 并行音频和文本的编码,通过文本指导音频输出。这是当前主流业务比较喜欢的文本和音频并行输出模式。
项目扩展。
- 架构上,相较于 Mini-Omni,Moshi 不算特别灵活。Mini-Omni 提出了一种方法“Any Model Can Talk”,通过三阶段训练:模态对齐-适应训练-多模态微调,对原始大语言模型进行最少的训练和修改,使其发展出自己的语音能力。具体是通过额外的适配器和预先训练的模型来扩展语音功能,并使用少量合成数据进行微调,可以在新模态中启用流式输出,同时保留原始模型的推理能力。更大参数的大语言模型扩展出音频流输入输出变成可能,那智能问题可能就不是问题了。另外针对现有数据集,混合代码和长文本过多的问题,Mini-Omni 开源了 VoiceAssistant-400K 数据集,其中包含超过 400,000 个由 GPT-4o 专门生成的条目,用于有监督微调(SFT)。