- 人工智能
- 大模型
- 语音
- 音频
- 多模态
【免费下载链接】MGM-Omni-TTS-2B-0927
MGM-Omni-TTS-2B-0927 是开源全模态大模型 MGM-Omni 的语音生成(TTS)组件,核心机制是把语音拆成每层 6563 个语音 token、以25Hz 帧率逐帧生成,并用4 层并行解码实现低延迟流式输出与零样本语音克隆。本文带你从配置文件出发,一次读懂这套语音 Token 机制的实现原理。🎙️
一、它是什么:一个 2B 的"会说话"的大模型
MGM-Omni-TTS-2B-0927 由两部分组成:Qwen3-1.7B 语言模型基座+ 一个小型Qwen3 结构的 TTS 适配器,合计约 2B 参数。相比前代 MGM-Omni-TTS-2B,这个 0927 版本在朗读数学公式、URL 等"边角"场景下更稳健。
整个仓库的文件各司其职,先建立一张地图:
| 文件 | 职责 |
|---|---|
| model.safetensors | 2B 模型权重(LLM 基座 + TTS 适配器) |
| config.json | 架构定义与语音 token 核心配置 |
| generation_config.json | 采样参数(temperature、top_k 等) |
| cosyvoice2/cosyvoice2.yaml | 声学后端(Flow 解码器 + HiFT 声码器)配置 |
| cosyvoice2/speech_tokenizer_v2.onnx | 语音 tokenizer:把参考音频编码成语音 token(声音克隆的关键) |
| cosyvoice2/flow.pt、cosyvoice2/hift.pt | Flow 匹配解码器 / HiFT 声码器权重 |
| added_tokens.json | 全部 2.6 万+ 条语音 token 的映射表 |
| cosyvoice2/campplus.onnx | 说话人嵌入模型(192 维音色特征) |
💡 简单说:LLM 负责"想说什么",cosyvoice2/ 目录负责"怎么发声"。下面拆解两者之间的桥梁——语音 Token 机制。
二、6563 个语音 token 是怎么算出来的?
打开 config.json,有三个决定一切的数字:
tokenizer_text_size: 151672(文本词表,继承自 Qwen3)tokenizer_speech_size: 6563(每层语音 token 数量)vocab_size: 177924(总词表 = 151672 + 6563 × 4)
这个等式本身就揭示了机制:语音表示被拆成了 4 层(layer 0~3),每层拥有独立的 6563 个 token。
| 词表分区 | ID 范围 | 数量 | 命名(见 added_tokens.json) |
|---|---|---|---|
| 文本词表 | 0 ~ 151671 | 151672 | Qwen3 中英文文本 |
| 语音第 0 层 | 151672 ~ 158234 | 6563 | speech_layer_0_0… |
| 语音第 1 层 | 158235 ~ 164797 | 6563 | speech_layer_1_0… |
| 语音第 2 层 | 164798 ~ 171360 | 6563 | speech_layer_2_0… |
| 语音第 3 层 | 171361 ~ 177923 | 6563 | speech_layer_3_0… |
| 合计 | 0 ~ 177923 | 177924 | — |
那6563 = 6561 + 2呢?
- 6561:语义码本大小。来自 CosyVoice2 的语义 tokenizer——每一帧语音被映射为一个离散语义码,码本容量恰好是 6561(cosyvoice2.yaml 中 Flow 的
vocab_size: 6561与之对应); - 2:每层额外追加的
speech_layer_X_eos(结束)和speech_layer_X_pad(填充)两个特殊 token,例如词表最后两个 ID177922 = speech_layer_3_eos、177923 = speech_layer_3_pad。
📌一句话:6563 不是随意取的数,而是"6561 个语义码 + 层内控制符"的完整编码空间。
三、25Hz 帧率:语音如何被切成 40ms 一帧
在 cosyvoice2/cosyvoice2.yaml 中,token_frame_rate: 25定义了时间轴规则:
| 换算 | 数值 | 含义 |
|---|---|---|
| 每秒帧数 | 25 帧 | 25Hz 帧率,每帧 40ms |
| 每秒 token 数 | 25 帧 × 4 层 =100 个 | 每帧并行产出 4 个 token |
| token → mel 频谱 | token_mel_ratio: 2 | 1 个 token 上采样为 2 帧 mel(50Hz) |
| mel → 音频 | sample_rate: 24000 | 最终输出 24kHz 波形 |
25Hz 是一个"甜点位":帧率足够高以保留细腻韵律,又足够低让 LLM 序列保持短小。1 秒语音 = 25 帧 = 100 个 token,这对长文本连续朗读(官方支持 10 分钟以上)至关重要——序列不会随音频长度爆炸式增长。
四、4 路并行生成:把解码序列压缩到 1/4
这是 MGM-Omni 流式语音低延迟的关键设计,对应 config.json 中的:
"speech_token_count": 4, "speech_token_pre_pad": 4串行解码(传统做法):每个帧位置需要 4 次前向推理,依次吐出 layer_0 → layer_3 的 token,序列长度 ×4。
并行解码(MGM-Omni 做法):每个帧位置一次输出 4 个 token(每层各一个),LLM 需要生成的序列长度压缩到原来的1/4,首包延迟和逐字延迟随之大幅下降——这正是官方 README 中所说的 "parallel decoding approach for speech tokens enables efficient and smooth streaming audio"。
配合流式参数,形成完整的低延迟链路:
chunk_size: 25(cosyvoice2.yaml):每 25 个 token(恰好1 秒语音)切一个流式分块;num_decoding_left_chunks: 1:Flow 解码器只依赖 1 个左侧历史分块,保证因果、可流式;tts_adapter_type: qwen3+tts_adapter_config: "[6,2048,16_2,8192]":6 层、隐藏维度 2048 的轻量 TTS 适配器挂在 1.7B 基座之上,负责把文本语义"翻译"成语音 token 空间。
五、从 token 到 24kHz 音频:CosyVoice 声学后端
LLM 吐出的 token 还不是声音,后续交给 cosyvoice2/ 目录下的三级流水线:
- Flow 匹配解码(flow.pt,
CausalMaskedDiffWithXvec):把 25Hz 的语音 token 流(经上采样编码器升至 512 维)转化为 80 维 mel 频谱,同时注入 192 维说话人嵌入,决定"用谁的声音说"; - HiFT 声码器(hift.pt):mel → 24kHz 波形,
upsample_rates: [8, 5, 3]逐级上采样,并内置 f0 预测器还原音高,保证自然度; - 语音克隆:零样本克隆时,约 10 秒参考音频经 speech_tokenizer_v2.onnx 编码为同构的 4 层语音 token 作为 prompt,配合 campplus.onnx 提取音色特征——所以克隆语音与合成语音在 token 空间里是同一种"语言"。
六、关键配置速查表
| 参数 | 值 | 出处 | 含义 |
|---|---|---|---|
tokenizer_speech_size | 6563 | config.json | 每层语音 token 数(6561 码 + eos/pad) |
speech_token_count | 4 | config.json | 每帧并行生成的层数 |
tokenizer_text_size | 151672 | config.json | 文本词表大小 |
vocab_size | 177924 | config.json | 总词表 = 文本 + 4×6563 |
max_position_embeddings | 40960 | config.json | 支持长上下文长音频 |
token_frame_rate | 25 | cosyvoice2/cosyvoice2.yaml | 25Hz,每帧 40ms |
token_mel_ratio | 2 | 同上 | 1 token → 2 帧 mel |
chunk_size | 25 | 同上 | 流式分块 = 1 秒语音 |
sample_rate | 24000 | 同上 | 输出采样率 |
temperature / top_k / top_p | 0.6 / 20 / 0.95 | generation_config.json | 采样策略(兼顾自然度与稳定性) |
七、上手体验:30 秒克隆一个声音
推理入口在 MGM-Omni 主仓库中,一条命令即可零样本克隆:
python -m mgm.serve.cli_tts \ --model wcy1122/MGM-Omni-TTS-2B-0927 \ --ref-audio assets/ref_audio/Man_EN.wav- 提供
--ref-audio-text可给出参考音频的精确文本,否则系统会用 Whisper-large-v3 自动转写; - 中英文均可克隆,输出即 24kHz 自然语音。
总结
| 机制 | 一句话原理 |
|---|---|
| 6563 个 token | 6561 个 FSQ 语义码 + eos/pad,4 层 × 6563 拼入总词表 177924 |
| 25Hz 帧率 | 每秒 25 帧 × 4 层 = 100 token,1 秒语音仅 100 个序列位置 |
| 4 并行生成 | 每帧一次前向输出 4 层 token,序列长度压缩 1/4,流式低延迟 |
| 声学后端 | Flow 匹配解码 → HiFT 声码器,24kHz 输出,支持 10 秒参考音频克隆 |
这套"文本 LLM + 分层语音 token + 并行解码"的组合,让 MGM-Omni-TTS-2B-0927 在仅 2B 规模下同时做到了长音频连续生成、流式低延迟与零样本克隆——理解这 6563、25、4 三个数字,就理解了它的全部精髓。✨
- 人工智能
- 大模型
- 语音
- 音频
- 多模态
【免费下载链接】MGM-Omni-TTS-2B-0927
相关推荐
开源全模态语音生成新标杆!MGM-Omni-TTS-2B-0927 完整解析:为什么 2B 模型能生成 10 分钟自然长语音?
开源全模态语音生成新标杆!MGM Omni TTS 2B 0927 完整解析:为什么 2B 模型能生成 10 分钟自然长语音? MGM Omni TTS 2B
人工智能大模型语音音频多模态MGM-Omni-TTS-2B-0927架构深度剖析:Qwen3骨干如何与CosyVoice2联动打造2B语音大模型SpeechLM
MGM Omni TTS 2B 0927架构深度剖析:Qwen3骨干如何与CosyVoice2联动打造2B语音大模型SpeechLM MGM Omni TTS
人工智能大模型语音音频多模态为什么读数学公式和URL更稳?MGM-Omni-TTS-2B-0927与TTS-2B版本的核心差异对比
为什么读数学公式和URL更稳?MGM Omni TTS 2B 0927与TTS 2B版本的核心差异对比 MGM Omni TTS 2B 0927 是开源多模态项
人工智能大模型语音音频多模态
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考