# Synthèse TTS — NON-STREAM / chunké (batch)

> ⚠️ **Vitesse ≠ qualité/accent** : les latences classent la réactivité, pas le rendu — **écouter les audios** pour juger. Arbo normalisée `tts_out/<modele>-<version>-<stream|batch>-<cloud|hosted>/<langue>/<Voix>__<variante>.wav` ; liens relatifs depuis `bench/results/`. Généré le 2026-06-24.


## Tableau de synthèse

| Modèle | Héberg. | Type | Latence | RTF | VRAM | Langues | Licence | Verdict |
|---|---|---|---|---|---|---|---|---|
| Gemini preview-tts | cloud | bufferisé | TTFA ~4 s | — | — | 24–70+ | propr. | éliminé temps réel |
| Voxtral TTS | cloud | SSE | ~1172 ms | — | — | EN only | propr. | écarté (EN) |
| Qwen3-TTS 1.7B | self-host | chunké | TTFA ~9,3 s | 2,49 | 4552 MiB | 8 | Apache-2.0 | lent L4, voir Mac |
| Chatterbox 0.5B | self-host | chunké | TTFA ~5,1 s | 1,08 | 3858 MiB | 23 | MIT | voix FR à changer |
| Kokoro 82M | self-host | batch | RTF excellent | <1 | <1 Go | 7 | Apache-2.0 | **voix rejetée** |
| XTTS-v2 | self-host | batch | — | — | — | 7 | CPML ⛔ | non commercial |


---

## Détail modèle par modèle (cloud → self-host)


### Gemini TTS `preview-tts`  ☁️ cloud

Qualité TOP mais **NE STREAME PAS** : bufferise → **TTFA ~4 s** (mesuré). Idem `gemini-3.1-flash-tts`. Éliminé temps réel.

**Fiche**

| Donnée | Valeur |
|---|---|
| Hébergement | Cloud Gemini |
| Streaming | ❌ non (bufferisé, 1 event) |
| Modèle | gemini-2.5-flash-preview-tts (et 3.1-flash-tts) |
| Licence | Propriétaire (cloud) |
| Params / VRAM / disque | n/a |
| Langues | 24–70+, 30 voix |
| RGPD / ZDR | cloud (Vertex EU selon modèle) |
| Tarif | cloud à l'usage |
| TTFA mesuré | ~3,0–4,1 s |
| Date bench | 2026-06-13 |


**🔊 Audios (voix · émotions · langues)**


**Allemand** (1)  
- _Kore_ : [neutre](../tts_out/gemini-previewtts-batch-cloud/de/Kore__neu.wav)

**Anglais** (8)  
- _Kore_ : [dur · chiffres/dates](../tts_out/gemini-previewtts-batch-cloud/en/Kore__hard-num.wav) · [dur · codes](../tts_out/gemini-previewtts-batch-cloud/en/Kore__hard-code.wav) · [dur · marques](../tts_out/gemini-previewtts-batch-cloud/en/Kore__hard-brand.wav) · [neutre](../tts_out/gemini-previewtts-batch-cloud/en/Kore__neu.wav) · [émotion · colère](../tts_out/gemini-previewtts-batch-cloud/en/Kore__emo-angry.wav) · [émotion · enthousiaste](../tts_out/gemini-previewtts-batch-cloud/en/Kore__emo-enthus.wav) · [émotion · gaie](../tts_out/gemini-previewtts-batch-cloud/en/Kore__emo-happy.wav) · [émotion · triste](../tts_out/gemini-previewtts-batch-cloud/en/Kore__emo-sad.wav)

**Espagnol** (1)  
- _Kore_ : [neutre](../tts_out/gemini-previewtts-batch-cloud/es/Kore__neu.wav)

**Français** (10)  
- _Kore_ : [dur · chiffres/dates](../tts_out/gemini-previewtts-batch-cloud/fr/Kore__hard-num.wav) · [dur · codes](../tts_out/gemini-previewtts-batch-cloud/fr/Kore__hard-code.wav) · [dur · marques](../tts_out/gemini-previewtts-batch-cloud/fr/Kore__hard-brand.wav) · [dur · noms](../tts_out/gemini-previewtts-batch-cloud/fr/Kore__hard-names.wav) · [neutre](../tts_out/gemini-previewtts-batch-cloud/fr/Kore__neu.wav) · [neutre (2)](../tts_out/gemini-previewtts-batch-cloud/fr/Kore__neu-2.wav) · [émotion · colère](../tts_out/gemini-previewtts-batch-cloud/fr/Kore__emo-angry.wav) · [émotion · enthousiaste](../tts_out/gemini-previewtts-batch-cloud/fr/Kore__emo-enthus.wav) · [émotion · gaie](../tts_out/gemini-previewtts-batch-cloud/fr/Kore__emo-happy.wav) · [émotion · triste](../tts_out/gemini-previewtts-batch-cloud/fr/Kore__emo-sad.wav)

**Italien** (1)  
- _Kore_ : [neutre](../tts_out/gemini-previewtts-batch-cloud/it/Kore__neu.wav)

**Japonais** (1)  
- _Kore_ : [neutre](../tts_out/gemini-previewtts-batch-cloud/ja/Kore__neu.wav)

**Néerlandais** (1)  
- _Kore_ : [neutre](../tts_out/gemini-previewtts-batch-cloud/nl/Kore__neu.wav)

**Portugais** (1)  
- _Kore_ : [neutre](../tts_out/gemini-previewtts-batch-cloud/pt/Kore__neu.wav)

**Turc** (1)  
- _Kore_ : [neutre](../tts_out/gemini-previewtts-batch-cloud/tr/Kore__neu.wav)

**Chinois** (1)  
- _Kore_ : [neutre](../tts_out/gemini-previewtts-batch-cloud/zh/Kore__neu.wav)


### Voxtral TTS (Mistral)  ☁️ cloud

**Anglais uniquement**, voix à émotion. TTFA ~1172 ms. Écarté (pas de FR/multilingue).

**Fiche**

| Donnée | Valeur |
|---|---|
| Hébergement | Cloud Mistral |
| Streaming | SSE |
| Modèle | voxtral-mini-tts-latest |
| Licence | Propriétaire (cloud) |
| Params / VRAM / disque | n/a |
| Langues | **EN uniquement** |
| RGPD / ZDR | cloud |
| Tarif | cloud à l'usage |
| TTFA mesuré | ~1172 ms |
| Date bench | 2026-06-09/13 |


**🔊 Audios (voix · émotions · langues)**


**Anglais** (34)  
- _default_ : [dur · chiffres/dates](../tts_out/voxtral-tts-batch-cloud/en/default__hard-num.mp3) · [dur · chiffres/dates](../tts_out/voxtral-tts-batch-cloud/en/default__hard-num.wav) · [dur · codes](../tts_out/voxtral-tts-batch-cloud/en/default__hard-code.mp3) · [dur · codes](../tts_out/voxtral-tts-batch-cloud/en/default__hard-code.wav) · [dur · marques](../tts_out/voxtral-tts-batch-cloud/en/default__hard-brand.mp3) · [dur · marques](../tts_out/voxtral-tts-batch-cloud/en/default__hard-brand.wav) · [dur · noms](../tts_out/voxtral-tts-batch-cloud/en/default__hard-names.mp3) · [dur · noms](../tts_out/voxtral-tts-batch-cloud/en/default__hard-names.wav) · [neutre](../tts_out/voxtral-tts-batch-cloud/en/default__neu.mp3) · [neutre](../tts_out/voxtral-tts-batch-cloud/en/default__neu.wav) · [émotion · colère](../tts_out/voxtral-tts-batch-cloud/en/default__emo-angry.mp3) · [émotion · colère](../tts_out/voxtral-tts-batch-cloud/en/default__emo-angry.wav) · [émotion · colère (2)](../tts_out/voxtral-tts-batch-cloud/en/default__emo-angry-2.mp3) · [émotion · colère (2)](../tts_out/voxtral-tts-batch-cloud/en/default__emo-angry-2.wav) · [émotion · enthousiaste](../tts_out/voxtral-tts-batch-cloud/en/default__emo-enthus.mp3) · [émotion · enthousiaste](../tts_out/voxtral-tts-batch-cloud/en/default__emo-enthus.wav) · [émotion · gaie](../tts_out/voxtral-tts-batch-cloud/en/default__emo-happy.mp3) · [émotion · gaie](../tts_out/voxtral-tts-batch-cloud/en/default__emo-happy.wav) · [émotion · triste](../tts_out/voxtral-tts-batch-cloud/en/default__emo-sad.mp3) · [émotion · triste](../tts_out/voxtral-tts-batch-cloud/en/default__emo-sad.wav)
- _en_paul_angry_ : [émotion · colère](../tts_out/voxtral-tts-batch-cloud/en/en_paul_angry__emo-angry.mp3) · [émotion · colère](../tts_out/voxtral-tts-batch-cloud/en/en_paul_angry__emo-angry.wav)
- _en_paul_cheerful_ : [émotion · gaie](../tts_out/voxtral-tts-batch-cloud/en/en_paul_cheerful__emo-happy.mp3) · [émotion · gaie](../tts_out/voxtral-tts-batch-cloud/en/en_paul_cheerful__emo-happy.wav)
- _en_paul_excited_ : [émotion · enthousiaste](../tts_out/voxtral-tts-batch-cloud/en/en_paul_excited__emo-enthus.mp3) · [émotion · enthousiaste](../tts_out/voxtral-tts-batch-cloud/en/en_paul_excited__emo-enthus.wav) · [émotion · gaie](../tts_out/voxtral-tts-batch-cloud/en/en_paul_excited__emo-happy.mp3) · [émotion · gaie](../tts_out/voxtral-tts-batch-cloud/en/en_paul_excited__emo-happy.wav)
- _en_paul_happy_ : [émotion · gaie](../tts_out/voxtral-tts-batch-cloud/en/en_paul_happy__emo-happy.mp3) · [émotion · gaie](../tts_out/voxtral-tts-batch-cloud/en/en_paul_happy__emo-happy.wav) · [émotion · gaie (2)](../tts_out/voxtral-tts-batch-cloud/en/en_paul_happy__emo-happy-2.mp3) · [émotion · gaie (2)](../tts_out/voxtral-tts-batch-cloud/en/en_paul_happy__emo-happy-2.wav)
- _en_paul_sad_ : [émotion · triste](../tts_out/voxtral-tts-batch-cloud/en/en_paul_sad__emo-sad.mp3) · [émotion · triste](../tts_out/voxtral-tts-batch-cloud/en/en_paul_sad__emo-sad.wav)


### Qwen3-TTS 1.7B  🖥️ self-host

Charge (venv isolé transformers==4.57.3) mais **LENT sur L4 eager (RTF 2,49)**, TTFA chunké ~9,3 s. À re-mesurer Mac/MLX. Streaming = chunké phrase-par-phrase.

**Fiche**

| Donnée | Valeur |
|---|---|
| Hébergement | **Self-host** (transformers, CUDA ; Mac/MLX cible) |
| Streaming | chunké |
| Modèle | Qwen/Qwen3-TTS-12Hz-1.7B-VoiceDesign |
| Licence | **Apache-2.0** |
| Params | ~1,7 B |
| Pic VRAM | 4552 MiB |
| Disque | ~3,5 Go |
| Langues | fr/en/es/pt/de/it/ja/zh |
| RGPD / ZDR | ✅ offline |
| Tarif | gratuit |
| Date bench | 2026-06-13 |


**Métriques (L4)**

| RTF médian | TTFA chunké | Pic VRAM | synth médian |
|---|---|---|---|
| 2,49 | ~9274 ms | 4552 MiB | 11295 ms |


**🔊 Audios (voix · émotions · langues)**


**Allemand** (5)  
- _FemaleSoft_ : [neutre](../tts_out/qwen3tts-1.7b-stream-hosted/de/FemaleSoft__neu.wav)
- _FemaleWarm_ : [neutre](../tts_out/qwen3tts-1.7b-stream-hosted/de/FemaleWarm__neu.wav)
- _MaleDeep_ : [neutre](../tts_out/qwen3tts-1.7b-stream-hosted/de/MaleDeep__neu.wav)
- _MaleWarm_ : [neutre](../tts_out/qwen3tts-1.7b-stream-hosted/de/MaleWarm__neu.wav)
- _default_ : [neutre](../tts_out/qwen3tts-1.7b-batch-hosted/de/default__neu.wav)

**Anglais** (63)  
- _FemaleBright_ : [dur · chiffres/dates](../tts_out/qwen3tts-1.7b-stream-hosted/en/FemaleBright__hard-num.wav) · [dur · codes](../tts_out/qwen3tts-1.7b-stream-hosted/en/FemaleBright__hard-code.wav) · [dur · marques](../tts_out/qwen3tts-1.7b-stream-hosted/en/FemaleBright__hard-brand.wav) · [dur · noms](../tts_out/qwen3tts-1.7b-stream-hosted/en/FemaleBright__hard-names.wav) · [neutre](../tts_out/qwen3tts-1.7b-stream-hosted/en/FemaleBright__neu.wav) · [émotion · colère](../tts_out/qwen3tts-1.7b-stream-hosted/en/FemaleBright__emo-angry.wav) · [émotion · enthousiaste](../tts_out/qwen3tts-1.7b-stream-hosted/en/FemaleBright__emo-enthus.wav) · [émotion · gaie](../tts_out/qwen3tts-1.7b-stream-hosted/en/FemaleBright__emo-happy.wav) · [émotion · triste](../tts_out/qwen3tts-1.7b-stream-hosted/en/FemaleBright__emo-sad.wav)
- _FemaleSoft_ : [dur · chiffres/dates](../tts_out/qwen3tts-1.7b-stream-hosted/en/FemaleSoft__hard-num.wav) · [dur · codes](../tts_out/qwen3tts-1.7b-stream-hosted/en/FemaleSoft__hard-code.wav) · [dur · marques](../tts_out/qwen3tts-1.7b-stream-hosted/en/FemaleSoft__hard-brand.wav) · [dur · noms](../tts_out/qwen3tts-1.7b-stream-hosted/en/FemaleSoft__hard-names.wav) · [neutre](../tts_out/qwen3tts-1.7b-stream-hosted/en/FemaleSoft__neu.wav) · [émotion · colère](../tts_out/qwen3tts-1.7b-stream-hosted/en/FemaleSoft__emo-angry.wav) · [émotion · enthousiaste](../tts_out/qwen3tts-1.7b-stream-hosted/en/FemaleSoft__emo-enthus.wav) · [émotion · gaie](../tts_out/qwen3tts-1.7b-stream-hosted/en/FemaleSoft__emo-happy.wav) · [émotion · triste](../tts_out/qwen3tts-1.7b-stream-hosted/en/FemaleSoft__emo-sad.wav)
- _FemaleWarm_ : [dur · chiffres/dates](../tts_out/qwen3tts-1.7b-stream-hosted/en/FemaleWarm__hard-num.wav) · [dur · codes](../tts_out/qwen3tts-1.7b-stream-hosted/en/FemaleWarm__hard-code.wav) · [dur · marques](../tts_out/qwen3tts-1.7b-stream-hosted/en/FemaleWarm__hard-brand.wav) · [dur · noms](../tts_out/qwen3tts-1.7b-stream-hosted/en/FemaleWarm__hard-names.wav) · [neutre](../tts_out/qwen3tts-1.7b-stream-hosted/en/FemaleWarm__neu.wav) · [émotion · colère](../tts_out/qwen3tts-1.7b-stream-hosted/en/FemaleWarm__emo-angry.wav) · [émotion · enthousiaste](../tts_out/qwen3tts-1.7b-stream-hosted/en/FemaleWarm__emo-enthus.wav) · [émotion · gaie](../tts_out/qwen3tts-1.7b-stream-hosted/en/FemaleWarm__emo-happy.wav) · [émotion · triste](../tts_out/qwen3tts-1.7b-stream-hosted/en/FemaleWarm__emo-sad.wav)
- _MaleDeep_ : [dur · chiffres/dates](../tts_out/qwen3tts-1.7b-stream-hosted/en/MaleDeep__hard-num.wav) · [dur · codes](../tts_out/qwen3tts-1.7b-stream-hosted/en/MaleDeep__hard-code.wav) · [dur · marques](../tts_out/qwen3tts-1.7b-stream-hosted/en/MaleDeep__hard-brand.wav) · [dur · noms](../tts_out/qwen3tts-1.7b-stream-hosted/en/MaleDeep__hard-names.wav) · [neutre](../tts_out/qwen3tts-1.7b-stream-hosted/en/MaleDeep__neu.wav) · [émotion · colère](../tts_out/qwen3tts-1.7b-stream-hosted/en/MaleDeep__emo-angry.wav) · [émotion · enthousiaste](../tts_out/qwen3tts-1.7b-stream-hosted/en/MaleDeep__emo-enthus.wav) · [émotion · gaie](../tts_out/qwen3tts-1.7b-stream-hosted/en/MaleDeep__emo-happy.wav) · [émotion · triste](../tts_out/qwen3tts-1.7b-stream-hosted/en/MaleDeep__emo-sad.wav)
- _MaleWarm_ : [dur · chiffres/dates](../tts_out/qwen3tts-1.7b-stream-hosted/en/MaleWarm__hard-num.wav) · [dur · codes](../tts_out/qwen3tts-1.7b-stream-hosted/en/MaleWarm__hard-code.wav) · [dur · marques](../tts_out/qwen3tts-1.7b-stream-hosted/en/MaleWarm__hard-brand.wav) · [dur · noms](../tts_out/qwen3tts-1.7b-stream-hosted/en/MaleWarm__hard-names.wav) · [neutre](../tts_out/qwen3tts-1.7b-stream-hosted/en/MaleWarm__neu.wav) · [émotion · colère](../tts_out/qwen3tts-1.7b-stream-hosted/en/MaleWarm__emo-angry.wav) · [émotion · enthousiaste](../tts_out/qwen3tts-1.7b-stream-hosted/en/MaleWarm__emo-enthus.wav) · [émotion · gaie](../tts_out/qwen3tts-1.7b-stream-hosted/en/MaleWarm__emo-happy.wav) · [émotion · triste](../tts_out/qwen3tts-1.7b-stream-hosted/en/MaleWarm__emo-sad.wav)
- _MaleYoung_ : [dur · chiffres/dates](../tts_out/qwen3tts-1.7b-stream-hosted/en/MaleYoung__hard-num.wav) · [dur · codes](../tts_out/qwen3tts-1.7b-stream-hosted/en/MaleYoung__hard-code.wav) · [dur · marques](../tts_out/qwen3tts-1.7b-stream-hosted/en/MaleYoung__hard-brand.wav) · [dur · noms](../tts_out/qwen3tts-1.7b-stream-hosted/en/MaleYoung__hard-names.wav) · [neutre](../tts_out/qwen3tts-1.7b-stream-hosted/en/MaleYoung__neu.wav) · [émotion · colère](../tts_out/qwen3tts-1.7b-stream-hosted/en/MaleYoung__emo-angry.wav) · [émotion · enthousiaste](../tts_out/qwen3tts-1.7b-stream-hosted/en/MaleYoung__emo-enthus.wav) · [émotion · gaie](../tts_out/qwen3tts-1.7b-stream-hosted/en/MaleYoung__emo-happy.wav) · [émotion · triste](../tts_out/qwen3tts-1.7b-stream-hosted/en/MaleYoung__emo-sad.wav)
- _default_ : [dur · chiffres/dates](../tts_out/qwen3tts-1.7b-batch-hosted/en/default__hard-num.wav) · [dur · codes](../tts_out/qwen3tts-1.7b-batch-hosted/en/default__hard-code.wav) · [dur · marques](../tts_out/qwen3tts-1.7b-batch-hosted/en/default__hard-brand.wav) · [dur · noms](../tts_out/qwen3tts-1.7b-batch-hosted/en/default__hard-names.wav) · [neutre](../tts_out/qwen3tts-1.7b-batch-hosted/en/default__neu.wav) · [émotion · colère](../tts_out/qwen3tts-1.7b-batch-hosted/en/default__emo-angry.wav) · [émotion · enthousiaste](../tts_out/qwen3tts-1.7b-batch-hosted/en/default__emo-enthus.wav) · [émotion · gaie](../tts_out/qwen3tts-1.7b-batch-hosted/en/default__emo-happy.wav) · [émotion · triste](../tts_out/qwen3tts-1.7b-batch-hosted/en/default__emo-sad.wav)

**Espagnol** (5)  
- _FemaleSoft_ : [neutre](../tts_out/qwen3tts-1.7b-stream-hosted/es/FemaleSoft__neu.wav)
- _FemaleWarm_ : [neutre](../tts_out/qwen3tts-1.7b-stream-hosted/es/FemaleWarm__neu.wav)
- _MaleDeep_ : [neutre](../tts_out/qwen3tts-1.7b-stream-hosted/es/MaleDeep__neu.wav)
- _MaleWarm_ : [neutre](../tts_out/qwen3tts-1.7b-stream-hosted/es/MaleWarm__neu.wav)
- _default_ : [neutre](../tts_out/qwen3tts-1.7b-batch-hosted/es/default__neu.wav)

**Français** (63)  
- _FemaleBright_ : [dur · chiffres/dates](../tts_out/qwen3tts-1.7b-stream-hosted/fr/FemaleBright__hard-num.wav) · [dur · codes](../tts_out/qwen3tts-1.7b-stream-hosted/fr/FemaleBright__hard-code.wav) · [dur · marques](../tts_out/qwen3tts-1.7b-stream-hosted/fr/FemaleBright__hard-brand.wav) · [dur · noms](../tts_out/qwen3tts-1.7b-stream-hosted/fr/FemaleBright__hard-names.wav) · [neutre](../tts_out/qwen3tts-1.7b-stream-hosted/fr/FemaleBright__neu.wav) · [émotion · colère](../tts_out/qwen3tts-1.7b-stream-hosted/fr/FemaleBright__emo-angry.wav) · [émotion · enthousiaste](../tts_out/qwen3tts-1.7b-stream-hosted/fr/FemaleBright__emo-enthus.wav) · [émotion · gaie](../tts_out/qwen3tts-1.7b-stream-hosted/fr/FemaleBright__emo-happy.wav) · [émotion · triste](../tts_out/qwen3tts-1.7b-stream-hosted/fr/FemaleBright__emo-sad.wav)
- _FemaleSoft_ : [dur · chiffres/dates](../tts_out/qwen3tts-1.7b-stream-hosted/fr/FemaleSoft__hard-num.wav) · [dur · codes](../tts_out/qwen3tts-1.7b-stream-hosted/fr/FemaleSoft__hard-code.wav) · [dur · marques](../tts_out/qwen3tts-1.7b-stream-hosted/fr/FemaleSoft__hard-brand.wav) · [dur · noms](../tts_out/qwen3tts-1.7b-stream-hosted/fr/FemaleSoft__hard-names.wav) · [neutre](../tts_out/qwen3tts-1.7b-stream-hosted/fr/FemaleSoft__neu.wav) · [émotion · colère](../tts_out/qwen3tts-1.7b-stream-hosted/fr/FemaleSoft__emo-angry.wav) · [émotion · enthousiaste](../tts_out/qwen3tts-1.7b-stream-hosted/fr/FemaleSoft__emo-enthus.wav) · [émotion · gaie](../tts_out/qwen3tts-1.7b-stream-hosted/fr/FemaleSoft__emo-happy.wav) · [émotion · triste](../tts_out/qwen3tts-1.7b-stream-hosted/fr/FemaleSoft__emo-sad.wav)
- _FemaleWarm_ : [dur · chiffres/dates](../tts_out/qwen3tts-1.7b-stream-hosted/fr/FemaleWarm__hard-num.wav) · [dur · codes](../tts_out/qwen3tts-1.7b-stream-hosted/fr/FemaleWarm__hard-code.wav) · [dur · marques](../tts_out/qwen3tts-1.7b-stream-hosted/fr/FemaleWarm__hard-brand.wav) · [dur · noms](../tts_out/qwen3tts-1.7b-stream-hosted/fr/FemaleWarm__hard-names.wav) · [neutre](../tts_out/qwen3tts-1.7b-stream-hosted/fr/FemaleWarm__neu.wav) · [émotion · colère](../tts_out/qwen3tts-1.7b-stream-hosted/fr/FemaleWarm__emo-angry.wav) · [émotion · enthousiaste](../tts_out/qwen3tts-1.7b-stream-hosted/fr/FemaleWarm__emo-enthus.wav) · [émotion · gaie](../tts_out/qwen3tts-1.7b-stream-hosted/fr/FemaleWarm__emo-happy.wav) · [émotion · triste](../tts_out/qwen3tts-1.7b-stream-hosted/fr/FemaleWarm__emo-sad.wav)
- _MaleDeep_ : [dur · chiffres/dates](../tts_out/qwen3tts-1.7b-stream-hosted/fr/MaleDeep__hard-num.wav) · [dur · codes](../tts_out/qwen3tts-1.7b-stream-hosted/fr/MaleDeep__hard-code.wav) · [dur · marques](../tts_out/qwen3tts-1.7b-stream-hosted/fr/MaleDeep__hard-brand.wav) · [dur · noms](../tts_out/qwen3tts-1.7b-stream-hosted/fr/MaleDeep__hard-names.wav) · [neutre](../tts_out/qwen3tts-1.7b-stream-hosted/fr/MaleDeep__neu.wav) · [émotion · colère](../tts_out/qwen3tts-1.7b-stream-hosted/fr/MaleDeep__emo-angry.wav) · [émotion · enthousiaste](../tts_out/qwen3tts-1.7b-stream-hosted/fr/MaleDeep__emo-enthus.wav) · [émotion · gaie](../tts_out/qwen3tts-1.7b-stream-hosted/fr/MaleDeep__emo-happy.wav) · [émotion · triste](../tts_out/qwen3tts-1.7b-stream-hosted/fr/MaleDeep__emo-sad.wav)
- _MaleWarm_ : [dur · chiffres/dates](../tts_out/qwen3tts-1.7b-stream-hosted/fr/MaleWarm__hard-num.wav) · [dur · codes](../tts_out/qwen3tts-1.7b-stream-hosted/fr/MaleWarm__hard-code.wav) · [dur · marques](../tts_out/qwen3tts-1.7b-stream-hosted/fr/MaleWarm__hard-brand.wav) · [dur · noms](../tts_out/qwen3tts-1.7b-stream-hosted/fr/MaleWarm__hard-names.wav) · [neutre](../tts_out/qwen3tts-1.7b-stream-hosted/fr/MaleWarm__neu.wav) · [émotion · colère](../tts_out/qwen3tts-1.7b-stream-hosted/fr/MaleWarm__emo-angry.wav) · [émotion · enthousiaste](../tts_out/qwen3tts-1.7b-stream-hosted/fr/MaleWarm__emo-enthus.wav) · [émotion · gaie](../tts_out/qwen3tts-1.7b-stream-hosted/fr/MaleWarm__emo-happy.wav) · [émotion · triste](../tts_out/qwen3tts-1.7b-stream-hosted/fr/MaleWarm__emo-sad.wav)
- _MaleYoung_ : [dur · chiffres/dates](../tts_out/qwen3tts-1.7b-stream-hosted/fr/MaleYoung__hard-num.wav) · [dur · codes](../tts_out/qwen3tts-1.7b-stream-hosted/fr/MaleYoung__hard-code.wav) · [dur · marques](../tts_out/qwen3tts-1.7b-stream-hosted/fr/MaleYoung__hard-brand.wav) · [dur · noms](../tts_out/qwen3tts-1.7b-stream-hosted/fr/MaleYoung__hard-names.wav) · [neutre](../tts_out/qwen3tts-1.7b-stream-hosted/fr/MaleYoung__neu.wav) · [émotion · colère](../tts_out/qwen3tts-1.7b-stream-hosted/fr/MaleYoung__emo-angry.wav) · [émotion · enthousiaste](../tts_out/qwen3tts-1.7b-stream-hosted/fr/MaleYoung__emo-enthus.wav) · [émotion · gaie](../tts_out/qwen3tts-1.7b-stream-hosted/fr/MaleYoung__emo-happy.wav) · [émotion · triste](../tts_out/qwen3tts-1.7b-stream-hosted/fr/MaleYoung__emo-sad.wav)
- _default_ : [dur · chiffres/dates](../tts_out/qwen3tts-1.7b-batch-hosted/fr/default__hard-num.wav) · [dur · codes](../tts_out/qwen3tts-1.7b-batch-hosted/fr/default__hard-code.wav) · [dur · marques](../tts_out/qwen3tts-1.7b-batch-hosted/fr/default__hard-brand.wav) · [dur · noms](../tts_out/qwen3tts-1.7b-batch-hosted/fr/default__hard-names.wav) · [neutre](../tts_out/qwen3tts-1.7b-batch-hosted/fr/default__neu.wav) · [émotion · colère](../tts_out/qwen3tts-1.7b-batch-hosted/fr/default__emo-angry.wav) · [émotion · enthousiaste](../tts_out/qwen3tts-1.7b-batch-hosted/fr/default__emo-enthus.wav) · [émotion · gaie](../tts_out/qwen3tts-1.7b-batch-hosted/fr/default__emo-happy.wav) · [émotion · triste](../tts_out/qwen3tts-1.7b-batch-hosted/fr/default__emo-sad.wav)

**Italien** (5)  
- _FemaleSoft_ : [neutre](../tts_out/qwen3tts-1.7b-stream-hosted/it/FemaleSoft__neu.wav)
- _FemaleWarm_ : [neutre](../tts_out/qwen3tts-1.7b-stream-hosted/it/FemaleWarm__neu.wav)
- _MaleDeep_ : [neutre](../tts_out/qwen3tts-1.7b-stream-hosted/it/MaleDeep__neu.wav)
- _MaleWarm_ : [neutre](../tts_out/qwen3tts-1.7b-stream-hosted/it/MaleWarm__neu.wav)
- _default_ : [neutre](../tts_out/qwen3tts-1.7b-batch-hosted/it/default__neu.wav)

**Japonais** (5)  
- _FemaleSoft_ : [neutre](../tts_out/qwen3tts-1.7b-stream-hosted/ja/FemaleSoft__neu.wav)
- _FemaleWarm_ : [neutre](../tts_out/qwen3tts-1.7b-stream-hosted/ja/FemaleWarm__neu.wav)
- _MaleDeep_ : [neutre](../tts_out/qwen3tts-1.7b-stream-hosted/ja/MaleDeep__neu.wav)
- _MaleWarm_ : [neutre](../tts_out/qwen3tts-1.7b-stream-hosted/ja/MaleWarm__neu.wav)
- _default_ : [neutre](../tts_out/qwen3tts-1.7b-batch-hosted/ja/default__neu.wav)

**Portugais** (5)  
- _FemaleSoft_ : [neutre](../tts_out/qwen3tts-1.7b-stream-hosted/pt/FemaleSoft__neu.wav)
- _FemaleWarm_ : [neutre](../tts_out/qwen3tts-1.7b-stream-hosted/pt/FemaleWarm__neu.wav)
- _MaleDeep_ : [neutre](../tts_out/qwen3tts-1.7b-stream-hosted/pt/MaleDeep__neu.wav)
- _MaleWarm_ : [neutre](../tts_out/qwen3tts-1.7b-stream-hosted/pt/MaleWarm__neu.wav)
- _default_ : [neutre](../tts_out/qwen3tts-1.7b-batch-hosted/pt/default__neu.wav)

**Chinois** (5)  
- _FemaleSoft_ : [neutre](../tts_out/qwen3tts-1.7b-stream-hosted/zh/FemaleSoft__neu.wav)
- _FemaleWarm_ : [neutre](../tts_out/qwen3tts-1.7b-stream-hosted/zh/FemaleWarm__neu.wav)
- _MaleDeep_ : [neutre](../tts_out/qwen3tts-1.7b-stream-hosted/zh/MaleDeep__neu.wav)
- _MaleWarm_ : [neutre](../tts_out/qwen3tts-1.7b-stream-hosted/zh/MaleWarm__neu.wav)
- _default_ : [neutre](../tts_out/qwen3tts-1.7b-batch-hosted/zh/default__neu.wav)


### Chatterbox Multilingual 0.5B  🖥️ self-host

Charge (venv isolé) ; **RTF 1,08**, TTFA chunké ~5,1 s. 23 langues (turc inclus). ⚠️ **voix FR par défaut = accent anglais → tester une autre voix FR (prochain bench)**. À juger oreille + Mac/MLX.

**Fiche**

| Donnée | Valeur |
|---|---|
| Hébergement | **Self-host** (PyTorch ; Mac/MLX possible) |
| Streaming | chunké |
| Modèle | ResembleAI/chatterbox |
| Licence | **MIT** |
| Params | ~0,5 B (Llama) |
| Pic VRAM | 3858 MiB |
| Disque | ~2 Go |
| Langues | **23 (couvre nos 10, turc inclus)** |
| RGPD / ZDR | ✅ offline |
| Tarif | gratuit |
| À faire | ⚠️ voix FR accent anglais → tester autre voix FR |
| Date bench | 2026-06-13 |


**Métriques (L4)**

| RTF médian | TTFA chunké | Pic VRAM | synth médian |
|---|---|---|---|
| 1,08 | ~5124 ms | 3858 MiB | 5026 ms |


**🔊 Audios (voix · émotions · langues)**


**Allemand** (2)  
- _Default_ : [neutre](../tts_out/chatterbox-mtl-stream-hosted/de/Default__neu.wav)
- _default_ : [neutre](../tts_out/chatterbox-mtl-batch-hosted/de/default__neu.wav)

**Anglais** (18)  
- _Default_ : [dur · chiffres/dates](../tts_out/chatterbox-mtl-stream-hosted/en/Default__hard-num.wav) · [dur · codes](../tts_out/chatterbox-mtl-stream-hosted/en/Default__hard-code.wav) · [dur · marques](../tts_out/chatterbox-mtl-stream-hosted/en/Default__hard-brand.wav) · [dur · noms](../tts_out/chatterbox-mtl-stream-hosted/en/Default__hard-names.wav) · [neutre](../tts_out/chatterbox-mtl-stream-hosted/en/Default__neu.wav) · [émotion · colère](../tts_out/chatterbox-mtl-stream-hosted/en/Default__emo-angry.wav) · [émotion · enthousiaste](../tts_out/chatterbox-mtl-stream-hosted/en/Default__emo-enthus.wav) · [émotion · gaie](../tts_out/chatterbox-mtl-stream-hosted/en/Default__emo-happy.wav) · [émotion · triste](../tts_out/chatterbox-mtl-stream-hosted/en/Default__emo-sad.wav)
- _default_ : [dur · chiffres/dates](../tts_out/chatterbox-mtl-batch-hosted/en/default__hard-num.wav) · [dur · codes](../tts_out/chatterbox-mtl-batch-hosted/en/default__hard-code.wav) · [dur · marques](../tts_out/chatterbox-mtl-batch-hosted/en/default__hard-brand.wav) · [dur · noms](../tts_out/chatterbox-mtl-batch-hosted/en/default__hard-names.wav) · [neutre](../tts_out/chatterbox-mtl-batch-hosted/en/default__neu.wav) · [émotion · colère](../tts_out/chatterbox-mtl-batch-hosted/en/default__emo-angry.wav) · [émotion · enthousiaste](../tts_out/chatterbox-mtl-batch-hosted/en/default__emo-enthus.wav) · [émotion · gaie](../tts_out/chatterbox-mtl-batch-hosted/en/default__emo-happy.wav) · [émotion · triste](../tts_out/chatterbox-mtl-batch-hosted/en/default__emo-sad.wav)

**Espagnol** (2)  
- _Default_ : [neutre](../tts_out/chatterbox-mtl-stream-hosted/es/Default__neu.wav)
- _default_ : [neutre](../tts_out/chatterbox-mtl-batch-hosted/es/default__neu.wav)

**Français** (27)  
- _CloneInesFR_ : [dur · chiffres/dates](../tts_out/chatterbox-mtl-stream-hosted/fr/CloneInesFR__hard-num.wav) · [dur · codes](../tts_out/chatterbox-mtl-stream-hosted/fr/CloneInesFR__hard-code.wav) · [dur · marques](../tts_out/chatterbox-mtl-stream-hosted/fr/CloneInesFR__hard-brand.wav) · [dur · noms](../tts_out/chatterbox-mtl-stream-hosted/fr/CloneInesFR__hard-names.wav) · [neutre](../tts_out/chatterbox-mtl-stream-hosted/fr/CloneInesFR__neu.wav) · [émotion · colère](../tts_out/chatterbox-mtl-stream-hosted/fr/CloneInesFR__emo-angry.wav) · [émotion · enthousiaste](../tts_out/chatterbox-mtl-stream-hosted/fr/CloneInesFR__emo-enthus.wav) · [émotion · gaie](../tts_out/chatterbox-mtl-stream-hosted/fr/CloneInesFR__emo-happy.wav) · [émotion · triste](../tts_out/chatterbox-mtl-stream-hosted/fr/CloneInesFR__emo-sad.wav)
- _CloneLaurentFR_ : [dur · chiffres/dates](../tts_out/chatterbox-mtl-stream-hosted/fr/CloneLaurentFR__hard-num.wav) · [dur · codes](../tts_out/chatterbox-mtl-stream-hosted/fr/CloneLaurentFR__hard-code.wav) · [dur · marques](../tts_out/chatterbox-mtl-stream-hosted/fr/CloneLaurentFR__hard-brand.wav) · [dur · noms](../tts_out/chatterbox-mtl-stream-hosted/fr/CloneLaurentFR__hard-names.wav) · [neutre](../tts_out/chatterbox-mtl-stream-hosted/fr/CloneLaurentFR__neu.wav) · [émotion · colère](../tts_out/chatterbox-mtl-stream-hosted/fr/CloneLaurentFR__emo-angry.wav) · [émotion · enthousiaste](../tts_out/chatterbox-mtl-stream-hosted/fr/CloneLaurentFR__emo-enthus.wav) · [émotion · gaie](../tts_out/chatterbox-mtl-stream-hosted/fr/CloneLaurentFR__emo-happy.wav) · [émotion · triste](../tts_out/chatterbox-mtl-stream-hosted/fr/CloneLaurentFR__emo-sad.wav)
- _default_ : [dur · chiffres/dates](../tts_out/chatterbox-mtl-batch-hosted/fr/default__hard-num.wav) · [dur · codes](../tts_out/chatterbox-mtl-batch-hosted/fr/default__hard-code.wav) · [dur · marques](../tts_out/chatterbox-mtl-batch-hosted/fr/default__hard-brand.wav) · [dur · noms](../tts_out/chatterbox-mtl-batch-hosted/fr/default__hard-names.wav) · [neutre](../tts_out/chatterbox-mtl-batch-hosted/fr/default__neu.wav) · [émotion · colère](../tts_out/chatterbox-mtl-batch-hosted/fr/default__emo-angry.wav) · [émotion · enthousiaste](../tts_out/chatterbox-mtl-batch-hosted/fr/default__emo-enthus.wav) · [émotion · gaie](../tts_out/chatterbox-mtl-batch-hosted/fr/default__emo-happy.wav) · [émotion · triste](../tts_out/chatterbox-mtl-batch-hosted/fr/default__emo-sad.wav)

**Italien** (2)  
- _Default_ : [neutre](../tts_out/chatterbox-mtl-stream-hosted/it/Default__neu.wav)
- _default_ : [neutre](../tts_out/chatterbox-mtl-batch-hosted/it/default__neu.wav)

**Japonais** (2)  
- _Default_ : [neutre](../tts_out/chatterbox-mtl-stream-hosted/ja/Default__neu.wav)
- _default_ : [neutre](../tts_out/chatterbox-mtl-batch-hosted/ja/default__neu.wav)

**Néerlandais** (2)  
- _Default_ : [neutre](../tts_out/chatterbox-mtl-stream-hosted/nl/Default__neu.wav)
- _default_ : [neutre](../tts_out/chatterbox-mtl-batch-hosted/nl/default__neu.wav)

**Portugais** (2)  
- _Default_ : [neutre](../tts_out/chatterbox-mtl-stream-hosted/pt/Default__neu.wav)
- _default_ : [neutre](../tts_out/chatterbox-mtl-batch-hosted/pt/default__neu.wav)

**Turc** (2)  
- _Default_ : [neutre](../tts_out/chatterbox-mtl-stream-hosted/tr/Default__neu.wav)
- _default_ : [neutre](../tts_out/chatterbox-mtl-batch-hosted/tr/default__neu.wav)

**Chinois** (2)  
- _Default_ : [neutre](../tts_out/chatterbox-mtl-stream-hosted/zh/Default__neu.wav)
- _default_ : [neutre](../tts_out/chatterbox-mtl-batch-hosted/zh/default__neu.wav)


### Kokoro 82M  🖥️ self-host (voix REJETÉE)

⛔ **Voix rejetée (trop synthétique)** + FR = 1 seule voix. MAIS RTF excellent, <1 Go → **repli edge/embarqué** ultra-léger. Présenté pour mémoire.

**Fiche**

| Donnée | Valeur |
|---|---|
| Hébergement | **Self-host** ultra-léger |
| Streaming | batch |
| Modèle | hexgrad/Kokoro-82M |
| Licence | **Apache-2.0** |
| Params | **82 M** |
| Pic VRAM | <1 Go |
| Disque | <1 Go |
| Langues | fr/en/es/it/pt/ja/zh (FR=1 voix ff_siwis) |
| RGPD / ZDR | ✅ offline |
| Tarif | gratuit |
| Verdict voix | **rejetée (synthétique)** |
| Date bench | 2026-06-11 |


**🔊 Audios (voix · émotions · langues)**


**Anglais** (9)  
- _default_ : [dur · chiffres/dates](../tts_out/kokoro-82m-batch-hosted/en/default__hard-num.wav) · [dur · codes](../tts_out/kokoro-82m-batch-hosted/en/default__hard-code.wav) · [dur · marques](../tts_out/kokoro-82m-batch-hosted/en/default__hard-brand.wav) · [dur · noms](../tts_out/kokoro-82m-batch-hosted/en/default__hard-names.wav) · [neutre](../tts_out/kokoro-82m-batch-hosted/en/default__neu.wav) · [émotion · colère](../tts_out/kokoro-82m-batch-hosted/en/default__emo-angry.wav) · [émotion · enthousiaste](../tts_out/kokoro-82m-batch-hosted/en/default__emo-enthus.wav) · [émotion · gaie](../tts_out/kokoro-82m-batch-hosted/en/default__emo-happy.wav) · [émotion · triste](../tts_out/kokoro-82m-batch-hosted/en/default__emo-sad.wav)

**Espagnol** (1)  
- _default_ : [neutre](../tts_out/kokoro-82m-batch-hosted/es/default__neu.wav)

**Français** (9)  
- _default_ : [dur · chiffres/dates](../tts_out/kokoro-82m-batch-hosted/fr/default__hard-num.wav) · [dur · codes](../tts_out/kokoro-82m-batch-hosted/fr/default__hard-code.wav) · [dur · marques](../tts_out/kokoro-82m-batch-hosted/fr/default__hard-brand.wav) · [dur · noms](../tts_out/kokoro-82m-batch-hosted/fr/default__hard-names.wav) · [neutre](../tts_out/kokoro-82m-batch-hosted/fr/default__neu.wav) · [émotion · colère](../tts_out/kokoro-82m-batch-hosted/fr/default__emo-angry.wav) · [émotion · enthousiaste](../tts_out/kokoro-82m-batch-hosted/fr/default__emo-enthus.wav) · [émotion · gaie](../tts_out/kokoro-82m-batch-hosted/fr/default__emo-happy.wav) · [émotion · triste](../tts_out/kokoro-82m-batch-hosted/fr/default__emo-sad.wav)

**Italien** (1)  
- _default_ : [neutre](../tts_out/kokoro-82m-batch-hosted/it/default__neu.wav)

**Japonais** (1)  
- _default_ : [neutre](../tts_out/kokoro-82m-batch-hosted/ja/default__neu.wav)

**Portugais** (1)  
- _default_ : [neutre](../tts_out/kokoro-82m-batch-hosted/pt/default__neu.wav)

**Chinois** (1)  
- _default_ : [neutre](../tts_out/kokoro-82m-batch-hosted/zh/default__neu.wav)


### XTTS-v2 (Coqui)  🖥️ self-host — baseline non commerciale

⛔ **Licence CPML NON commerciale** → non déployable. Baseline qualité seulement, non benché.

**Fiche**

| Donnée | Valeur |
|---|---|
| Hébergement | Self-host |
| Streaming | batch |
| Modèle | coqui/XTTS-v2 |
| Licence | **CPML (NON commercial)** ⛔ |
| Params | ~0,5 B |
| Langues | fr/en/es/it/pt/ja/zh |
| RGPD / ZDR | offline |
| Tarif | — |
| Date bench | non benché |


**🔊 Audios (voix · émotions · langues)**

_(aucun audio)_



---

## ⚠️ Non testable sur GCP (L4) — TTS SELF-HOST à mesurer sur le **Mac mini M4 UNIQUEMENT**

Les latences TTS **self-host** (Kyutai, Qwen3-TTS, Chatterbox : **RTF, TTFA, pic VRAM**) sont mesurées sur **L4 CUDA en mode eager** (sans flash-attn ni torch.compile). **Ces chiffres NE sont PAS le verdict pour la cible de prod (Mac mini M4)** — ils servent juste à comparer les modèles entre eux. À refaire sur le Mac :

- **TTFA/RTF réels en MLX / Metal** : le portage Apple Silicon change tout (Qwen3-TTS à RTF 2,49 sur L4 peut être bien plus rapide une fois optimisé Mac ; idem Chatterbox/Kyutai). La vitesse self-host ne se tranche que là.
- **Cartesia Sonic On-Device** (Apple Silicon/MLX, private beta) : le candidat TTS « qualité ≈ Gemini » **offline** ne tourne **que** sur Mac — à demander + bencher (le self-host datacenter Cartesia est calibré H100/H200, pas Mac).
- **Co-résidence en mémoire unifiée** : STT + LLM + **TTS** ensemble dans la RAM unifiée du M4 (pic mémoire global, throughput partagé) — impossible à reproduire sur la VM L4.
- **Conso / thermique / Neural Engine** sur Apple Silicon.

Côté **cloud** (Cartesia, Chirp 3 HD, Gemini), les latences mesurées sont valables (ce sont des APIs) ; seul le **self-host** exige la cible Mac. → Bench **DÉCISIF = Mac mini M4** (cf. `docs/75-ops-scaleway-mac.md` / `docs/plans/bench-stt-tts.md`).
