Metadata-Version: 2.5
Name: fireredtts3-mnn
Version: 0.1.0
Summary: FireRedTTS3 zero-shot TTS on MNN int8 (CPU, torch-free, ~4x faster)
License: Apache-2.0
Requires-Python: >=3.10
Requires-Dist: huggingface-hub
Requires-Dist: mnn
Requires-Dist: numpy
Requires-Dist: tokenizers
Description-Content-Type: text/markdown

# fireredtts3-mnn

FireRedTTS3（零样本语音克隆 / 多语言 TTS）的 MNN 部署：ONNX → MNN int8 量化，
纯 CPU、无 torch 依赖，相比 fp32 基线约 **4 倍加速**。

## 一键运行（uvx）

```sh
uvx fireredtts3-mnn
```

首次运行自动从 Hugging Face 下载模型权重（~12GB）与 MNN 产物（int8，~5GB），
然后启动 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
```

单次合成（不启动服务）：

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

## 模型目录

默认缓存到 `~/.cache/fireredtts3-mnn`：
- `weights/` 官方权重（来自 `FireRedTeam/FireRedTTS3`）
- `mnn/` 转换产物（11 个 MNN：campp / redae 编解码 / qwen3 prefill+step(KV cache) / patch_encoder / dit / 线性头，int8 量化）

可用 `FIREREDTTS3_MNN_REPO` 环境变量覆盖产物仓库，`HF_ENDPOINT` 走镜像。

## 转换流程（复现）

```sh
# 1) PyTorch -> ONNX（export_onnx.py，见仓库 scripts/）
# 2) ONNX -> MNN（MNNConvert，--weightQuantBits 8 或 mnnquant 全量 int8）
# 3) 校准数据：make_calib.py 用真实管线 dump 中间张量
```

## 说明

- 语言标签支持 README 所列 24 种语言与 21 种中文方言（如 `ZH_Sichuan`）
- 未提供参考音频时使用静音 prompt（语音克隆效果依赖参考音频质量）
