MCPcopy Index your code
hub / github.com/OpenMOSS/MOSS-TTS-Nano

github.com/OpenMOSS/MOSS-TTS-Nano @main sqlite

repository ↗ · DeepWiki ↗
408 symbols 1,228 edges 21 files 2 documented · 0%
README

MOSS-TTS-Nano

    

OpenClaw WeChat

English | 简体中文

MOSS-TTS-Nano 是来自 MOSI.AIOpenMOSS 团队 的开源多语言微型语音生成模型。仅包含 0.1B 参数,专为实时语音生成设计,可直接在 CPU 上运行(无需 GPU),并保持部署栈足够简单,适用于本地演示、网络服务和轻量级产品集成。

MOSS-TTS 2.0 需求收集

demo_video.mp4

新闻

  • 2026.5.6:MOSS-TTSMOSS-TTS-NanoMOSS-Audio-Tokenizer 现已支持 mlx-audio,详情请访问 mlx-audio GitHub 仓库
  • 2026.4.29:MOSS-TTS 2.0 即将到来!我们正在通过需求收集表收集大家在使用 TTS 过程中的反馈、建议与功能需求。
  • 2026.4.27:我们新增了 MOSS-Audio-Tokenizer-Nano 的最新评测结果,包括在语音、音频和音乐基准上的重建质量对比。
  • 2026.4.17:我们很高兴发布更加高效且可独立运行的 ONNX CPU 版本,对应 Hugging Face 仓库 MOSS-TTS-Nano-100M-ONNXMOSS-Audio-Tokenizer-Nano-ONNX。该版本在推理阶段不再依赖 PyTorch,完整保留音色克隆工作流;根据我们的实测,其处理效率较原版接近翻倍,并且在 MacBook Air M4 上仅使用 1 核 CPU 即可流畅运行。基于这一 ONNX CPU 版本,我们也同步更新了 MOSS-TTS-Nano-Reader,现在可以直接以浏览器插件的形式在浏览器内运行本模型,无需再在本地单独部署推理服务。
  • 2026.4.16:我们发布了 MOSS-TTS-Nano 微调代码。训练和使用说明见 ./finetuning/README_zh.md
  • 2026.4.14:我们发布了 MOSS-TTS-Nano-Reader,这是一个基于 MOSS-TTS-Nano 的本地浏览器网页朗读应用。
  • 2026.4.10:我们发布了 MOSS-TTS-Nano。演示 Space 已在 OpenMOSS-Team/MOSS-TTS-Nano 上线,也可以通过 openmoss.github.io/MOSS-TTS-Nano-Demo/ 查看 demo 和更多细节。

演示

目录

介绍

MOSS-TTS-Nano concept

MOSS-TTS-Nano 专注于 TTS 部署中最重要的部分:小体积低延迟足够好的实时产品质量简单的本地配置。它使用纯自回归 Audio Tokenizer + LLM 管道,并保持推理工作流对终端用户和网络演示用户都友好。

主要特性

  • 超小模型尺寸:仅 0.1B 参数
  • 原生音频格式48 kHz2 声道输出
  • 多语言支持:支持 中文、英文等多种语言
  • 纯自回归架构:基于 Audio Tokenizer + LLM
  • 流式推理:低实时延迟和快速首字节音频
  • CPU 友好:流式生成可在 4 核 CPU 上运行
  • 长文本支持:支持长输入,具有自动分块语音克隆
  • 开源部署:支持直接 python infer.pypython app.py 和打包 CLI

MOSS-TTS-Nano architecture

MOSS-TTS-Nano 架构图

支持的语言

MOSS-TTS-Nano 目前支持 20 种语言

语言 代码 旗帜 语言 代码 旗帜 语言 代码 旗帜
中文 zh 🇨🇳 英文 en 🇺🇸 德语 de 🇩🇪
西班牙语 es 🇪🇸 法语 fr 🇫🇷 日语 ja 🇯🇵
意大利语 it 🇮🇹 匈牙利语 hu 🇭🇺 韩语 ko 🇰🇷
俄语 ru 🇷🇺 波斯语 (Farsi) fa 🇮🇷 阿拉伯语 ar 🇸🇦
波兰语 pl 🇵🇱 葡萄牙语 pt 🇵🇹 捷克语 cs 🇨🇿
丹麦语 da 🇩🇰 瑞典语 sv 🇸🇪 希腊语 el 🇬🇷
土耳其语 tr 🇹🇷

快速开始

环境配置

我们建议先创建一个干净的 Python 环境,然后以可编辑模式安装项目,使得 moss-tts-nano 命令在本地可用。下面的示例故意保持参数最少,依赖仓库默认设置。默认情况下,代码加载 OpenMOSS-Team/MOSS-TTS-NanoOpenMOSS-Team/MOSS-Audio-Tokenizer-Nano

使用 Conda

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 .

如果 WeTextProcessingpynini 无法从 requirements.txt 安装,请先在同一环境中安装 pynini,再安装 WeTextProcessing,然后从 requirements.txt 中移除 WeTextProcessing,最后重新执行 pip install -r requirements.txt

推荐优先使用 Conda:

conda install -c conda-forge pynini=2.1.6.post1 -y
pip install git+https://github.com/WhizZest/WeTextProcessing.git
pip install -r requirements.txt

如果不使用 Conda,请先准备与当前 Python 版本和平台匹配的 pynini wheel,再安装 WeTextProcessing。可参考 Issue #6 中给出的安装示例。

使用 infer.py 进行语音克隆

本仓库保留了直接 Python 入口点用于本地推理。下面的示例使用 语音克隆模式,这是 MOSS-TTS-Nano 的主要推荐工作流。

python infer.py \
  --prompt-audio-path assets/audio/zh_1.wav \
  --text "欢迎关注模思智能、上海创智学院与复旦大学自然语言处理实验室。"

默认情况下,这会将音频写入 generated_audio/infer_output.wav

使用 app.py 启动本地 Web 演示

您可以启动本地 FastAPI 演示进行基于浏览器的测试:

python app.py

然后在浏览器中打开 http://127.0.0.1:18083

ONNX CPU 版本

我们现在十分推荐优先尝试 ONNX CPU 版本,尤其适合轻量本地部署和纯 CPU 推理场景。

这一版本在保留 MOSS-TTS-Nano 核心体验的同时,更适合直接部署:

  • 推理阶段不依赖 PyTorch:直接基于 ONNX Runtime CPU 运行。
  • 可独立运行、部署更轻量:适合本地 demo、服务化和轻量集成。
  • 完整保留语音克隆能力:支持直接参考音频输入、内置音色和 Realtime Streaming Decode
  • 速度更快:根据我们的实测,处理效率较原版接近翻倍
  • 单核可用性更强:在 MacBook Air M4 上,仅使用 1 核 CPU 即可流畅运行。

对应的 ONNX 入口包括 infer_onnx.pyapp_onnx.py,以及带 --backend onnx 的打包 CLI。

默认情况下,基于 ONNX Runtime CPU 运行,如果要切换到 GPU,需要安装 onnxruntime-gpu,然后可以通过 --execution-provider cuda 显式切到 CUDA。

如果要准备 CUDA ONNX Runtime 环境,请把 CPU 版 ONNX Runtime wheel 替换成 GPU 版:

pip uninstall -y onnxruntime
pip install "onnxruntime-gpu>=1.20.0"

如果不传 --model-dir,程序会默认检查 ./models。当该目录下缺少模型时,会在首次运行时自动从下面两个 Hugging Face 仓库下载:

默认下载后的目录结构为:

  • models/MOSS-TTS-Nano-100M-ONNX
  • models/MOSS-Audio-Tokenizer-Nano-ONNX

命令行示例:

python infer_onnx.py \
  --prompt-audio-path assets/audio/zh_1.wav \
  --text "欢迎使用 ONNX Runtime CPU 版本。"

如果你已经有本地导出的 ONNX 目录,也可以显式传入:

python infer_onnx.py \
  --model-dir /path/to/models \
  --prompt-audio-path assets/audio/zh_1.wav \
  --text "欢迎使用 ONNX Runtime CPU 版本。"

如果要使用 CUDA 推理:

python infer_onnx.py \
  --execution-provider cuda \
  --prompt-audio-path assets/audio/zh_1.wav \
  --text "欢迎使用 ONNX Runtime CUDA 版本。"

CUDA 推理需要安装 onnxruntime-gpu

本地 Web Demo:

python app_onnx.py

如果要用 CUDA 启动 ONNX Web Demo:

python app_onnx.py \
  --execution-provider cuda

然后在浏览器中打开 http://127.0.0.1:18083

首次启动如果本地没有 ONNX 权重,会先自动下载。

Android ONNX Runtime 示例

Android ONNX Runtime smoke 示例位于 examples/android_onnx_runtime

该示例会在 Android 设备端加载导出的 MOSS-TTS-Nano ONNX 图和 MOSS-Audio-Tokenizer-Nano ONNX 解码器,合成短的预分词 demo prompt,并写出 WAV 文件。示例刻意保持最小化,并将模型文件保留在 APK 外部,便于本地测试。

导出仅 TTS 的 ONNX 权重

如果重新训练了 MOSS-TTS-Nano,那么需要重导 TTS 侧 ONNX 权重。onnx/ 目录下的导出脚本接收本地 Hugging Face 格式的 MOSS-TTS-Nano checkpoint,并输出一套仅包含 TTS 侧文件的 ONNX 模型目录。

示例:

python onnx/export_hf_to_tts_onnx.py \
  --checkpoint-path /path/to/MOSS-TTS-Nano \
  --output-dir /path/to/MOSS-TTS-Nano-100M-ONNX

输出目录包含:

  • moss_tts_prefill.onnx
  • moss_tts_decode_step.onnx
  • moss_tts_local_decoder.onnx
  • moss_tts_local_cached_step.onnx
  • moss_tts_local_fixed_sampled_frame.onnx
  • moss_tts_global_shared.data
  • moss_tts_local_shared.data
  • tts_browser_onnx_meta.json
  • tokenizer.model

这个脚本面向 ONNX 部署链路。只要 MOSS-Audio-Tokenizer-Nano 没变,原先基于它生成的 prompt audio codes 不需要重新生成。

CLI 命令:moss-tts-nano generate

安装后 pip install -e .,您可以直接调用打包的 CLI:

moss-tts-nano generate \
  --prompt-speech assets/audio/zh_1.wav \
  --text "欢迎关注模思智能、上海创智学院与复旦大学自然语言处理实验室。"

如果要切到 ONNX CPU 后端,只需加上 --backend onnx

moss-tts-nano generate \
  --backend onnx \
  --prompt-speech assets/audio/zh_1.wav \
  --text "欢迎关注模思智能、上海创智学院与复旦大学自然语言处理实验室。"

ONNX 后端默认使用 CPU。如果要显式切到 CUDA:

moss-tts-nano generate \
  --backend onnx \
  --execution-provider cuda \
  --prompt-speech assets/audio/zh_1.wav \
  --text "欢迎关注模思智能、上海创智学院与复旦大学自然语言处理实验室。"

有用的提示:

  • moss-tts-nano generate 默认写入 generated_audio/moss_tts_nano_output.wav
  • --prompt-speech 是用于语音克隆的参考音频路径的友好别名。
  • 支持 --text-file 用于长文本合成。
  • ONNX CUDA 推理需要安装 onnxruntime-gpu;不传 --execution-provider cuda 时,ONNX 推理仍然默认只使用 CPU。

CLI 命令:moss-tts-nano serve

您也可以通过打包的 CLI 启动网络演示:

moss-tts-nano serve

如果要启动 ONNX Web Demo:

moss-tts-nano serve \
  --backend onnx

如果要用 CUDA 启动 ONNX Web Demo:

moss-tts-nano serve \
  --backend onnx \
  --execution-provider cuda

此命令会转发到对应的 Web App,将模型保持在内存中加载,并为本地浏览器演示和 HTTP 生成端点提供服务。

如需以分页 KV 缓存、流式推理以及 OpenAI 兼容 /v1/audio/speech 接口部署服务,请参考 vLLM-Omni MOSS-TTS-Nano README

微调

微调教程已经提供。

具体见 ./finetuning/README_zh.md

MOSS-Audio-Tokenizer-Nano

介绍

MOSS-Audio-Tokenizer 是整个 MOSS-TTS 系列的统一离散音频接口。它基于 CatCausal Audio Tokenizer with Transformer)架构构建,这是一个由因果 Transformer 块完全组成的无 CNN 音频分词器。它作为 MOSS-TTS、MOSS-TTS-Nano、MOSS-TTSD、MOSS-VoiceGenerator、MOSS-SoundEffect 和 MOSS-TTS-Realtime 的共享音频 tokenizer,为整个产品系列提供一致的音频表示。

为了进一步提高感知质量同时降低推理成本,我们训练了 MOSS-Audio-Tokenizer-Nano,这是一个轻量级分词器,包含约 20M 参数,专为高保真音频压缩设计。它支持 48 kHz 输入输出以及 立体声音频,有助于减少压缩损失并提高听觉质量。它可以将 48 kHz 立体声音频压缩成 12.5 Hz 的 token 流,使用 16 个码本的 RVQ,在 0.125 kbps 到 2 kbps 的可变码率范围内实现高保真重建。

要了解更多关于设置、高级用法和评估指标的信息,请访问 MOSS-Audio-Tokenizer 仓库

MOSS-Audio-Tokenizer-Nano 架构 MOSS-Audio-Tokenizer-Nano 架构

模型权重

模型 Hugging Face ModelScope
MOSS-Audio-Tokenizer-Nano Hugging Face ModelScope

评测指标

下表将 MOSS-Audio-Tokenizer-Nano 与参数量 不超过 120M 的开源音频 tokenizer 进行对比,评估其在语音、音频和音乐数据上的重建质量。可以看到,MOSS-Audio-Tokenizer-Nano 在模型规模接近最小的同时,取得了最好的整体重建质量。

  • 语音指标在 LibriSpeech test-clean(英文)和 AISHELL-2(中文)上评测,结果以 EN/ZH 的形式报告。
  • 音频指标在 AudioSet evaluation subset 上评测,音乐指标在 MUSDB 上评测,结果以 audio/music 的形式报告。
  • STFT-Dist. 表示 STFT 距离。
  • 语音指标越高越好;音频和音乐指标中,Mel-Loss 与 STFT-Dist. 越低越好。
  • Ch. 表示 audio tokenizer 支持的输入/输出声道数:ch=1 表示单声道音频,ch=2 表示立体声音频。
  • Nvq 表示量化器数量。

    开源音频 tokenizer 在语音、音频和音乐数据上的重建质量对比。

LibriSpeech 语音指标(MOSS-Audio-Tokenizer-Nano vs. 开源 Tokenizer)

下图将 MOSS-Audio-Tokenizer-Nano 与参数量 不超过 120M 的开源音频 tokenizer 和 codec 在 LibriSpeech 数据集上进行对比。评测指标包括 SIM、STOI、PESQ-NB 和 PESQ-WB,数值越高表示重建质量越好。 对于同一个模型,我们通过调整推理时使用的 RVQ 码本数量来控制码率。

<img src="https://github.com/OpenMOSS/MOSS-TTS-Nano/raw/main/assets/images/evaluation_fig_moss_audio_tokenizer.png" width="100%">


不同码率下的 LibriSpeech 重建质量对比。

MOSS-TTS 家族

介绍

<img src="https://github.com/OpenMOSS/MOSS-TTS-Nano/raw/main/assets/images/moss_tts_family.jpeg" width="85%" /

Core symbols most depended-on inside this repo

get
called by 80
app.py
snapshot
called by 15
app.py
_maybe_delete_file
called by 14
app.py
reset
called by 9
ort_cpu_runtime.py
_session
called by 9
ort_cpu_runtime.py
apply_rotary_pos_emb
called by 9
onnx/export_moss_tts_browser_onnx.py
_split_heads
called by 8
onnx/export_moss_tts_browser_onnx.py
_warmup_status_text
called by 7
app.py

Shape

Function 196
Method 174
Class 27
Route 11

Languages

Python100%

Modules by API surface

app.py80 symbols
onnx/export_moss_tts_browser_onnx.py59 symbols
ort_cpu_runtime.py40 symbols
moss_tts_nano_runtime.py37 symbols
onnx_tts_runtime.py34 symbols
app_onnx.py31 symbols
tts_robust_normalizer_single_script.py15 symbols
text_normalization_pipeline.py15 symbols
finetuning/dataset.py15 symbols
onnx/export_hf_to_tts_onnx.py14 symbols
finetuning/sft.py14 symbols
finetuning/common.py12 symbols

Dependencies from manifests, versioned

WeTextProcessing1.0.4.1 · 1×
fastapi0.110.0 · 1×
numpy1.24 · 1×
onnxruntime1.20.0 · 1×
python-multipart0.0.9 · 1×
sentencepiece0.1.99 · 1×
torch2.7.0 · 1×
torchaudio2.7.0 · 1×
transformers4.57.1 · 1×
uvicorn0.29.0 · 1×

For agents

$ claude mcp add MOSS-TTS-Nano \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact