MOSS-TTS 时长控制完全指南:用 tokens 参数精确调节语速与节奏
【免费下载链接】MOSS-TTSMOSS‑TTS Family is an open‑source speech and sound generation model family from MOSI.AI and the OpenMOSS team. It is designed for high‑fidelity, high‑expressiveness, and complex real‑world scenarios, covering stable long‑form speech, multi‑speaker dialogue, voice/character design, environmental sound effects, and real‑time streaming TTS.项目地址: https://gitcode.com/GitHub_Trending/mo/MOSS-TTS
MOSS-TTS 是 MOSI.AI 与 OpenMOSS 团队开源的语音生成模型家族,其旗舰模型 MOSS-TTS 支持token 级时长控制——只需一个tokens参数,就能精确指定合成语音的时长,从而直接调节语速与节奏,适合配音、有声书、视频口播等对时长有严格要求的场景。
一、tokens 参数是什么?1 秒 ≈ 12.5 个 tokens
MOSS-TTS 把语音转成离散音频 token 序列,其音频分帧率为12.5 Hz(即每秒约 12.5 个 tokens)。这是官方文档给出的核心换算规则:
| 换算关系 | 数值 |
|---|---|
| 分帧率 | 12.5 tokens/秒 |
tokens=125 | ≈ 10 秒 |
tokens=325 | ≈ 26 秒 |
tokens=600 | ≈ 48 秒 |
💡 理解了"tokens = 时间轴上的帧数",时长控制就变成了一道简单的乘法题:想要 N 秒的语音,就设
tokens = N × 12.5。
二、如何设置 tokens:三步上手
在官方示例中,时长控制只需在构建用户消息时传入tokens参数(详见 README.md 与 docs/moss_tts_model_card.md 的 Duration control 章节):
conversations = [ # 默认语速(不传 tokens) [processor.build_user_message(text=text_2)], # 时长控制:同一段文本,压缩到约 26 秒 / 放慢到约 48 秒 [processor.build_user_message(text=text_2, tokens=325)], [processor.build_user_message(text=text_2, tokens=600)], ]快速开始:
git clone https://gitcode.com/GitHub_Trending/mo/MOSS-TTS cd MOSS-TTS uv pip install -e .tokens是build_user_message的可选参数(类型int),官方文档定义:"Expected number of audio tokens. 1s ≈ 12.5 tokens"。不传时模型按自然语速合成。
三、语速调节实用技巧:从文本长度估算合理 tokens
在 Gradio 演示应用 clis/moss_tts_app.py 中,官方内置了一套"文本长度 → tokens"的估算逻辑,可直接借鉴:
| 文本语言 | 每字符经验 token 数 | 说明 |
|---|---|---|
| 中文 | ≈ 3.1 | 中文信息密度高,token 消耗快 |
| 英文 | ≈ 0.9 | 英文单位长度 token 消耗少 |
演示应用会自动把滑块限制在默认值的 0.5 倍 ~ 1.5 倍区间内(见 moss_tts_app.py 中estimate_duration_tokens),这是一个很实用的经验区间:
- tokens 低于默认值 50%:语音会明显加快,可能显得急促;
- tokens 高于默认值 150%:语音会明显拖慢,可能显得不自然。
🎯建议工作流:先用默认语速生成一遍,再按 ±20%~50% 微调tokens,试听后确定最终值。
四、MossTTSDelay 架构:时长控制为什么稳定
MOSS-TTS 采用MossTTSDelay架构:单 Transformer 主干 + 多头并行 RVQ 预测 + delay 调度,长上下文稳定性强,这正是 token 级时长控制可靠的前提——模型在 12.5 Hz 的固定时间轴上逐帧生成音频 token,目标 tokens 数量即目标时长。
其他支持时长控制的模型:
- MOSS-TTS-Local-Transformer-v1.5:同样使用 12.5 Hz 分帧率,
tokens=125即约 10 秒,见 moss_tts_local_v1.5/README.md - MOSS-SoundEffect:音效生成也支持
tokens时长标签,规则相同(1s ≈ 12.5 tokens),见 docs/moss_sound_effect_model_card.md
五、tokens 与 [pause X.Ys] 的区别:全局节奏 vs 局部停顿
| 控制方式 | 作用范围 | 适用场景 |
|---|---|---|
tokens=N | 全局:整段语音总时长 | 卡准片尾时间、控制整体语速 |
[pause X.Ys] | 局部:文本内指定位置插入停顿 | 强调、留白、自然呼吸感 |
v1.5 还支持显式停顿标记,例如:
text = "我今天学习了一首中国的古诗,它的名字是[pause 3.2s]静夜思!" [processor.build_user_message(text=text)]两者可组合使用:tokens管"总时长预算",[pause]管"节奏编排"。
六、常见问题与注意事项
Q1:Continuation(续写)模式为什么不能用 tokens?续写模式依赖前缀音频自然延续,官方演示中该模式下时长控制会被自动禁用("Duration control is disabled for Continuation modes.",见 moss_tts_app.py 的supports_duration_control)。
Q2:tokens 设很大,语音会无限长吗?不会。model.generate中的max_new_tokens(示例默认 4096,即约 5.3 分钟)是硬上限,tokens只是期望值。
Q3:语速加快后会不会变"电音"?适度调整(0.5~1.5 倍默认 tokens)下音质保持稳定;超出该区间时节奏可能不自然,建议结合采样参数(audio_temperature等)综合调优,参数说明见 docs/moss_tts_model_card.md 的 Generation Hyperparameters 表格。
七、相关文档导航
| 资料 | 路径 |
|---|---|
| 旗舰模型卡(含 tokens 参数定义) | docs/moss_tts_model_card.md |
| 交互式演示(带时长滑块) | clis/moss_tts_app.py |
| Local v1.5 推理示例 | moss_tts_local_v1.5/README.md |
| 音效时长控制 | docs/moss_sound_effect_model_card.md |
掌握tokens × 12.5 = 秒数这一条规则,你就能在 MOSS-TTS 中精确控制每一句语音的语速与节奏,让合成音频严丝合缝地匹配你的内容节奏。
【免费下载链接】MOSS-TTSMOSS‑TTS Family is an open‑source speech and sound generation model family from MOSI.AI and the OpenMOSS team. It is designed for high‑fidelity, high‑expressiveness, and complex real‑world scenarios, covering stable long‑form speech, multi‑speaker dialogue, voice/character design, environmental sound effects, and real‑time streaming TTS.项目地址: https://gitcode.com/GitHub_Trending/mo/MOSS-TTS
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考