MOSS-TTS
MOSS‑TTS Family is an open‑source speech and sound generation model family from MOSI.AI and the OpenMOSS team. It is designed for high‑fidelity, high‑expressiveness, and complex real‑world scenarios, covering stable long‑form speech, multi‑speaker dialogue, voice/character design, environmental sound effects, and real‑time streaming TTS.
Quick Overview
Error generating quick overview
Convert
designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual CopilotREADME
MOSS-TTS Family
MOSSâTTS Family is an openâsource speech and sound generation model family from MOSI.AI and the OpenMOSS team. It is designed for highâfidelity, highâexpressiveness, and complex realâworld scenarios, covering stable longâform speech, multiâspeaker dialogue, voice/character design, environmental sound effects, and realâtime streaming TTS.
News
- 2026.6.18: ð MOSS-TTS-Local-Transformer-v1.5 receives Day-0 support in SGLang-Omni â the first inference backend to support the
MossTTSLocalarchitecture, with an OpenAI-compatible/v1/audio/speechendpoint, streaming, and voice cloning. See the cookbooks:moss_tts_local,moss_tts. - 2026.6.18: ð Released MOSS-TTS-Local-Transformer-v1.5, a 4B
MossTTSLocalcheckpoint that inherits all v1.5 features (language tags, stable cloning, explicit pause control, etc.), scales the backbone from Qwen3-1.7B to Qwen3-4B, and uses MOSS-Audio-Tokenizer-v2 for native 48 kHz stereo output. - 2026.6.7: ð Released MOSS-Audio-Tokenizer-v2, natively supporting 48 kHz stereo input and output. Check out the MOSS-Audio-Tokenizer repository for more details!
- 2026.6.2: ð vLLM-Omni now supports the full MOSS-TTS series (
MossTTSDelay,MossTTSRealtime, andMossTTSNanoarchitectures), including MOSS-TTS-v1.5, MOSS-TTS, MOSS-TTSD, MOSS-SoundEffect, MOSS-VoiceGenerator, MOSS-TTS-Realtime, and MOSS-TTS-Nano. See the recipe and examples. - 2026.5.26: ð Released MOSS-SoundEffect-v2.0, a new text-to-audio model using a DiT backbone with the Flow Matching objective, generating 48 kHz bilingual sound effects up to 30 seconds â see
moss_soundeffect_v2/. - 2026.5.26: ð Released MOSS-TTS-v1.5, with stronger multilingual synthesis when language tags are provided, more stable voice cloning, better long-reference short-text cloning, punctuation-following prosody, and explicit pause control via
[pause X.Ys]. - 2026.5.6: ð MOSS-TTS and MOSS-Audio-Tokenizer now support
mlx-audio. Visit the mlx-audio GitHub repository for details. - 2026.4.29: ð MOSS-TTS 2.0 is coming soon! We are collecting TTS feedback, suggestions, and feature requests via the requirements collection form.
- 2026.4.13: ð MOSS-TTS-Nano, our ~100M-parameter model, is now available! It supports multilingual voice cloning, 48 kHz stereo input/output, and streaming output on just 4 CPU cores. Check the GitHub repository and our blog for more details.
- 2026.3.31: ð Our technical reports for MOSS-TTSD and MOSS-VoiceGenerator are now available on arXiv!
- 2026.3.26: ð Added a tutorial on fine-tuning the MOSS-TTS-Realtime!
- 2026.3.20: ð Our technical report is now available on arXiv!
- 2026.3.18: ð Added a first-class MOSS-TTS
llama.cppimplementation in the companion repositoryOpenMOSS/llama.cpp, including end-to-end docs and a runnable pipeline for GGUF backbone inference plus ONNX audio codec decoding. See the first-class e2e guide. - 2026.3.16: ð Added a tutorial on fine-tuning the MossTTSLocal architecture, suitable for MOSS-TTS-Local-Transformer!
- 2026.3.12: ð Added SGLang backend support for the
MossTTSDelayarchitecture, enabling efficient inference for MOSS-TTS (Delay) and MOSS-SoundEffect, with around 3Ã faster generation throughput! - 2026.3.11: ð Added a tutorial on fine-tuning the MossTTSDelay architecture, suitable for MOSS-TTS(Delay), MOSS-TTSD, MOSS-VoiceGenerator, and MOSS-SoundEffect!
- 2026.3.10: â¡ï¸ Significantly optimized the VRAM usage of llama.cpp inference pipeline. Now 8B model fits onto 8GB GPUs!
- 2026.3.4: ð Added PyTorch-free inference support â enabling lightweight on-device deployment via llama.cpp + ONNX Runtime. Quantized GGUF weights are released at OpenMOSS-Team/MOSS-TTS-GGUF, and the ONNX audio tokenizer is available at OpenMOSS-Team/MOSS-Audio-Tokenizer-ONNX. See the llama.cpp backend for details.
- 2026.3.4: ð We add MOSS-TTS skills in ClawHub of ð¦ OpenClaw: feishu-voice-tts and moss-tts-voice.
- 2026.2.10: ððð We have released MOSS-TTS Family. Check our Blog for more details! Our Huggingface Space is here: MOSS-TTS, MOSS-TTSD-v1.0, MOSS-VoiceGenerator.
Demo
Contents
- MOSS-TTS Family
- News
- Demo
- Contents
- Introduction
- Model Architecture
- Released Models
- Supported Languages
- MOSS-TTS-v1.5
- MOSS-TTS-Local-Transformer-v1.5
- Quickstart
- Fine-Tuning
- llama.cpp Backend (Torch-Free Inference)
- Accelerated Inference Backends
- Evaluation
- MOSS-TTS-Nano
- MOSS-Audio-Tokenizer
- ð More Information
- LICENSE
- Citation
- Star History
Introduction
When a single piece of audio needs to sound like a real person, pronounce every word accurately, switch speaking styles across content, remain stable over tens of minutes, and support dialogue, roleâplay, and realâtime interaction, a single TTS model is often not enough. The MOSSâTTS Family breaks the workflow into five productionâready models that can be used independently or composed into a complete pipeline.
- MOSSâTTS: The flagship production model featuring high fidelity and optimal zero-shot voice cloning. It supports long-speech generation, fine-grained control over Pinyin, phonemes, and duration, as well as multilingual/code-switched synthesis.
- MOSSâTTSD: A spoken dialogue generation model for expressive, multi-speaker, and ultra-long dialogues. The new v1.0 version achieves industry-leading performance on objective metrics and outperformed top closed-source models like Doubao and Gemini 2.5-pro in subjective evaluations. You can visit the MOSS-TTSD repository for details.
- MOSSâVoiceGenerator: An open-source voice design model capable of generating diverse voices and styles directly from text prompts, without any reference speech. It unifies voice design, style control, and synthesis, functioning independently or as a design layer for downstream TTS. Its performance surpasses other top-tier voice design models in arena ratings.
- MOSSâTTSâRealtime: A multi-turn context-aware model for real-time voice agents. It uses incremental synthesis to ensure natural and coherent replies, making it ideal for building low-latency voice agents when paired with text models. The TTFB (Time To First Byte) of MOSS-TTS-Realtime reaches 180 ms, and the $T_{\text{LLM-first-sentence}} + T_{\text{MOSS-TTS-Realtime-TTFB}}$ is 377 ms.
- MOSSâSoundEffect: A content creation model specialized in sound effect generation with wide category coverage and controllable duration. It generates audio for natural environments, urban scenes, biological sounds, human actions, and musical fragments, suitable for film, games, and interactive experiences.
Model Architecture
We train MossTTSDelay and MossTTSLocal as complementary baselines under one training/evaluation setup: Delay emphasizes long-context stability, inference speed, and production readiness, while Local emphasizes lightweight flexibility and strong objective performance for streaming-oriented systems. Together they provide reproducible references for deployment and research.
MossTTSRealtime is not a third comparison baseline; it is a capability-driven design for voice agents. By modeling multi-turn context from both prior text and user acoustics, it delivers low-latency streaming speech that stays coherent and voice-consistent across turns.
Released Models
Supported Languages
MOSS-TTS-v1.5 and MOSS-TTS-Local-Transformer-v1.5 currently support 31 languages. They keep the 20 languages supported by MOSS-TTS 1.0 and extend multilingual continued training to Cantonese, Dutch, Finnish, Hindi, Macedonian, Malay, Romanian, Swahili, Tagalog, Thai, and Vietnamese.
MOSS-TTSD and MOSS-TTS-Realtime follow their own model cards for supported language coverage.
| Language | Code | Flag | Language | Code | Flag | Language | Code | Flag |
|---|---|---|---|---|---|---|---|---|
| Chinese | zh | ð¨ð³ | Cantonese | yue | ðð° | English | en | ðºð¸ |
| Arabic | ar | ð¸ð¦ | Czech | cs | ð¨ð¿ | Danish | da | ð©ð° |
| Dutch | nl | ð³ð± | Finnish | fi | ð«ð® | French | fr | ð«ð· |
| German | de | ð©ðª | Greek | el | ð¬ð· | Hebrew | he | ð®ð± |
| Hindi | hi | ð®ð³ | Hungarian | hu | ððº | Italian | it | ð®ð¹ |
| Japanese | ja | ð¯ðµ | Korean | ko | ð°ð· | Macedonian | mk | ð²ð° |
| Malay | ms | ð²ð¾ | Persian (Farsi) | fa | ð®ð· | Polish | pl | ðµð± |
| Portuguese | pt | ðµð¹ | Romanian | ro | ð·ð´ | Russian | ru | ð·ðº |
| Spanish | es | ðªð¸ | Swahili | sw | ð¹ð¿ | Swedish | sv | ð¸ðª |
| Tagalog | tl | ðµð | Thai | th | ð¹ð | Turkish | tr | ð¹ð· |
| Vietnamese | vi | ð»ð³ |
MOSS-TTS-v1.5
MOSS-TTS-v1.5 is continued from MOSS-TTS 1.0. It preserves the main 1.0 capabilities, including zero-shot voice cloning, long-form speech generation, token-level duration control, Pinyin/IPA pronunciation control, multilingual synthesis, and code-switching.
Compared with MOSS-TTS 1.0, v1.5 focuses on these improvements:
- Stronger multilingual synthesis with language tags: when the language is known, set it in
processor.build_user_message(text=text, language="French")or the equivalent API field. - More stable voice cloning: v1.5 improves speaker similarity and reduces cloning variance across repeated generations.
- Better long-reference, short-text cloning: v1.5 handles reference audio that is much longer than the target text more reliably.
- More stable punctuation-following prosody: v1.5 follows punctuation-driven pauses more closely, especially in long sentences.
- Explicit pause control: use inline pause markers such as
[pause 3.2s], for exampleæä»å¤©å¦ä¹ äºä¸é¦ä¸å½çå¤è¯ï¼å®çå忝[pause 3.2s]é夿ï¼.
MOSS-TTS-Local-Transformer-v1.5
MOSS-TTS-Local-Transformer-v1.5 is the 48 kHz stereo local-transformer release. It uses MOSS-Audio-Tokenizer-v2 as the audio tokenizer and adds realtime streaming decode examples in moss_tts_local_v1.5/.
Compared with MOSS-TTS-Local-Transformer-v1.0, v1.5 focuses on these improvements:
- Higher-fidelity stereo audio modeling: v1.5 uses MOSS-Audio-Tokenizer-v2 as the audio tokenizer, supporting native 48 kHz stereo input and output for richer spatial detail and more natural perceived audio quality.
- Stronger multilingual synthesis with language tags: when the language is known, set it in
processor.build_user_message(text=text, language="French")or the equivalent API field. - More stable voice cloning: v1.5 improves speaker similarity and reduces cloning variance across repeated generations.
- Better long-reference, short-text cloning: v1.5 handles reference audio that is much longer than the target text more reliably.
- More stable punctuation-following prosody: v1.5 follows punctuation-driven pauses more closely, especially in long sentences.
- Explicit pause control: use inline pause markers such as
[pause 3.2s], for exampleæä»å¤©å¦ä¹ äºä¸é¦ä¸å½çå¤è¯ï¼å®çå忝[pause 3.2s]é夿ï¼.
Quickstart
OpenClaw API Skills
We add MOSS-TTS skills in ClawHub of ð¦ OpenClaw. You can get your API key from MOSI AI Studio.
| Skill | Description | Install |
|---|---|---|
feishu-voice-tts | Send voice messages in Feishu | clawhub install feishu-voice-tts |
moss-tts-voice | Call MOSS-TTS API to generate speech | clawhub install moss-tts-voice |
Environment Setup
We recommend a clean, isolated Python environment with Transformers 5.0.0 to avoid dependency conflicts.
Using Conda
conda create -n moss-tts python=3.12 -y
conda activate moss-tts
Install the FFmpeg system dependency (required by torchcodec for audio I/O):
# Debian/Ubuntu
sudo apt-get install -y ffmpeg
# macOS
brew install ffmpeg
Install all required Python dependencies:
git clone https://github.com/OpenMOSS/MOSS-TTS.git
cd MOSS-TTS
pip install --extra-index-url https://download.pytorch.org/whl/cu128 -e ".[torch-runtime]"
Using uv
# Install uv first: https://docs.astral.sh/uv/getting-started/installation/
git clone https://github.com/OpenMOSS/MOSS-TTS.git
cd MOSS-TTS
uv venv --python 3.12 .venv
source .venv/bin/activate
uv pip install --torch-backend cu128 -e ".[torch-runtime]"
(Optional) Install FlashAttention 2
For better speed and lower GPU memory usage, you can install FlashAttention 2 if your hardware supports it.
If you use Conda/pip:
pip install --extra-index-url https://download.pytorch.org/whl/cu128 -e ".[torch-runtime,flash-attn]"
If your machine has limited RAM and many CPU cores, you can cap build parallelism:
MAX_JOBS=4 pip install --extra-index-url https://download.pytorch.org/whl/cu128 -e ".[torch-runtime,flash-attn]"
If you use uv:
uv pip install --torch-backend cu128 -e ".[torch-runtime,flash-attn]"
If your machine has limited RAM and many CPU cores, you can cap build parallelism:
MAX_JOBS=4 uv pip install --torch-backend cu128 -e ".[torch-runtime,flash-attn]"
Notes:
- Dependencies are managed in
pyproject.toml, which currently pinstorch==2.9.1+cu128andtorchaudio==2.9.1+cu128. - In
uv,--torch-backend cu128lets uv fetch compatible PyTorch CUDA wheels and resolve the rest from PyPI with the default safe index strategy. - If you need another backend, replace
cu128with your target (for example,cpu,cu126). - If FlashAttention 2 fails to build on your machine, you can skip it and use the default attention backend.
- FlashAttention 2 is only available on supported GPUs and is typically used with
torch.float16ortorch.bfloat16.
MOSSâTTS Basic Usage
If you prefer browser demos, we provide scripts for the main models:
| Model | Script |
|---|---|
| MOSS-TTS | clis/moss_tts_app.py |
| MOSS-TTS-Local-Transformer-v1.5 | clis/moss_tts_local_v1.5_app.py |
| MOSS-TTSD | clis/moss_ttsd_app.py |
| MOSS-VoiceGenerator | clis/moss_voice_generator_app.py |
| MOSS-SoundEffect | clis/moss_sound_effect_app.py |
For the MOSS-TTS-Realtime Gradio demo, please refer to MOSS-TTS-Realtime Model Card
Tip: MOSS-TTS-v1.5 uses the same generation API as the 1.0
MossTTSDelay-8Bcheckpoint. For multilingual inputs, setlanguagewhenever the language is known.
MOSS-TTS provides a convenient generate interface for rapid usage. The examples below cover:
- Direct generation (Chinese / English / multilingual text with language tags / Pinyin / IPA)
- Voice cloning
- Duration control
- Explicit pause control with
[pause X.Ys]
from pathlib import Path
import importlib.util
import torch
import torchaudio
from transformers import AutoModel, AutoProcessor
# Disable the broken cuDNN SDPA backend
torch.backends.cuda.enable_cudnn_sdp(False)
# Keep these enabled as fallbacks
torch.backends.cuda.enable_flash_sdp(True)
torch.backends.cuda.enable_mem_efficient_sdp(True)
torch.backends.cuda.enable_math_sdp(True)
pretrained_model_name_or_path = "OpenMOSS-Team/MOSS-TTS-v1.5"
device = "cuda" if torch.cuda.is_available() else "cpu"
dtype = torch.bfloat16 if device == "cuda" else torch.float32
def resolve_attn_implementation() -> str:
# Prefer FlashAttention 2 when package + device conditions are met.
if (
device == "cuda"
and importlib.util.find_spec("flash_attn") is not None
and dtype in {torch.float16, torch.bfloat16}
):
major, _ = torch.cuda.get_device_capability()
if major >= 8:
return "flash_attention_2"
# CUDA fallback: use PyTorch SDPA kernels.
if device == "cuda":
return "sdpa"
# CPU fallback.
return "eager"
attn_implementation = resolve_attn_implementation()
print(f"[INFO] Using attn_implementation={attn_implementation}")
processor = AutoProcessor.from_pretrained(
pretrained_model_name_or_path,
trust_remote_code=True,
)
processor.audio_tokenizer = processor.audio_tokenizer.to(device)
text_1 = "亲ç±çä½ ï¼\nä½ å¥½åã\n\nä»å¤©ï¼ææ³ç¨æè®¤çãææ¸©æç声é³ï¼å¯¹ä½ 说ä¸äºéè¦çè¯ã\nè¿äºè¯ï¼åä¸é¢å°å°çææï¼å¸æè½å¨ä½ çå¿éæ
¢æ
¢åå
ã\n\né¦å
ï¼ææ³ç¥ä½ ââ\næ¯å¤©é½è½å¹³å¹³å®å®ãå¿«å¿«ä¹ä¹ã\n\nå¸æä½ æ©ä¸éæ¥çæ¶åï¼\nçªå¤æå
ï¼å±åéå¾å®éï¼\nä½ çå¿æ¯è½»è½»çï¼æ²¡æçæ¥ï¼ä¹æ²¡æå®³æã\n\nå¸æä½ åé¥çæ¶åèå£å¾å¥½ï¼\nèµ°è·¯çæ¶åèæ¥ç¨³ç¨³ï¼\næä¸ç¡è§çæ¶åï¼è½åä¸ä¸ªåä¸ä¸ªçççæ¢¦ã\n\næå¸æä½ è½ä¸ç´ä¿æå¥½å¥å¿ã\n对ä¸çå
满é®é¢ï¼\nå¯¹å¤©ç©ºãææãè±èã书æ¬åæ
äºæå
´è¶£ã\nå½ä½ é®â为ä»ä¹âçæ¶åï¼\nå¸ææ»æäººæ¿æè®¤çå°å¬ä½ 说è¯ã\n\næä¹å¸æä½ å¦ä¼æ¸©æã\n温æå°å¯¹å¾
æåï¼\n温æå°å¯¹å¾
å°å¨ç©ï¼\n乿¸©æå°å¯¹å¾
èªå·±ã\n\n妿æä¸å¤©ä½ ç¯äºéï¼\n请ä¸è¦å¤ªå¿«è´£æªèªå·±ï¼\nå 为æ¯ä¸ä¸ªè®¤çæé¿ç人ï¼\né½ä¼å¨è·¯ä¸æ
¢æ
¢å¦ä¼æ´å¥½çæ¹æ³ã\n\næ¿ä½ æ¥æåæ°ã\nå½ä½ ç«å¨éççå°æ¹æ¶ï¼\nå½ä½ ç¬¬ä¸æ¬¡ä¸¾æåè¨æ¶ï¼\nå½ä½ éå°å°é¾ãæå°å®³æçæ¶åï¼\nå¸æä½ è½è½»è½»å°åè¯èªå·±ï¼\nâæå¯ä»¥è¯ä¸è¯ãâ\n\nå°±ç®æ²¡æä¸æ¬¡æåï¼ä¹æ²¡æå
³ç³»ã\nå¤±è´¥ä¸æ¯åäºï¼\nå®åªæ¯åè¯ä½ ï¼ä½ æ£å¨åªåã\n\næå¸æä½ å¦ä¼å享快ä¹ã\næå¼å¿çäºæ
åè¯å«äººï¼\næç¬å£°éç»èº«è¾¹ç人ï¼\nå 为快ä¹è¢«åäº«çæ¶åï¼\nä¼å徿´å¤§ãæ´äº®ã\n\n妿æä¸å¤©ä½ æå°é¾è¿ï¼\næå¸æä½ ç¥éââ\né¾è¿å¹¶ä¸ä¸¢è¸ï¼\nåæ³£ä¹ä¸æ¯è½¯å¼±ã\n\næ¿ä½ è½æ¾å°ä¸ä¸ªå®å
¨çå°æ¹ï¼\næ
¢æ
¢æå¿éçè¯è¯´åºæ¥ï¼\nç¶åå䏿¬¡æ¬èµ·å¤´ï¼çè§å¸æã\n\næè¿å¸æä½ è½æ¥ææ¢¦æ³ã\nè¿ä¸ªæ¢¦æ³ä¹è®¸å¾å¤§ï¼\nä¹è®¸å¾å°ï¼\nä¹è®¸ç°å¨è¿è¯´ä¸æ¸
æ¥ã\n\n没å
³ç³»ã\n梦æ³ä¼åä½ ä¸èµ·é¿å¤§ï¼\n卿¶é´éæ
¢æ
¢å徿¸
æ¥ã\n\næåï¼ææ³éä½ ä¸ä¸ªææéè¦çç¥ç¦ï¼\n\næ¿ä½ 被ä¸ç温æå¯¹å¾
ï¼\n乿¿ä½ æä¸ºä¸ä¸ªæ¸©æç人ã\n\næ¿ä½ çæ¯ä¸å¤©ï¼\né½å¼å¾è¢«è®°ä½ï¼\né½å¼å¾è¢«çæã\n\n亲ç±çä½ ï¼\n请记ä½ï¼\nä½ æ¯ç¬ä¸æ äºçï¼\nä½ å·²ç»å¾æ£äºï¼\nèä½ çæªæ¥ï¼\nä¸å®ä¼æ
¢æ
¢åå¾éªéªåå
ã\n\nç¥ä½ å¥åº·ã忢ã幸ç¦ï¼\nç¥ä½ æ°¸è¿å¸¦çç¬å®¹ååèµ°ã"
text_2 = "We stand on the threshold of the AI era.\nArtificial intelligence is no longer just a concept in laboratories, but is entering every industry, every creative endeavor, and every decision. It has learned to see, hear, speak, and think, and is beginning to become an extension of human capabilities. AI is not about replacing humans, but about amplifying human creativity, making knowledge more equitable, more efficient, and allowing imagination to reach further. A new era, jointly shaped by humans and intelligent systems, has arrived."
text_3 = "nin2 hao3ï¼qing3 wen4 nin2 lai2 zi4 na3 zuo4 cheng2 shi4ï¼"
text_4 = "nin2 hao3ï¼qing4 wen3 nin2 lai2 zi4 na4 zuo3 cheng4 shi3ï¼"
text_5 = "æ¨å¥½ï¼è¯·é®æ¨æ¥èªåª zuo4 cheng2 shi4ï¼"
text_6 = "/hÉloÊ, meɪ aɪ æsk wɪtÊ sɪti juË ÉËr frÊm?/"
text_7 = "Bonjour, je voudrais essayer une voix française naturelle et stable."
text_8 = "æä»å¤©å¦ä¹ äºä¸é¦ä¸å½çå¤è¯ï¼å®çå忝[pause 3.2s]é夿ï¼"
# Use audio from ./assets/audio to avoid downloading from the cloud.
ref_audio_1 = "https://speech-demo.oss-cn-shanghai.aliyuncs.com/moss_tts_demo/tts_readme_demo/reference_zh.wav"
ref_audio_2 = "https://speech-demo.oss-cn-shanghai.aliyuncs.com/moss_tts_demo/tts_readme_demo/reference_en.m4a"
conversations = [
# Direct TTS (no reference). Language tags are recommended in v1.5.
[processor.build_user_message(text=text_1)],
[processor.build_user_message(text=text_2)],
# Direct TTS (no reference). For languages other than Chinese and English,
# set the language tag whenever it is known.
[processor.build_user_message(text=text_7, language="French")],
# Pinyin or IPA input
[processor.build_user_message(text=text_3)],
[processor.build_user_message(text=text_4)],
[processor.build_user_message(text=text_5)],
[processor.build_user_message(text=text_6)],
# Explicit pause control. Use [pause X.Ys], such as [pause 3.2s].
[processor.build_user_message(text=text_8)],
# Voice cloning (with reference)
[processor.build_user_message(text=text_1, reference=[ref_audio_1])],
[processor.build_user_message(text=text_2, reference=[ref_audio_2])],
# Duration control
[processor.build_user_message(text=text_2, tokens=325)],
[processor.build_user_message(text=text_2, tokens=600)],
]
model = AutoModel.from_pretrained(
pretrained_model_name_or_path,
trust_remote_code=True,
attn_implementation=attn_implementation,
dtype=dtype,
).to(device)
model.eval()
batch_size = 1
save_dir = Path("inference_root")
save_dir.mkdir(exist_ok=True, parents=True)
sample_idx = 0
with torch.no_grad():
for start in range(0, len(conversations), batch_size):
batch_conversations = conversations[start : start + batch_size]
batch = processor(batch_conversations, mode="generation")
input_ids = batch["input_ids"].to(device)
attention_mask = batch["attention_mask"].to(device)
outputs = model.generate(
input_ids=input_ids,
attention_mask=attention_mask,
max_new_tokens=4096,
)
for message in processor.decode(outputs):
audio = message.audio_codes_list[0]
out_path = save_dir / f"sample{sample_idx}.wav"
sample_idx += 1
if audio.ndim == 1:
audio = audio.unsqueeze(0)
torchaudio.save(
str(out_path),
audio.detach().cpu().to(torch.float32),
processor.model_config.sampling_rate,
)
For each model's full usage, please refer to its corresponding model card. For the 48 kHz stereo local-transformer v1.5 checkpoint and realtime streaming decode, see moss_tts_local_v1.5/.
Fine-Tuning
Finetuning tutorials are organized by architecture.
Currently available:
MossTTSDelay/OpenMOSS-Team/MOSS-TTS-v1.5(also compatible withOpenMOSS-Team/MOSS-TTS): moss_tts_delay/finetuning/README.mdMossTTSLocal/OpenMOSS-Team/MOSS-TTS-Local-Transformer: moss_tts_local/finetuning/README.mdMossTTSLocal/OpenMOSS-Team/MOSS-TTS-Local-Transformer-v1.5: moss_tts_local_v1.5/finetuning/README.mdMoss-TTS-Realtime/OpenMOSS-Team/MOSS-TTS-Realtime: moss_tts_realtime/finetuning/README.md
Additional architecture-specific finetuning tutorials will be added under their corresponding directories.
llama.cpp Backend (Torch-Free Inference)
For lightweight or edge deployment, MOSS-TTS supports a torch-free inference path using llama.cpp for the Qwen3 backbone and ONNX Runtime / TensorRT for the audio tokenizer. No PyTorch installation required.
We also maintain a newer first-class MOSS-TTS path in the companion repository OpenMOSS/llama.cpp. Unlike the legacy bridge backend documented below, it moves multi-channel embeddings, multi-head outputs, and delay-pattern decoding directly into llama.cpp.
For that path, start from the first-class e2e guide.
Quick Start
# 1. Install (torch-free)
pip install -e ".[llama-cpp-onnx]"
# 2. Download pre-quantized backbone + embedding/lm_head weights
huggingface-cli download OpenMOSS-Team/MOSS-TTS-GGUF --local-dir weights/MOSS-TTS-GGUF
# 3. Download ONNX audio tokenizer
huggingface-cli download OpenMOSS-Team/MOSS-Audio-Tokenizer-ONNX --local-dir weights/MOSS-Audio-Tokenizer-ONNX
# 4. Build the C bridge (one-time, requires llama.cpp compiled from source)
cd moss_tts_delay/llama_cpp && bash build_bridge.sh /path/to/llama.cpp && cd ../..
# 5. Run inference
python -m moss_tts_delay.llama_cpp \
--config configs/llama_cpp/default.yaml \
--text "Hello, world!" --output output.wav
# 6. (Optional) Low-memory mode for 8 GB GPUs â loads/unloads components per stage
python -m moss_tts_delay.llama_cpp \
--config configs/llama_cpp/trt-8gb.yaml \
--text "Hello, world!" --output output.wav
Installation Profiles
| Profile | Install Command | Dependencies | Use Case |
|---|---|---|---|
| Torch-free (ONNX) | pip install -e ".[llama-cpp-onnx]" | numpy, onnxruntime-gpu, tokenizers | Recommended starting point |
| Torch-free (TRT) | pip install -e ".[llama-cpp-trt]" | numpy, tensorrt, cuda-python | Maximum audio tokenizer speed (build engines yourself) |
| Torch-accelerated | pip install -e ".[llama-cpp-onnx,llama-cpp-torch]" | + torch | GPU-accelerated LM heads (~30x faster) |
Want to convert weights yourself? See the conversion guide for step-by-step instructions on extracting, converting, and quantizing MOSS-TTS weights with llama.cpp.
Model Weights
| Repository | Contents | Download |
|---|---|---|
OpenMOSS-Team/MOSS-TTS-GGUF | Q4_K_M backbone .gguf, embeddings/ (.npy), lm_heads/ (.npy), tokenizer | huggingface-cli download OpenMOSS-Team/MOSS-TTS-GGUF --local-dir weights/MOSS-TTS-GGUF |
OpenMOSS-Team/MOSS-Audio-Tokenizer-ONNX | Encoder & decoder ONNX models | huggingface-cli download OpenMOSS-Team/MOSS-Audio-Tokenizer-ONNX --local-dir weights/MOSS-Audio-Tokenizer-ONNX |
Note: We do not provide pre-built TensorRT engines, as they are tied to your specific GPU and TensorRT version. To use TRT, build engines from the ONNX models yourself â see
moss_audio_tokenizer/trt/build_engine.sh.
Configuration
Four pre-built configs are provided in configs/llama_cpp/:
default.yamlâ ONNX audio + GGUF backbone (recommended start)trt.yamlâ TensorRT audio + GGUF backbone (max throughput, user-built engines)trt-8gb.yamlâ Low-memory mode for 8 GB GPUs (staged loading, TRT audio)cpu-only.yamlâ fully CPU-based (no GPU required)
Key config options:
heads_backend: auto | numpy | torchâ LM heads computation backendaudio_backend: onnx | trt | torchâ audio tokenizer backendlow_memory: true | falseâ staged loading for limited VRAM (loads/unloads encoder, backbone, decoder per stage)kv_cache_type_k / kv_cache_type_vâ KV cache quantization (e.g.q8_0,q4_0) to reduce VRAMflash_attn: auto | enabled | disabledâ flash attention for lower peak VRAM during prefill
For full documentation, see moss_tts_delay/llama_cpp/README.md.
Accelerated Inference Backends
MOSS-TTS models can be served with high-throughput inference backends for production deployment. Both SGLang-Omni and vLLM-Omni provide OpenAI-compatible serving with streaming and voice cloning support.
SGLang-Omni
SGLang-Omni supports the MossTTSDelay and MossTTSLocal architectures. It is currently the only inference backend that supports the MossTTSLocal architecture, providing Day-0 support for MOSS-TTS-Local-Transformer-v1.5.
For setup and usage, see the cookbooks:
- MOSS-TTS (Delay):
docs/cookbook/moss_tts.md - MOSS-TTS-Local-Transformer:
docs/cookbook/moss_tts_local.md
vLLM-Omni
vLLM-Omni supports the MossTTSDelay, MossTTSRealtime, and MossTTSNano architectures, covering MOSS-TTS, MOSS-TTS-v1.5, MOSS-TTSD, MOSS-SoundEffect, MOSS-VoiceGenerator, MOSS-TTS-Realtime, and MOSS-TTS-Nano.
For setup and usage, see:
- Recipe & deployment configs:
recipes/OpenMOSS/MOSS-TTS.md - Offline inference examples:
examples/offline_inference/text_to_speech/moss_tts/ - MOSS-TTS-Nano examples:
examples/offline_inference/text_to_speech/moss_tts_nano/
Evaluation
This section summarizes the familyâlevel evaluation highlights for MOSSâTTS, MOSS-TTSD and MOSSâVoiceGenerator. For full details, see each modelâs model card.
MOSSâTTS
MOSSâTTS achieved stateâofâtheâart results on the openâsource zeroâshot TTS benchmark SeedâTTSâeval, surpassing all openâsource models and rivaling leading closedâsource systems.
| Model | Params | Openâsource | EN WER (%) â | EN SIM (%) â | ZH CER (%) â | ZH SIM (%) â |
|---|---|---|---|---|---|---|
| DiTAR | 0.6B | â | 1.69 | 73.5 | 1.02 | 75.3 |
| FishAudioâS1 | 4B | â | 1.72 | 62.57 | 1.22 | 72.1 |
| CosyVoice3 | 1.5B | â | 2.22 | 72 | 1.12 | 78.1 |
| SeedâTTS | â | 2.25 | 76.2 | 1.12 | 79.6 | |
| MiniMaxâSpeech | â | 1.65 | 69.2 | 0.83 | 78.3 | |
| CosyVoice | 0.3B | â | 4.29 | 60.9 | 3.63 | 72.3 |
| CosyVoice2 | 0.5B | â | 3.09 | 65.9 | 1.38 | 75.7 |
| CosyVoice3 | 0.5B | â | 2.02 | 71.8 | 1.16 | 78 |
| F5âTTS | 0.3B | â | 2 | 67 | 1.53 | 76 |
| SparkTTS | 0.5B | â | 3.14 | 57.3 | 1.54 | 66 |
| FireRedTTS | 0.5B | â | 3.82 | 46 | 1.51 | 63.5 |
| FireRedTTSâ2 | 1.5B | â | 1.95 | 66.5 | 1.14 | 73.6 |
| Qwen2.5âOmni | 7B | â | 2.72 | 63.2 | 1.7 | 75.2 |
| FishAudioâS1âmini | 0.5B | â | 1.94 | 55 | 1.18 | 68.5 |
| IndexTTS2 | 1.5B | â | 2.23 | 70.6 | 1.03 | 76.5 |
| VibeVoice | 1.5B | â | 3.04 | 68.9 | 1.16 | 74.4 |
| HiggsAudioâv2 | 3B | â | 2.44 | 67.7 | 1.5 | 74 |
| GLM-TTS | 1.5B | â | 2.23 | 67.2 | 1.03 | 76.1 |
| GLM-TTS-RL | 1.5B | â | 1.91 | 68.1 | 0.89 | 76.4 |
| VoxCPM | 0.5B | â | 1.85 | 72.9 | 0.93 | 77.2 |
| Qwen3âTTS | 0.6B | â | 1.68 | 70.39 | 1.23 | 76.4 |
| Qwen3âTTS | 1.7B | â | 1.5 | 71.45 | 1.33 | 76.72 |
| MossTTSDelay | 8B | â | 1.84 | 70.86 | 1.37 | 76.98 |
| MossTTSLocal | 1.7B | â | 1.93 | 73.28 | 1.44 | 79.62 |
MOSSâTTSD
Objective Evaluation
We evaluate MOSSâTTSD-v1.0 using three objective metrics: Speaker Attribution Accuracy (ACC), Speaker Similarity (SIM), and Word Error Rate (WER). Benchmarked against multiple open-source and closed-source models, the results show that MOSSâTTSD-v1.0 consistently achieves either the best or second-best performance.
| Model | ZH - SIM | ZH - ACC | ZH - WER | EN - SIM | EN - ACC | EN - WER |
|---|---|---|---|---|---|---|
| Comparison with Open-Source Models | ||||||
| MOSS-TTSD-v1.0 | 0.7949 | 0.9587 | 0.0485 | 0.7326 | 0.9626 | 0.0988 |
| MOSS-TTSD-v0.7 | 0.7423 | 0.9391 | 0.0517 | 0.6743 | 0.9266 | 0.1612 |
| Vibevoice 7B | 0.7590 | 0.9222 | 0.0570 | 0.7140 | 0.9554 | 0.0946 |
| Vibevoice 1.5 B | 0.7415 | 0.8798 | 0.0818 | 0.6961 | 0.9353 | 0.1133 |
| FireRedTTS2 | 0.7383 | 0.9022 | 0.0768 | - | - | - |
| Higgs Audio V2 | - | - | - | 0.6860 | 0.9025 | 0.2131 |
| Comparison with Proprietary Models | ||||||
| MOSS-TTSD-v1.0 (elevenlabs_voice) | 0.8165 | 0.9736 | 0.0391 | 0.7304 | 0.9565 | 0.1005 |
| Eleven V3 | 0.6970 | 0.9653 | 0.0363 | 0.6730 | 0.9498 | 0.0824 |
| MOSS-TTSD-v1.0 (gemini_voice) | - | - | - | 0.7893 | 0.9655 | 0.0984 |
| gemini-2.5-pro-preview-tts | - | - | - | 0.6786 | 0.9537 | 0.0859 |
| gemini-2.5-flash-preview-tts | - | - | - | 0.7194 | 0.9511 | 0.0871 |
| MOSS-TTSD-v1.0 (doubao_voice) | 0.8226 | 0.9630 | 0.0571 | - | - | - |
| Doubao_Podcast | 0.8034 | 0.9606 | 0.0472 | - | - | - |
Subjective Evaluation
For open-source models, annotators are asked to score each sample pair in terms of speaker attribution accuracy, voice similarity, prosody, and overall quality. Following the methodology of the LMSYS Chatbot Arena, we compute Elo ratings and confidence intervals for each dimension.

For closed-source models, annotators are only asked to choose the overall preferred one in each pair, and we compute the win rate accordingly.

MOSSâVoiceGenerator
MOSSâVoiceGenerator demonstrates strong subjective preference across overall preference, instruction following, and naturalness.
MOSSâTTS-Realtime
We evaluated the TTFB (Time To First Byte) and RTF (Real-Time Factor) of MOSS-TTS-Realtime.
Note: SDPA + torch.compile were enabled during testing. The following results are tested on a single L20 GPU.
| Model | TTFB (ms) | RTF |
|---|---|---|
| MOSS-TTS-Realtime | 180ï¼After warm upï¼ | 0.51 |
We deployed Qwen3.5-9B using vLLM to measure $T_{\text{LLM-first-sentence}}$. The time required to generate 12 tokens (the TTS prefill length) was 197 ms.
$T_{\text{LLM-first-sentence}} + T_{\text{MOSS-TTS-Realtime-TTFB}} = 197ms + 180ms = 377ms$
MOSS-TTS-Nano
Introduction
MOSS-TTS-Nano is our lightweight TTS model designed for CPU-first realtime deployment. It focuses on the part of speech generation that matters most in practical products: a small footprint, low-latency streaming generation, and voice-cloning quality that is strong enough for local demos, web services, and lightweight production integration. Built on a pure autoregressive Audio Tokenizer + LLM pipeline, it keeps the deployment stack simple while making realtime speech generation accessible even without a GPU.
Its main features include:
- 0.1B parameters: a compact model size that keeps memory usage and deployment cost low, making local deployment and lightweight serving much easier.
- Realtime generation on just 4 CPU cores: streaming speech generation can run efficiently on CPU-only environments, which is practical for local applications and cost-sensitive deployment scenarios.
- Multilingual voice cloning: supports multilingual voice cloning workflows, making it suitable for cross-language synthesis with a single reference speaker.
- 48 kHz stereo input/output: natively supports high-quality stereo audio, improving both reference-audio fidelity and final listening quality.
To learn more about setup, advanced usage, and evaluation metrics, please visit the MOSS-TTS-Nano repository.
Architecture of MOSS-TTS-Nano
Model Weights
| Model | Hugging Face | ModelScope |
|---|---|---|
| MOSS-TTS-Nano |
MOSS-Audio-Tokenizer
Introduction
MOSS-Audio-Tokenizer serves as the unified discrete audio interface for the entire MOSS-TTS Family. It is based on the Cat (Causal Audio Tokenizer with Transformer) architectureâa 1.6-billion-parameter, "CNN-free" homogeneous audio tokenizer built entirely from Causal Transformer blocks.
- Unified Discrete Bridge: It acts as the shared backbone for MOSS-TTS, MOSS-TTSD, MOSS-VoiceGenerator, MOSS-SoundEffect, and MOSS-TTS-Realtime, providing a consistent audio representation across the family.
- Extreme Compression & High Fidelity: It compresses 24kHz raw audio into a remarkably low frame rate of 12.5Hz. Utilizing a 32-layer Residual Vector Quantizer (RVQ), it supports high-fidelity reconstruction across variable bitrates from 0.125kbps to 4kbps.
- Massive-Scale General Audio Training: Trained from scratch on 3 million hours of diverse data (speech, sound effects, and music), the model achieves state-of-the-art reconstruction among open source audio tokenizers.
- Native Streaming Design: The pure Causal Transformer architecture is specifically designed for scalability and low-latency streaming inference, enabling real-time production workflows.
To learn more about setup, advanced usage, and evaluation metrics, please visit the MOSS-Audio-Tokenizer Repository
Architecture of MOSS Audio Tokenizer
Model Weights
| Model | Sampling Rate | Channels | Hugging Face | ModelScope |
|---|---|---|---|---|
| MOSS-Audio-Tokenizer | 24kHz | 1 channel (mono) | ||
| MOSS-Audio-Tokenizer-v2 | 48kHz | 2 channels (stereo) | ||
| MOSS-Audio-Tokenizer-Nano | 48kHz | 2 channels (stereo) |
Objective Reconstruction Evaluation
We compare MOSS Audio Tokenizer with open-source audio tokenizers on the LibriSpeech test-clean subset using SIM, STOI, PESQ-NB, and PESQ-WB. Bitrate is controlled by varying the number of RVQ codebooks during decoding, and MOSS Audio Tokenizer leads reconstruction quality among open-source audio tokenizers at comparable 0â4 kbps bitrates.
ð More Information
ð Community Projects
The MOSS-TTS community has been growing rapidly, and weâre delighted to showcase some outstanding projects and features built by community members:
- ComfyUI-MOSS-TTS A MOSS-TTS extension for ComfyUI.
- MOSS-TTS-OpenAI An OpenAI-compatible TTS API for MOSS-TTS.
- AnyPod A podcast generation tool using MOSS-TTS/MOSS-TTSD as the backend.
- Norwegian LoRA for MOSS-TTS â A community-trained LoRA adapter (
mlp, r=16) fine-tuned on the NbAiLab/NST Norwegian speech dataset. Contributed by Martin Bergo at Tosee. LoRA weights: ToSee-Norway/MOSS-TTS-Norwegian-LoRA. Training scripts are available incommunity/norwegian-lora/.
LICENSE
Models in MOSS-TTS Family are licensed under the Apache License 2.0.
Citation
@misc{gong2026mossttstechnicalreport,
title={MOSS-TTS Technical Report},
author={Yitian Gong and Botian Jiang and Yiwei Zhao and Yucheng Yuan and Kuangwei Chen and Yaozhou Jiang and Cheng Chang and Dong Hong and Mingshu Chen and Ruixiao Li and Yiyang Zhang and Yang Gao and Hanfu Chen and Ke Chen and Songlin Wang and Xiaogui Yang and Yuqian Zhang and Kexin Huang and ZhengYuan Lin and Kang Yu and Ziqi Chen and Jin Wang and Zhaoye Fei and Qinyuan Cheng and Shimin Li and Xipeng Qiu},
year={2026},
eprint={2603.18090},
archivePrefix={arXiv},
primaryClass={cs.SD},
url={https://arxiv.org/abs/2603.18090},
}
@misc{zhang2026mossttsdtextspokendialogue,
title={MOSS-TTSD: Text to Spoken Dialogue Generation},
author={Yuqian Zhang and Donghua Yu and Zhengyuan Lin and Botian Jiang and Mingshu Chen and Yaozhou Jiang and Yiwei Zhao and Yiyang Zhang and Yucheng Yuan and Hanfu Chen and Kexin Huang and Jun Zhan and Cheng Chang and Zhaoye Fei and Shimin Li and Xiaogui Yang and Qinyuan Cheng and Xipeng Qiu},
year={2026},
eprint={2603.19739},
archivePrefix={arXiv},
primaryClass={cs.SD},
url={https://arxiv.org/abs/2603.19739},
}
@misc{huang2026mossvoicegeneratorcreaterealisticvoices,
title={MOSS-VoiceGenerator: Create Realistic Voices with Natural Language Descriptions},
author={Kexin Huang and Liwei Fan and Botian Jiang and Yaozhou Jiang and Qian Tu and Jie Zhu and Yuqian Zhang and Yiwei Zhao and Chenchen Yang and Zhaoye Fei and Shimin Li and Xiaogui Yang and Qinyuan Cheng and Xipeng Qiu},
year={2026},
eprint={2603.28086},
archivePrefix={arXiv},
primaryClass={cs.SD},
url={https://arxiv.org/abs/2603.28086},
}
Star History
Convert
designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual Copilot