Skip to main content

fireredtts3-mnn

FireRedTTS3(零样本语音克隆 / 多语言 TTS)的 MNN 部署:ONNX → MNN 分段转换 + 混合精度(编码器/解码器/DiT/embed 用 fp16 近无损,backbone 用 w8 权重量化),纯 CPU、无 torch 依赖。

一键运行(uvx)

uvx fireredtts3-mnn

首次运行自动从 Hugging Face 下载 tokenizer(~11MB)与 MNN 混合精度产物(~5.3GB),然后启动 HTTP TTS 服务:

POST /tts
{
  "text": "今天天气很好,我们一起去公园散步吧。",
  "prompt_text": "参考音频对应的文本",
  "prompt_audio_b64": "<参考音频 wav 的 base64>",
  "prompt_audio_sr": 16000,
  "language": "Chinese"        # 可选,默认 Chinese
}
-> {"audio_b64": "<合成 wav base64>", "sample_rate": 24000}

GET /health

单次合成(不启动服务):

uvx fireredtts3-mnn --text "你好世界" --prompt-wav ref.wav --prompt-text "参考文本" --out gen.wav

模型目录

默认缓存到 ~/.cache/fireredtts3-mnn:

  • weights/ 文本 tokenizer(来自 FireRedTeam/FireRedTTS3,运行时为纯 numpy,无需原始权重)
  • mnn/ 转换产物(19 个分段 MNN:campp / redae 编解码 / patch_encoder / dit / 线性头 / embed / norm / prefill_seg1-4 / step_seg1-4,backbone 8.5GB 拆 8 段解决 MNNConvert 无法读 ONNX external data 与 protobuf 2GB 上限)

产物仓库默认 yunfengwang/fireredtts3-mnn(fp16 + w8 混合精度版),可用环境变量覆盖:

export FIREREDTTS3_MNN_REPO="your-hf-account/fireredtts3-mnn"

HF_ENDPOINT 环境变量可走 HF 镜像(hf-mirror.com)。

转换流程(复现)

# 1) PyTorch -> ONNX 分段导出(export_split.py:手写层 _LayerCore + dynamo,opset 18)
# 2) inline 合并(inline_onnx.py,<2GB 内联单文件)
# 3) ONNX -> MNN(convert_mnn.py:小模型 --fp16,backbone 分段 --weight-quant-bits 8)

注:本机环境 mnnquant(全 int8 激活+权重)C++ 崩溃不可用;纯 w8 权重量化对编码器/解码器/DiT 误差过大(prompt latents 最大偏差 1.7),故这些组件发布 fp16(实测偏差 ≤0.08,端到端与 torch 同种子轨迹一致),backbone 分段保持 w8(已验证 stop 轨迹 40 步内与 torch 一致)。

精度对比(各组件输出 vs torch fp32 的最大绝对误差)

组件 w8(int8 权重) fp16 fp32
redae_encoder(prompt latents) 1.69 0.059 2.8e-4
campp(spk_emb) 0.61 0.080 1.9e-3
redae_decoder(feats) 0.27 — 3.1e-5
dit(v) 0.093 0.014 1.0e-5
backbone 分段 stop 轨迹与 torch 一致 — 一致

分块 int8(--weightQuantBlock 64)实测与逐通道 int8 误差几乎相同,无法改善。

性能实测

4 线程 Intel Xeon Platinum(AVX-512,无 VNNI/fp16 硬件),纯生成耗时(不含模型加载):

版本 RTF(越小越好)
torch fp32 原版 86.6
MNN fp16+w8(本包) 112
ONNX fp32(fireredtts3-onnx) 117

结论:

  • 无 VNNI / fp16 硬件的 CPU 上 int8/fp16 不提速(仅省体积),转换版比 torch/MKL 慢约 30%
  • w8 backbone 的加速在 VNNI(x86) / i8mm(ARM) 机器上才会体现;w8 同时把 backbone 从 11.3GB 压到 2.8GB
  • mnnquant 全 int8(激活+权重)在当前 MNN 构建上崩溃(std::length_error)不可用,且 Qwen3 激活 离群值高达 ~5e4,激活 int8 本身也会严重损伤音质

Metadata

Release files for fireredtts3-mnn 0.2.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for fireredtts3-mnn 0.2.2
File Size Uploaded
fireredtts3_mnn-0.2.2.tar.gz 13.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for fireredtts3-mnn 0.2.2
File Interpreter ABI Platform
fireredtts3_mnn-0.2.2-py3-none-any.whl Python 3 none any Details

Total release size: 30.6 kB

Release files / fireredtts3_mnn-0.2.2.tar.gz

Download URL fireredtts3_mnn-0.2.2.tar.gz
Size 13.4 kB
Tags Source
SHA-256 checksum
How to use checksums
83a874536e062dd3792b17e38ca70afc78a46ec178f3f64c299d8bbc8d2fa6bc
BLAKE2b-256 checksum
How to use checksums
feadcc88145973ad4141f75690248bfa6a262aad9b3deccfdf48c5d0e4636fcb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.4

Release files / fireredtts3_mnn-0.2.2-py3-none-any.whl

Download URL fireredtts3_mnn-0.2.2-py3-none-any.whl
Size 17.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
51c5fe1977012ee490eb107621470227369014f6169cd985c73ea9cbf2ca656c
BLAKE2b-256 checksum
How to use checksums
a05f0476dc9e333488dbe88c6b83d40f5b42b0bf855e9c6df78bec4c01157a3b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.4

Release history Release notifications | RSS feed

This release

0.2.2 This release

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page