# MOSS-TTS（仅 CPU，1亿）

MOSS-TTS 是一个开源语音生成系列，来自 **OpenMOSS** （上海创新机构，与 **复旦 NLP** 及 **MOSI.AI**合作，由邱锡鹏教授领衔）。旗舰型号 **MOSS-TTS-Nano** 仅有 **1 亿参数**，可在 **4 核 CPU 且无需 GPU**上实时运行，输出 **48 kHz 立体声**，并支持 **20 种语言** 进行零样本声音克隆。完整系列可扩展至 80 亿参数，用于多说话人对话、音色设计和音效生成。

{% hint style="info" %}
**发布时间：** 2026 年 4 月 10 日（Nano）· ONNX CPU 构建版 2026 年 4 月 17 日 · **许可证：** Apache 2.0
{% endhint %}

如果 Kokoro 占据了 8200 万参数的西方英语细分市场，那么 MOSS-TTS-Nano 占据的就是 **以 CPU 优先的多语种** 细分市场：同样的小模型理念，但支持立体声 48 kHz、20 种语言、声音克隆，以及无需 PyTorch 的 ONNX/GGUF 路径。对于任何想在不花 GPU 钱的情况下部署 TTS 的人来说——这就是那款模型。

### MOSS-TTS 系列

| 模型                             | 大小            | 显存            | 最佳用途                |
| ------------------------------ | ------------- | ------------- | ------------------- |
| **MOSS-TTS-Nano-100M**         | 1 亿           | 0 GB（CPU，4 核） | 实时、边缘设备、IVR、端侧      |
| **MOSS-TTS-Nano-100M-ONNX**    | 1 亿           | 0 GB（CPU）     | 无需 PyTorch 的生产级服务部署 |
| **MOSS-TTS-GGUF**              | 1 亿（Q4\_K\_M） | 0 GB（CPU）     | 类似 llama.cpp 的部署    |
| **MOSS-TTS-Local-Transformer** | 17 亿          | 4 GB          | 轻量级 GPU，较强的客观质量     |
| **MOSS-TTS-Realtime**          | 17 亿          | 4 GB          | 多轮语音代理，180 毫秒首字节时间  |
| **MOSS-VoiceGenerator**        | 17 亿          | 4 GB          | 从文本提示设计音色           |
| **MOSS-TTSD-v1.0**             | 80 亿          | 8 GB          | 多说话人对话、长播客          |
| **MOSS-SoundEffect**           | 80 亿          | 8 GB          | 带时长控制的音效生成          |

### 关键规格

| 规格              | 数值                                                                                                                              |
| --------------- | ------------------------------------------------------------------------------------------------------------------------------- |
| **开发者**         | OpenMOSS 团队 · MOSI.AI · 复旦 NLP 实验室                                                                                              |
| **架构**          | 自回归（音频分词器 + LLM）                                                                                                                |
| **采样率**         | 48 kHz，立体声                                                                                                                      |
| **语言**          | 20（zh、en、de、es、fr、ja、it、hu、ko、ru、fa、ar、pl、pt、cs、da、sv、el、tr，+1）                                                                 |
| **声音克隆**        | 基于约 3 秒参考音频的零样本                                                                                                                 |
| **流式输出**        | 支持——在 CPU 上分块解码                                                                                                                 |
| **许可证**         | Apache 2.0                                                                                                                      |
| **HuggingFace** | [OpenMOSS-Team](https://huggingface.co/OpenMOSS-Team)                                                                           |
| **GitHub**      | [OpenMOSS/MOSS-TTS-Nano](https://github.com/OpenMOSS/MOSS-TTS-Nano) · [OpenMOSS/MOSS-TTS](https://github.com/OpenMOSS/MOSS-TTS) |

### 为什么选择 MOSS-TTS？

* **零 GPU 部署** — Nano 可运行于 4 个 CPU 核心，无需 CUDA、无需 Triton
* **48 kHz 立体声输出** — 广播级，在 1 亿参数以下模型中很少见
* **20 种语言** — 比 Kokoro（约 5 种语言）在相近规模下覆盖更多
* **零样本声音克隆** 基于约 3 秒参考音频
* **无需 PyTorch 的 ONNX/GGUF 路径** — 可随 200 MB 二进制文件一起发布
* **系列可扩展** — 从 Nano 到 80 亿参数 TTSD 使用同一分词器/API
* **Apache 2.0** — 可商用，无额外限制
* **来自严肃研究** — 复旦 NLP + MOSI.AI，不是业余项目

## 配置要求

| 组件     | 最低配置（Nano，CPU）       | 推荐配置（Nano，CPU） | 完整系列（GPU）       |
| ------ | -------------------- | -------------- | --------------- |
| CPU    | 4 核（x86\_64 / ARM64） | 8 核            | 8 核             |
| 内存     | 4 GB                 | 8 GB           | 16 GB           |
| GPU    | —（非必需）               | —（可选）          | RTX 3060 12 GB+ |
| 显存     | 0 GB                 | 0 GB           | 4–8 GB          |
| 磁盘     | 1 GB                 | 2 GB           | 10 GB（8B + 依赖）  |
| Python | 3.12                 | 3.12           | 3.12            |

{% hint style="success" %}
**Clore.ai 提示：** Nano 真的不需要 GPU。如果你已经有一台 Clore 机器用于其他工作，那么 TTS 就是免费的。如果你 *想* 要一块 GPU 用于批量吞吐或运行 17 亿/80 亿版本，那么 **RTX 3060 12GB（约 0.10–0.30 美元/天）** 都算大材小用。
{% endhint %}

## 方案 A —— Python 安装 + 快速推理

```bash
conda create -n moss-tts-nano python=3.12 -y
conda activate moss-tts-nano

git clone https://github.com/OpenMOSS/MOSS-TTS-Nano.git
cd MOSS-TTS-Nano
pip install -r requirements.txt
pip install -e .

# 如果 pip 安装 pynini 失败，请使用 conda-forge：
conda install -c conda-forge pynini=2.1.6.post1 -y
```

使用参考音频 + 目标文本进行推理：

```bash
python infer.py \
  --prompt-audio-path assets/audio/en_1.wav \
  --text "欢迎来到 Clore.ai——去中心化 GPU 市场。"
# 输出：generated_audio/infer_output.wav（48 kHz 立体声）
```

或者通过 CLI 入口：

```bash
moss-tts-nano generate \
  --prompt-speech ref.wav \
  --text "来自在 CPU 上运行的 MOSS-TTS Nano 的问候。"
```

网页演示（Gradio）：

```bash
python app.py
# → http://127.0.0.1:18083
```

## 方案 B —— Docker（CPU 和 GPU）

**仅 CPU** （Nano，约 1 GB 镜像）：

```dockerfile
FROM python:3.12-slim
RUN apt-get update && apt-get install -y git build-essential \
    && rm -rf /var/lib/apt/lists/*
WORKDIR /app
RUN git clone https://github.com/OpenMOSS/MOSS-TTS-Nano.git . \
    && pip install -r requirements.txt && pip install -e .
EXPOSE 18083
CMD ["python", "app.py"]
```

```bash
docker build -t moss-tts-nano-cpu .
docker run --rm -p 18083:18083 moss-tts-nano-cpu
```

**GPU 版本** （用于 Realtime / TTSD / SoundEffect）：

```bash
docker run --gpus all -p 18083:18083 \
  pytorch/pytorch:2.5.1-cuda12.4-cudnn9-runtime \
  bash -c "git clone https://github.com/OpenMOSS/MOSS-TTS.git /app \
           && cd /app \
           && pip install --extra-index-url https://download.pytorch.org/whl/cu128 -e '.[torch-runtime]' \
           && python app.py"
```

## 方案 C —— 零样本声音克隆（3 秒参考）

MOSS-TTS-Nano 会从一段简短的参考片段克隆声音，并通过自动分块处理长文本合成。

```python
from moss_tts_nano import MossTTSNano
import soundfile as sf

model = MossTTSNano.from_pretrained("OpenMOSS-Team/MOSS-TTS-Nano-100M")

# 从任意 3–10 秒的干净片段克隆声音
audio, sr = model.synthesize(
    text="这是我克隆的声音在朗读一章 Clore.ai 有声书。",
    prompt_audio_path="speaker_ref_3s.wav",
    language="en",
)
sf.write("cloned.wav", audio, sr)  # 48 kHz 立体声
```

**质量提示（移植自 XTTS 实战手册——原理相同）：**

* 使用 3–10 秒 **干净的** 参考音频（无背景音乐、无房间混响）
* 尽可能让参考音频和目标文本的语言一致
* 在输入前先归一化并裁剪静音（`librosa.effects.trim`)
* 为了保持长篇叙述一致性，在多次调用中复用同一参考音频

## 方案 D —— 在 llama.cpp-audio / 无 PyTorch 的 ONNX 上使用 GGUF

适用于边缘设备、移动端后端，或任何你不想使用 PyTorch 的场景：

```bash
# 克隆主仓库并启用无需 PyTorch 的额外功能
git clone https://github.com/OpenMOSS/MOSS-TTS.git
cd MOSS-TTS
pip install -e ".[llama-cpp-onnx]"

# 拉取 GGUF 量化权重（Q4_K_M）
huggingface-cli download OpenMOSS-Team/MOSS-TTS-GGUF --local-dir weights/

# 或纯 ONNX 构建（完全不需要 torch）
huggingface-cli download OpenMOSS-Team/MOSS-TTS-Nano-100M-ONNX --local-dir weights-onnx/
```

这条路径可在兼容 llama.cpp 的工具链上运行——非常适合 Raspberry Pi、Android，或需要 200 MB 二进制文件的无服务器函数。

## Clore.ai GPU 推荐

**Nano 不需要 GPU。** 这正是重点。但如果你想批量生成，或运行更大的兄弟型号：

| GPU           | 显存    | 适配                                  | Clore 价格（约）       |
| ------------- | ----- | ----------------------------------- | ----------------- |
| **仅 CPU 实例**  | —     | Nano、Nano-ONNX、GGUF                 | 起价 **0.01 美元/小时** |
| RTX 3060 12GB | 12 GB | Nano + Local-Transformer + Realtime | 起价 0.10 美元/天      |
| RTX 3090 24GB | 24 GB | 完整 TTSD-v1.0（8B），批量服务               | 起价 0.30 美元/天      |
| RTX 4090 24GB | 24 GB | TTSD + SoundEffect 并发运行             | 起价 0.50 美元/天      |

{% hint style="success" %}
对于 90% 的生产级 TTS 工作负载——语音代理、IVR、旁白—— **仅 CPU 的 Clore.ai 机器实际上是最便宜的可行部署方案**。租一台，运行 MOSS-TTS-Nano，把 GPU 账单抛诸脑后。
{% endhint %}

## 使用场景

* **有声书** — 长篇叙述，克隆音色保持一致，自动分块
* **语音代理** — Realtime 版本可实现亚秒级首字节时间，用于对话式 AI
* **IVR / 电话系统** — 仅 CPU 部署，48 kHz 立体声，20 种语言
* **游戏 NPC** — 轻量到可以直接集成到游戏客户端中，并可按角色设计音色
* **配音** — 用于本地化流程的多语种克隆
* **播客生成** — MOSS-TTSD-v1.0 原生支持多说话人对话
* **音效** — MOSS-SoundEffect 为流程增加可控时长的音效

## 基准测试 / 质量

* **MOSS-TTSD-v1.0** 在主观多说话人对话评测中优于豆包和 Gemini 2.5-pro
* **Nano** 实现实时因子 **在 4 个 CPU 核心上 < 1.0** （即比播放更快）
* **Realtime** 版本报告 **约 180 毫秒的首字节时间** 适用于对话场景
* 在这个参数规模下，48 kHz 立体声音频输出明显优于 24 kHz 单声道竞品

## 故障排除

| 问题                   | 解决方案                                                                         |
| -------------------- | ---------------------------------------------------------------------------- |
| `pynini` 通过 pip 安装失败 | `conda install -c conda-forge pynini=2.1.6.post1 -y` 然后重新安装 WeTextProcessing |
| CPU 上音频断续            | 确保有 4 个以上物理核心；禁用 SMT/超线程超额订阅；使用 ONNX 版本                                      |
| 克隆的声音听起来不对劲          | 参考音频必须为 3–10 秒、干净、单说话人、且与语言匹配                                                |
| TTSD-v1.0 内存不足       | 使用 FP16（`model.half()`）或降级到 17 亿参数的 Local-Transformer                        |
| 模型下载卡住               | 设置 `HF_HUB_ENABLE_HF_TRANSFER=1` 并重试                                         |
| 首次运行较慢               | 首次推理会编译内核 / 下载约 400 MB 权重——后续运行会很快                                           |
| Torch 与其他模型冲突        | 使用 `[llama-cpp-onnx]` 额外依赖来创建无 PyTorch 环境                                    |

## 下一步

* [Kokoro TTS](https://docs.clore.ai/guides/guides_v2-zh/yin-pin-yu-yu-yin/kokoro-tts) — 如果你不需要多语种，它是 8200 万参数、以英语为主的替代方案
* [Voxtral TTS](https://docs.clore.ai/guides/guides_v2-zh/yin-pin-yu-yu-yin/voxtral-tts) — 40 亿参数的 Mistral 模型，支持 9 种语言，需要 GPU，但上限更高
* [XTTS（Coqui）](https://docs.clore.ai/guides/guides_v2-zh/yin-pin-yu-yu-yin/xtts-coqui) — 17 种语言的声音克隆，仅支持 GPU，规模更大
* [Whisper 转写](https://docs.clore.ai/guides/guides_v2-zh/yin-pin-yu-yu-yin/whisper-transcription) — 将 MOSS-TTS 与 Whisper 结合，构建完整语音管线
* [在 Clore.ai Marketplace 租用 GPU（或 CPU）](https://clore.ai/marketplace)

***

*最后更新：2026 年 4 月 20 日*


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.clore.ai/guides/guides_v2-zh/yin-pin-yu-yu-yin/moss-tts.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
