名字里带着 “Tiny”,不代表它就是更轻松的本地部署选择。对 Ming-3.0-TTS 来说,通常应先从稠密的 0.5B checkpoint 开始;只有明确需要多说话人播客生成时,Tiny 才值得考虑。问题在于硬件信息仍不充分:InclusionAI 只公布了 H800/H20 上的测试,并未给出面向消费级 GPU 的最低配置。
先选 checkpoint,再建环境
Ming-3.0-TTS 提供两个 checkpoint,底层架构、依赖组合和调用入口都不一样。0.5B 更适合作为首次安装的选择;如果说话人相似度或多角色对话比部署简便性更重要,Tiny 较大的体积才有其价值。
| 决策项 | Ming-3.0-tts-0.5B | Ming-3.0-tts-tiny |
|---|---|---|
| 架构 | 稠密 Qwen2.5-0.5B backbone | Ling V3 MoE,7.9B 总参数 / 1.3B 激活参数 |
| 官方 API 类 | ming_tts.MingTTS | ming_tiny.MingTinyTTS |
| 主要 CLI | infer.py | infer_tiny.py 及一键脚本 |
| 参考环境 | PyTorch 2.6、CUDA 12.4 | Python 3.10.15、PyTorch 2.7.1+cu118 |
| 已公开测试硬件 | 已测试 H800-80GB 和 H20-96G | 推荐 H800 |
| 选择它的独特理由 | 更小的稠密 checkpoint;厂商测试中韩语准确率和基础控制准确率更强 | 支持多说话人播客模式;厂商测试中中文/英文说话人相似度更强 |
| 公布的 checkpoint 体积 | 根据 OrcaRouter 报告的文件对比,约 2.96 GB | Hugging Face 上约 18 GB |
两个 checkpoint 都能生成 44.1 kHz 音频,支持七种语言,并通过独立任务模式提供声音克隆、音色设计、情绪、方言等控制能力。官方仓库以 MIT 协议发布两者,并明确指出:由于固定依赖不同,Tiny 必须使用独立环境,不能与 0.5B 混装。
“Tiny” 指的是 MoE 的激活计算量,而不是权重文件大小。Tiny 模型卡标注其 backbone 为 7.9B 参数、每个 token 约有 1.3B 参数激活,整个仓库约为 18 GB。
本地部署全流程:克隆、下载、校验
要稳定地本地部署 Ming-3.0-TTS,两个模型必须分开使用环境。官方代码只需克隆一次,但应只安装所选 checkpoint 对应的依赖,下载权重后先运行匹配的预检脚本,再尝试加载模型。
部署 0.5B 环境
仓库和基础环境的安装流程很短:
git clone https://github.com/inclusionAI/Ming-3.0-tts.git
cd Ming-3.0-tts
conda create -n ming-tts python=3.10 -y
conda activate ming-tts
pip install -r requirements.txt
0.5B 模型卡给出的参考配置是 PyTorch 2.6、CUDA 12.4 和 transformers==4.46.3。FlashAttention 并非必需;无法使用时会回退到 PyTorch SDPA。这个回退路径能保证兼容性,但项目没有公布其带来的具体性能损失。
数字、日期、单位和符号通过 FST 文本规范化处理。请通过 Conda 安装固定版本的 Pynini:
conda install -c conda-forge pynini==2.1.6
pynini 并没有通用 wheel。使用 --no_text_normalization 可以跳过它,但缩写、日期、数字和符号会原样交给合成器处理,因此这更适合排障,不应作为生产环境默认配置。
Tiny 必须单独建环境
不要在 0.5B 的环境上直接安装 Tiny。官方配置固定使用 Python 3.10.15、CUDA 11.8 wheel、PyTorch 与 torchaudio 2.7.1,以及 transformers==4.46.3:
conda create -n ming-tiny python=3.10.15 -y
conda activate ming-tiny
pip install -r requirements-tiny.txt
Tiny 使用 BF16 计算、可移植的 MoE 循环和 FP32 循环状态。InclusionAI 推荐使用 NVIDIA H800;文档中没有提供受支持的 CPU、Apple Silicon、GGUF 或 llama.cpp 路线。
下载并校验任一 checkpoint
通过 Hugging Face CLI,可以把权重下载到可预测的本地目录:
pip install "huggingface_hub[cli]"
hf download inclusionAI/Ming-3.0-tts-0.5B \
--local-dir Ming-3.0-tts-0.5b
python tools/preflight.py --model_path Ming-3.0-tts-0.5b
如果使用 Tiny,替换模型 ID 并运行专属校验器:
hf download inclusionAI/Ming-3.0-tts-tiny \
--local-dir Ming-3.0-tts-tiny
python tools/preflight_tiny.py --model_path Ming-3.0-tts-tiny
预检脚本会检查 checkpoint 和 tokenizer 的结构,但不会加载权重。中国大陆用户也可以改用项目 README 中说明的 ModelScope 下载命令。
先生成一个 WAV,再考虑接服务
最有价值的首次验证,是通过仓库 CLI 生成一个 WAV。以 0.5B 的声音克隆为例,需要提供目标文本、参考 WAV、参考音频的精确转写,以及 --use_spk_emb;转写文本属于条件输入链路的一部分,不是可有可无的元数据。
python infer.py \
--model_path Ming-3.0-tts-0.5b \
--task TTS \
--language_id English \
--text "The release candidate passed every audio check." \
--prompt_wav_path reference.wav \
--prompt_text "This is the exact speech in the reference recording." \
--use_spk_emb \
--output output/first.wav
输出应为 44.1 kHz 的 WAV。如果 checkpoint 校验通过、这条命令却失败,应先检查 CUDA/PyTorch 兼容性和参考音频文件,而不是急着加 UI 或服务层。Hugging Face 仓库仅分发 checkpoint;两个模型卡都说明,实际推理还需要单独获取 GitHub 仓库。
参考录音应尽量干净,转写必须精确。官方文档没有公布理想的参考音频时长,因此不要把未经说明的经验法则当成硬性校验标准。
通过统一语音端点提供 Ming-3.0-TTS
SGLang-Omni 可以在一张 GPU 上,通过 POST /v1/audio/speech 暴露任一 checkpoint。Ming-3.0-TTS SGLang cookbook 中的架构是:预处理放在 CPU,backbone 和 AudioVAE 解码器则共同放在同一张 GPU 上。
启动一个 checkpoint:
sgl-omni serve --model-path inclusionAI/Ming-3.0-tts-0.5B
随后请求一个 WAV:
curl http://127.0.0.1:8000/v1/audio/speech \
-H "Content-Type: application/json" \
-d '{
"model": "inclusionAI/Ming-3.0-tts-0.5B",
"input": "The local speech endpoint is ready.",
"response_format": "wav",
"seed": 123
}' \
--output speech.wav
该端点支持 wav、mp3、flac 和 pcm,默认格式为 WAV。空输入会返回 HTTP 400。model 字段必须与启动服务时使用的 checkpoint 一致。
不要按 token 式流播放来设计客户端。SGLang cookbook 说明,即使指定 stream=true,服务仍会等到生成结束,再返回一个完整的 PCM 响应体。它还只接受一段参考录音用于克隆;传入第二段参考音频会被拒绝。
控制能力依赖任务模式,不能随意叠加
Ming-3.0-TTS 的各项控制能力对应独立的任务契约。请求应选择与目标输出匹配的任务,而不是在一次调用中组合所有可用控制项。
| 目标 | 0.5B 任务 | Tiny 任务 | 关键输入规则 |
|---|---|---|---|
| 克隆单一声音 | TTS | seed | 参考音频加精确转写 |
| 德语、西班牙语、法语、韩语或日语 | MULTILINGUAL | multilingual | 参考音频和转写;明确指定目标语言 |
| 插入笑声、叹气或呼吸声 | TTS | paralinguistic | 中文或英文;使用文档规定的行内标签 |
| 用自然语言指示表达方式 | FREEFORM | freeform | 建议不使用参考音频;不要与其他控制任务组合 |
| 根据文本设计声音 | VOICE_DESIGN | voice_design | 不需要参考音频 |
| 设置情绪 | EMOTION | emotion | 需要参考音频;不需要参考转写 |
| 设置语速、音高和音量 | BASIC | basic | 三个控制项都要提供 |
| 四川话或粤语 | DIALECT | dialect | 不使用 language_id |
| 多说话人脚本 | 不支持 | podcast | 每位说话人各需一段参考音频和转写;每行以 speaker_N: 开头 |
官方 cookbook 明确表示,自由描述模式不能与声音设计、内置声音、情绪、方言或基础属性组合使用。单句中支持多个副语言事件,但仓库的限制说明指出,其稳定性仍弱于单一事件。
这些分数能说明什么,不能说明什么
现有公开证据支持一个明确的定位:0.5B 是默认选择,Tiny 则更像专项模型。官方 README 转载的 Artificial Analysis 结果显示,截至 2026 年 10 月,Ming-3.0-TTS 的 Controlled Voice Elo 为 1,069,发音鲁棒性为 93.2%;但这些榜单结论针对的是 0.5B,并不能直接证明 Tiny 的质量。
厂商评测确实展示了两个 checkpoint 之间的取舍。在 Seed-TTS 评测数据上,0.5B 的中文/英文 WER 为 0.800%/1.584%,Tiny 则为 0.820%/1.666%。Tiny 在两种语言上的说话人相似度更高:0.781/0.728,对比 0.5B 的 0.758/0.691。这些数字来自 InclusionAI 的评测表,并非可复现的本地测试结果。
Tiny 并不是在支持的七种语言中都更好。官方多语言表显示,Tiny 的韩语 CER 为 6.000%,而 0.5B 为 1.728%。只有 Tiny 支持播客功能,其公布的播客 CER 为 2.03%、条件说话人相似度为 0.561、UTMOS 为 2.12;但 InclusionAI 也将预测播客音频质量列为待改进项。
实际决策不应过度延伸:首次部署、韩语合成和希望降低运维复杂度时选 0.5B;只有需要生成播客,或者本地评测确认 Tiny 在你的参考音频上确实能兑现更高的说话人相似度时,才评估 Tiny。
必须在自己的硬件上做部署验证
官方安装成功,不等于它能在消费级 GPU 上满足生产要求。部署验收应记录峰值显存、首个完整 WAV 的生成时间、实时因子、失败率,以及应用实际会使用的语言和参考音频条件下的输出质量。
“暂时没有 GGUF/llama.cpp,也没有消费级 GPU 基准。” —— @TeksEdge on X
这项观察与官方证据边界一致:0.5B 文档列出 H800-80GB 和 H20-96G 测试系统,Tiny 则推荐 H800。两个官方模型卡都没有公布 RTX 4090、RTX 3090、Windows、WSL2、macOS、最低显存或实时因子结果。
建议按以下通过/失败流程验证:
- 运行对应的预检脚本,并保存输出及 checkpoint revision。
- 先通过内置声音或零说话人路径生成一段短 WAV,再用生产环境的参考音频格式重复测试。
- 针对短、中、长三种生产文本,测量峰值显存和实际耗时。
- 在所有将上线的语言中,分别评估可懂度和说话人身份一致性。
- 将每种所需控制能力作为独立任务测试;依赖不受支持组合的配置应直接淘汰。
- 针对完整波形 API 行为进行压力测试,包括请求超时和并发。
没有这些数据时,“能在本地跑”最多只能说明参考技术栈能在已公开的数据中心硬件上加载并完成合成。
Ming-3.0-TTS 常见问题
Ming-3.0-TTS 能在 RTX 4090 或 3090 上运行吗?
官方发布没有公布最低显存要求或消费级 GPU 基准。0.5B 是更合理的起点,但在确定使用任一卡之前,仍应在本地验证峰值显存分配和实时因子。
Ming-3.0-TTS 支持 Windows 或 macOS 吗?
官方参考环境是基于 CUDA 的 Linux 技术栈。官方仓库没有记录原生 Windows、WSL2、Apple Silicon、MLX、GGUF 或 llama.cpp 支持。
Ming-3.0-TTS 可以用于商业用途吗?
代码和已发布 checkpoint 均采用 MIT 协议。维护者在使用指南中禁止欺骗性或未经同意的冒充行为,并要求在合成语音可能被误认为真实录音时进行标注。
SGLang API 能实时流式输出音频吗?
不能。文档规定的 stream=true 行为是:生成完成后才返回一个 PCM 响应体。因此客户端应将其视为完整响应生成,而不是增量播放。
该选 Ming-3.0-tts-0.5B 还是 Tiny?
如果你需要更小的 checkpoint、更简单的部署、韩语合成或常规单说话人任务,先选 0.5B。只有多说话人播客生成不可或缺,或本地评测确认 Tiny 较高的中文/英文说话人相似度确实能迁移到你的声音素材时,再选择 Tiny。