# MOSS-TTS (uniquement CPU, 100M)

MOSS-TTS est une famille de génération vocale open source de **OpenMOSS** (Shanghai Innovation Institution, en collaboration avec **Fudan NLP** et **MOSI.AI**, dirigée par le Prof. Xipeng Qiu). Le fleuron **MOSS-TTS-Nano** ne fait que **100M de paramètres**, fonctionne en temps réel sur un **CPU à 4 cœurs sans GPU**, produit **stéréo 48 kHz**, et prend en charge **20 langues** avec clonage vocal zero-shot. La famille complète monte jusqu’à 8B pour le dialogue multi-locuteurs, la conception de voix et la génération d’effets sonores.

{% hint style="info" %}
**Sortie :** 10 avril 2026 (Nano) · version ONNX CPU le 17 avril 2026 · **Licence :** Apache 2.0
{% endhint %}

Si Kokoro domine le créneau anglais occidental à 82M de paramètres, MOSS-TTS-Nano domine le créneau **multilingue axé CPU** : même philosophie de petit modèle, mais stéréo 48 kHz, 20 langues, clonage vocal et une voie ONNX/GGUF sans Torch. Pour quiconque veut déployer du TTS sans payer pour un GPU — c’est le modèle qu’il faut.

### Famille MOSS-TTS

| Modèle                         | Taille          | VRAM                | Idéal pour                                            |
| ------------------------------ | --------------- | ------------------- | ----------------------------------------------------- |
| **MOSS-TTS-Nano-100M**         | 100M            | 0 Go (CPU, 4 cœurs) | Temps réel, edge, IVR, sur appareil                   |
| **MOSS-TTS-Nano-100M-ONNX**    | 100M            | 0 Go (CPU)          | Service de production sans Torch                      |
| **MOSS-TTS-GGUF**              | 100M (Q4\_K\_M) | 0 Go (CPU)          | déploiements de type llama.cpp                        |
| **MOSS-TTS-Local-Transformer** | 1,7B            | 4 Go                | GPU léger, excellente qualité objective               |
| **MOSS-TTS-Realtime**          | 1,7B            | 4 Go                | agents vocaux multi-tours, TTFB de 180 ms             |
| **MOSS-VoiceGenerator**        | 1,7B            | 4 Go                | Conception de voix à partir de prompts texte          |
| **MOSS-TTSD-v1.0**             | 8B              | 8 Go                | dialogue multi-locuteurs, longs podcasts              |
| **MOSS-SoundEffect**           | 8B              | 8 Go                | Génération d’effets sonores avec contrôle de la durée |

### Spécifications clés

| Spécification              | Valeur                                                                                                                          |
| -------------------------- | ------------------------------------------------------------------------------------------------------------------------------- |
| **Développeur**            | Équipe OpenMOSS · MOSI.AI · Fudan NLP Lab                                                                                       |
| **Architecture**           | Autoregressive (Audio Tokenizer + LLM)                                                                                          |
| **Taux d’échantillonnage** | 48 kHz, stéréo                                                                                                                  |
| **Langues**                | 20 (zh, en, de, es, fr, ja, it, hu, ko, ru, fa, ar, pl, pt, cs, da, sv, el, tr, +1)                                             |
| **Clonage vocal**          | Zero-shot à partir d’une référence d’environ 3 s                                                                                |
| **Streaming**              | Oui — décodage par blocs sur CPU                                                                                                |
| **Licence**                | 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) |

### Pourquoi MOSS-TTS ?

* **Déploiement sans GPU** — Nano fonctionne sur 4 cœurs CPU, sans CUDA ni Triton
* **Sortie stéréo 48 kHz** — qualité de diffusion, rare dans les modèles de moins de 100M
* **20 langues** — couverture plus large que Kokoro (\~5) à une taille similaire
* **Clonage vocal zero-shot** à partir d’un audio de référence d’environ 3 s
* **Chemins ONNX/GGUF sans Torch** — déployez avec un binaire de 200 Mo
* **La famille évolue** — même tokenizer/API de Nano à TTSD 8B
* **Apache 2.0** — usage commercial, sans contraintes
* **Issu d’une vraie recherche** — Fudan NLP + MOSI.AI, pas un projet amateur

## Exigences

| Composant | Minimum (Nano, CPU)       | Recommandé (Nano, CPU) | Famille complète (GPU)   |
| --------- | ------------------------- | ---------------------- | ------------------------ |
| CPU       | 4 cœurs (x86\_64 / ARM64) | 8 cœurs                | 8 cœurs                  |
| RAM       | 4 Go                      | 8 Go                   | 16 Go                    |
| GPU       | — (non requis)            | — (facultatif)         | RTX 3060 12 Go+          |
| VRAM      | 0 Go                      | 0 Go                   | 4–8 Go                   |
| Disque    | 1 Go                      | 2 Go                   | 10 Go (8B + dépendances) |
| Python    | 3.12                      | 3.12                   | 3.12                     |

{% hint style="success" %}
**Conseil Clore.ai :** Nano n’a littéralement pas besoin de GPU. Si vous avez déjà une machine Clore pour d’autres tâches, le TTS est gratuit. Si vous *voulez* un GPU pour le débit par lot ou pour exécuter les variantes 1,7B/8B, une **RTX 3060 12 Go (\~0,10–0,30 $/jour)** est surdimensionnée.
{% endhint %}

## Option A — installation Python + inférence rapide

```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 .

# Si pynini échoue via pip, utilisez conda-forge :
conda install -c conda-forge pynini=2.1.6.post1 -y
```

Inférence à partir de l’audio de référence + du texte cible :

```bash
python infer.py \
  --prompt-audio-path assets/audio/en_1.wav \
  --text "Bienvenue sur Clore.ai — la place de marché GPU décentralisée."
# Sortie : generated_audio/infer_output.wav  (stéréo 48 kHz)
```

Ou via le point d’entrée CLI :

```bash
moss-tts-nano generate \
  --prompt-speech ref.wav \
  --text "Bonjour depuis MOSS-TTS Nano exécuté sur CPU."
```

Démo web (Gradio) :

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

## Option B — Docker (CPU et GPU)

**CPU uniquement** (Nano, image d’environ 1 Go) :

```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
```

**Variante GPU** (pour 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"
```

## Option C — clonage vocal zero-shot (référence de 3 s)

MOSS-TTS-Nano clone une voix à partir d’un court clip de référence et gère la synthèse longue grâce au découpage automatique.

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

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

# Cloner une voix à partir de n’importe quel clip propre de 3 à 10 s
audio, sr = model.synthesize(
    text="This is my cloned voice narrating a Clore.ai audiobook chapter.",
    prompt_audio_path="speaker_ref_3s.wav",
    language="en",
)
sf.write("cloned.wav", audio, sr)  # stéréo 48 kHz
```

**Conseils de qualité (adaptés du playbook XTTS — les mêmes principes s’appliquent) :**

* Utilisez 3 à 10 s de **référence** propre (pas de musique de fond, pas de réverbération de pièce)
* Faites correspondre la langue de la référence et du texte cible lorsque c’est possible
* Normalisez et coupez le silence avant l’entrée (`librosa.effects.trim`)
* Pour une narration longue cohérente, réutilisez la même référence entre les appels

## Option D — GGUF sur llama.cpp-audio / ONNX sans Torch

Pour les machines edge, les backends mobiles ou partout où vous ne voulez pas de PyTorch :

```bash
# Clonez le dépôt principal avec les extras sans Torch
git clone https://github.com/OpenMOSS/MOSS-TTS.git
cd MOSS-TTS
pip install -e ".[llama-cpp-onnx]"

# Récupérez les poids quantifiés GGUF (Q4_K_M)
huggingface-cli download OpenMOSS-Team/MOSS-TTS-GGUF --local-dir weights/

# Ou version ONNX pure (sans Torch du tout)
huggingface-cli download OpenMOSS-Team/MOSS-TTS-Nano-100M-ONNX --local-dir weights-onnx/
```

Cette voie fonctionne avec des outils compatibles llama.cpp — idéal pour Raspberry Pi, Android ou les fonctions serverless où un binaire de 200 Mo compte.

## Recommandations GPU Clore.ai

**Vous n’avez pas besoin d’un GPU pour Nano.** C’est tout l’intérêt. Mais si vous voulez générer par lots ou exécuter les grands frères :

| GPU                         | VRAM  | Convient                                 | Prix Clore (approx.)     |
| --------------------------- | ----- | ---------------------------------------- | ------------------------ |
| **Instance CPU uniquement** | —     | Nano, Nano-ONNX, GGUF                    | à partir de **0,01 $/h** |
| RTX 3060 12 Go              | 12 Go | Nano + Local-Transformer + Realtime      | à partir de 0,10 $/jour  |
| RTX 3090 24 Go              | 24 Go | TTSD-v1.0 complet (8B), service par lots | à partir de 0,30 $/jour  |
| RTX 4090 24 Go              | 24 Go | TTSD + SoundEffect en parallèle          | à partir de 0,50 $/jour  |

{% hint style="success" %}
Pour 90 % des charges TTS de production — agents vocaux, IVR, narration — une **machine Clore.ai CPU uniquement est littéralement le déploiement viable le moins cher**. Louez-la, lancez MOSS-TTS-Nano, oubliez les factures GPU.
{% endhint %}

## Cas d’usage

* **Livres audio** — narration longue avec voix clonée cohérente, découpage automatique
* **Agents vocaux** — TTFB inférieur à la seconde sur la variante Realtime pour l’IA conversationnelle
* **IVR / systèmes téléphoniques** — déploiement CPU uniquement, stéréo 48 kHz, 20 langues
* **PNJ de jeu** — assez léger pour être intégré dans un client de jeu, conception de voix par personnage
* **Doublage** — clonage multilingue pour les pipelines de localisation
* **Génération de podcasts** — MOSS-TTSD-v1.0 gère nativement les dialogues multi-locuteurs
* **Effets sonores** — MOSS-SoundEffect ajoute des FX à durée contrôlée au pipeline

## Benchmarks / Qualité

* **MOSS-TTSD-v1.0** a surpassé Doubao et Gemini 2.5-pro sur des évaluations subjectives de dialogues multi-locuteurs
* **Nano** affiche un facteur temps réel **< 1,0 sur 4 cœurs CPU** (c.-à-d. plus rapide que la lecture)
* **Realtime** la variante indique **\~180 ms de temps jusqu’au premier octet** pour un usage conversationnel
* La sortie stéréo 48 kHz représente une nette amélioration par rapport aux concurrents mono 24 kHz à ce budget de paramètres

## Dépannage

| Problème                                     | Solution                                                                                                         |
| -------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- |
| `pynini` échec de l’installation via pip     | `conda install -c conda-forge pynini=2.1.6.post1 -y` puis réinstallez WeTextProcessing                           |
| Audio haché sur CPU                          | Assurez-vous d’avoir 4 cœurs physiques ou plus ; désactivez la sursouscription SMT/HT ; utilisez la version ONNX |
| La voix clonée sonne mal                     | La référence doit durer 3 à 10 s, être propre, avec un seul locuteur, et correspondre à la langue                |
| OOM sur TTSD-v1.0                            | Utilisez FP16 (`model.half()`) ou revenez au Local-Transformer 1,7B                                              |
| Le téléchargement du modèle se bloque        | Définissez `HF_HUB_ENABLE_HF_TRANSFER=1` et réessayez                                                            |
| Premier lancement lent                       | La première inférence compile les noyaux / télécharge \~400 Mo de poids — les exécutions suivantes sont rapides  |
| Torch entre en conflit avec d’autres modèles | Utilisez les extras `[llama-cpp-onnx]` pour un environnement sans Torch                                          |

## Étapes suivantes

* [Kokoro TTS](/guides/guides_v2-fr/audio-et-voix/kokoro-tts.md) — l’alternative anglophone à 82M si vous n’avez pas besoin du multilingue
* [Voxtral TTS](/guides/guides_v2-fr/audio-et-voix/voxtral-tts.md) — modèle Mistral 4B, 9 langues, GPU requis mais plafond plus élevé
* [XTTS (Coqui)](/guides/guides_v2-fr/audio-et-voix/xtts-coqui.md) — clonage vocal sur 17 langues, GPU uniquement, plus grand
* [Transcription Whisper](/guides/guides_v2-fr/audio-et-voix/whisper-transcription.md) — associez MOSS-TTS à Whisper pour des pipelines vocaux complets
* [Louez un GPU (ou un CPU) sur la place de marché Clore.ai](https://clore.ai/marketplace)

***

*Dernière mise à jour : 20 avril 2026*


---

# 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-fr/audio-et-voix/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.
