> For the complete documentation index, see [llms.txt](https://docs.clore.ai/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.clore.ai/guides/guides_v2-fr/audio-et-voix/fish-speech.md).

# Fish Speech

Fish Speech est un système de synthèse vocale (TTS) multilingue de pointe avec des capacités de clonage de voix en zéro-shot. Avec plus de 15 000 étoiles sur GitHub, il prend en charge l'anglais, le chinois, le japonais, le coréen, le français, l'allemand, l'arabe, l'espagnol et plus encore — le tout à partir d'un seul modèle. En utilisant seulement 10 à 15 secondes d'audio de référence, Fish Speech peut cloner n'importe quelle voix avec une fidélité remarquable, ce qui le rend idéal pour la production de livres audio, le doublage, les assistants virtuels et la création de contenu à grande échelle.

Fish Speech utilise une architecture basée sur un transformeur avec un vocodeur VQGAN, atteignant des scores de naturalité proches de l'humain sur les benchmarks TTS standard. L'interface Web (Gradio) le rend accessible sans écrire une seule ligne de code, tandis que l'API REST permet une intégration transparente dans les pipelines de production.

{% hint style="success" %}
Tous les exemples peuvent être exécutés sur des serveurs GPU loués via [CLORE.AI Marketplace](https://clore.ai/marketplace).
{% endhint %}

***

## Exigences serveur

| Paramètre | Minimum                 | Recommandé              |
| --------- | ----------------------- | ----------------------- |
| GPU       | NVIDIA RTX 3080 (10 Go) | NVIDIA RTX 4090 (24 Go) |
| VRAM      | 8 Go                    | 16–24 Go                |
| RAM       | 16 Go                   | 32 Go                   |
| CPU       | 4 cœurs                 | 8+ cœurs                |
| Disque    | 20 Go                   | 40 Go                   |
| OS        | Ubuntu 20.04+           | Ubuntu 22.04            |
| CUDA      | 11.8+                   | 12.1+                   |
| Ports     | 22, 7860                | 22, 7860                |

{% hint style="info" %}
Fish Speech fonctionne efficacement sur des GPU milieu de gamme (RTX 3080/3090). Pour l'inférence par lots ou la prise en charge de plusieurs utilisateurs simultanés, un RTX 4090 ou un A100 est recommandé.
{% endhint %}

***

## Déploiement rapide sur CLORE.AI

La façon la plus rapide de faire fonctionner Fish Speech est via l'image Docker officielle directement depuis Docker Hub.

### 1. Trouvez un serveur adapté

Aller à [CLORE.AI Marketplace](https://clore.ai/marketplace) et filtrez par :

* **VRAM**: ≥ 8 Go
* **GPU**: RTX 3080, 3090, 4080, 4090, A100, H100
* **Disque**: ≥ 20 Go

### 2. Configurez votre déploiement

Dans le formulaire de commande CLORE.AI, définissez les éléments suivants :

**Image Docker :**

```
fishaudio/fish-speech:latest
```

**Mappages de ports :**

```
22   → Accès SSH
7860 → Interface Web Gradio
```

**Variables d’environnement :**

```
NVIDIA_VISIBLE_DEVICES=all
CUDA_VISIBLE_DEVICES=0
```

**Commande de démarrage (optionnelle — démarre automatiquement le WebUI) :**

```bash
python -m tools.webui --listen 0.0.0.0 --port 7860
```

### 3. Accédez à l'interface

Une fois déployé, ouvrez votre navigateur et rendez-vous à :

```
http://<votre-ip-serveur-clore>:7860
```

L'interface Web Gradio se chargera avec l'interface complète de Fish Speech prête à l'emploi.

***

## Configuration étape par étape

### Étape 1 : Connectez-vous en SSH à votre serveur

```bash
ssh root@<votre-ip-serveur-clore> -p <port-ssh>
```

### Étape 2 : Récupérer et exécuter le conteneur Docker

```bash
docker pull fishaudio/fish-speech:latest

docker run -d \
  --name fish-speech \
  --gpus all \
  -p 7860:7860 \
  -p 22:22 \
  -v /workspace/fish-speech:/workspace \
  -e NVIDIA_VISIBLE_DEVICES=all \
  fishaudio/fish-speech:latest \
  python -m tools.webui --listen 0.0.0.0 --port 7860
```

### Étape 3 : Vérifier l'accès au GPU

```bash
docker exec fish-speech nvidia-smi
```

Vous devriez voir votre GPU répertorié avec la VRAM disponible.

### Étape 4 : Vérifier le téléchargement du modèle

Fish Speech télécharge automatiquement les poids du modèle lors de la première exécution (\~3–5 Go). Surveillez la progression :

```bash
docker logs -f fish-speech
```

Attendez jusqu'à ce que vous voyiez :

```
En cours d'exécution sur l'URL locale :  http://0.0.0.0:7860
```

### Étape 5 : Accéder au WebUI

Naviguez vers `http://<ip-serveur>:7860` dans votre navigateur.

### Étape 6 : (Optionnel) Activer le serveur API

```bash
docker exec -d fish-speech \
  python -m tools.api_server --listen 0.0.0.0 --port 8080
```

***

## Exemples d’utilisation

### Exemple 1 : Synthèse vocale basique via le WebUI

1. Ouvrez le WebUI à `http://<ip-serveur>:7860`
2. Saisissez le texte dans le **"Texte"** champ :

   ```
   Bienvenue sur Clore.ai, la place de marché cloud GPU pour les charges de travail IA.
   ```
3. Sélectionnez la langue : **Anglais**
4. Cliquez **"Générer"**
5. Téléchargez le `.wav` fichier

***

### Exemple 2 : Clonage de voix Zero-Shot

Clonez n'importe quelle voix en utilisant seulement 10–15 secondes d'audio de référence :

1. Dans le WebUI, naviguez vers le **"Clonage de voix"** onglet
2. Téléchargez votre fichier audio de référence (`.wav` ou `.mp3`, 10–30 secondes)
3. Saisissez la transcription de l'audio de référence (optionnel mais améliore la qualité)
4. Saisissez le texte cible à synthétiser
5. Cliquez **"Cloner & Générer"**

Le modèle analysera les caractéristiques de la voix et synthétisera la parole dans cette voix.

***

### Exemple 3 : TTS via l'API (Python)

```python
import requests
import base64

# Point de terminaison de l'API Fish Speech
API_URL = "http://<votre-ip-serveur-clore> :8080/v1/tts"

payload = {
    "text": "Bonjour, ceci est un test de Fish Speech fonctionnant sur l'infrastructure GPU de Clore.ai.",
    "reference_id": None,  # Utiliser la voix par défaut
    "format": "wav",
    "streaming": False
}

response = requests.post(API_URL, json=payload)

if response.status_code == 200 :
    with open("output.wav", "wb") as f:
        f.write(response.content)
    print("Audio enregistré dans output.wav")
else:
    print(f"Erreur : {response.status_code} - {response.text}")
```

***

### Exemple 4 : TTS multilingue

```python
import requests

API_URL = "http://<votre-ip-serveur-clore> :8080/v1/tts"

texts = {
    "en": "Clore.ai provides affordable GPU cloud computing for AI researchers.",
    "zh": "Clore.ai 为 AI 研究人员提供经济实惠的 GPU 云计算服务。",
    "ja": "Clore.aiはAI研究者向けの手頃なGPUクラウドコンピューティングを提供します。",
    "ko": "Clore.ai는 AI 연구자들을 위한 저렴한 GPU 클라우드 컴퓨ーティング을 제공합니다.",
    "fr": "Clore.ai fournit un calcul GPU cloud abordable pour les chercheurs en IA.",
}

for lang, text in texts.items():
    payload = {"text": text, "format": "wav"}
    response = requests.post(API_URL, json=payload)
    if response.status_code == 200 :
        filename = f"output_{lang}.wav"
        with open(filename, "wb") as f:
            f.write(response.content)
        print(f"Enregistré {filename}")
```

***

### Exemple 5 : Traitement par lot de fichiers audio

```python
import requests
import os
from pathlib import Path

API_URL = "http://<votre-ip-serveur-clore> :8080/v1/tts"
OUTPUT_DIR = Path("./tts_outputs")
OUTPUT_DIR.mkdir(exist_ok=True)

# Lot de textes à convertir
texts = [
    "Chapitre un : Le début d'une nouvelle ère dans l'intelligence artificielle.",
    "Chapitre deux : Comment le calcul GPU a transformé l'apprentissage automatique.",
    "Chapitre trois : L'essor des technologies de synthèse vocale.",
    "Chapitre quatre : Construire l'avenir avec l'infrastructure Clore.ai.",
    "Chapitre cinq : Conclusion et prochaines étapes.",
]

for i, text in enumerate(texts):
    payload = {
        "text": text,
        "format": "wav",
        "streaming": False
    }
    response = requests.post(API_URL, json=payload, timeout=60)
    if response.status_code == 200 :
        output_path = OUTPUT_DIR / f"chapter_{i+1:02d}.wav"
        with open(output_path, "wb") as f:
            f.write(response.content)
        print(f"✓ Généré : {output_path}")
    else:
        print(f"✗ Échec du chapitre {i+1} : {response.status_code}")

print(f"\nTous les fichiers enregistrés dans {OUTPUT_DIR}")
```

***

## Configuration

### Docker Compose (Configuration de production)

```yaml
version: '3.8'

services:
  fish-speech:
    image: fishaudio/fish-speech:latest
    container_name : fish-speech
    runtime: nvidia
    environment:
      - NVIDIA_VISIBLE_DEVICES=all
      - CUDA_VISIBLE_DEVICES=0
    ports:
      - "7860:7860"
      - "8080:8080"
    volumes:
      - ./models:/workspace/models
      - ./outputs:/workspace/outputs
      - ./references:/workspace/references
    command: >
      bash -c "python -m tools.webui --listen 0.0.0.0 --port 7860 &
               python -m tools.api_server --listen 0.0.0.0 --port 8080 &
               wait"
    restart: unless-stopped
    deploy:
      resources:
        reservations:
          devices:
            - driver: nvidia
              count: 1
              capabilities: [gpu]
```

### Options de configuration clés

| Option             | Par défaut | Description                                            |
| ------------------ | ---------- | ------------------------------------------------------ |
| `--listen`         | `0.0.0.0`  | Interface à laquelle lier le serveur                   |
| `--port`           | `7860`     | Port pour le WebUI Gradio                              |
| `--compile`        | `false`    | Activer torch.compile pour une inférence plus rapide   |
| `--device`         | `cuda`     | Périphérique à utiliser (`cuda`, `cpu`, `mps`)         |
| `--half`           | `true`     | Utiliser la demi-précision FP16 (économise de la VRAM) |
| `--num_samples`    | `1`        | Nombre d'échantillons audio à générer                  |
| `--max_new_tokens` | `1024`     | Nombre maximum de nouveaux tokens pour la génération   |

### Variantes du modèle

| Modèle                | Taille   | Langues   | Remarques               |
| --------------------- | -------- | --------- | ----------------------- |
| `fish-speech-1.4`     | \~3 Go   | 8 langues | Dernière version stable |
| `fish-speech-1.2-sft` | \~2,5 Go | 8 langues | Variante fine-tunée     |
| `fish-speech-1.2`     | \~2,5 Go | 8 langues | Modèle de base          |

***

## Conseils de performance

### 1. Activer torch.compile pour une inférence plus rapide

```bash
# Ajouter le drapeau --compile au démarrage
python -m tools.webui --listen 0.0.0.0 --port 7860 --compile
```

La première exécution sera plus lente (la compilation prend 2–5 minutes), mais les inférences suivantes seront 20–40% plus rapides.

### 2. Utiliser la demi-précision (FP16)

FP16 réduit l'utilisation de la VRAM d'environ 50% avec une perte de qualité minimale :

```bash
python -m tools.webui --listen 0.0.0.0 --port 7860 --half
```

### 3. Précharger les voix de référence

Stockez les voix de référence fréquemment utilisées dans le répertoire de références du conteneur pour éviter le retraitement :

```bash
# Copier l'audio de référence dans le conteneur
docker cp my_voice.wav fish-speech:/workspace/references/my_voice.wav
```

### 4. Optimisation de la mémoire GPU

```bash
# Définir la fraction de mémoire CUDA optimale
export PYTORCH_CUDA_ALLOC_CONF=max_split_size_mb:512

# Vider le cache GPU entre de grands lots
docker exec fish-speech python -c "import torch; torch.cuda.empty_cache()"
```

### 5. Ajustement de la taille de lot

Pour les requêtes API par lot, tailles de lots optimales :

* **RTX 3080 (10 Go)**: batch\_size = 1–2
* **RTX 3090/4090 (24 Go)**: batch\_size = 4–8
* **A100 (40/80 Go)**: batch\_size = 16–32

***

## Dépannage

### Problème : le conteneur ne démarre pas — CUDA introuvable

```bash
# Vérifier le pilote NVIDIA à l'intérieur du conteneur
docker exec fish-speech nvidia-smi

# Si cela échoue, vérifiez le pilote de l'hôte
nvidia-smi

# Relancer avec des indicateurs GPU explicites
docker run --gpus all --rm fishaudio/fish-speech:latest nvidia-smi
```

### Problème : Erreur Out of Memory (OOM)

```bash
# Vérifier l'utilisation de la VRAM
docker exec fish-speech nvidia-smi

# Utiliser FP16 pour réduire de moitié l'utilisation de la VRAM
# Redémarrer le conteneur avec le drapeau --half
docker stop fish-speech
docker run -d --name fish-speech --gpus all -p 7860:7860 \
  fishaudio/fish-speech:latest \
  python -m tools.webui --listen 0.0.0.0 --port 7860 --half
```

### Problème : Port 7860 inaccessible

```bash
# Vérifier que le conteneur fonctionne
docker ps | grep fish-speech

# Vérifier la liaison de port
docker port fish-speech

# Vérifier le pare-feu (sur le serveur Clore)
# S'assurer que le port 7860 est mappé dans votre configuration de commande CLORE.AI
```

### Problème : Échec du téléchargement du modèle / téléchargement lent

```bash
# Vérifier la connectivité Internet depuis le conteneur
docker exec fish-speech curl -I https://huggingface.co

# Pré-télécharger manuellement les modèles
docker exec fish-speech python -c "
from huggingface_hub import snapshot_download
snapshot_download('fishaudio/fish-speech-1.4')
"
```

### Problème : La qualité audio est médiocre

* Assurez-vous que l'audio de référence est propre (pas de bruit de fond, fréquence d'échantillonnage ≥ 16 kHz)
* Conservez l'audio de référence entre 10 et 30 secondes
* Fournissez la transcription de l'audio de référence pour un meilleur alignement
* Essayez d'augmenter `--num_samples` pour générer plusieurs options et choisir la meilleure

### Problème : Le WebUI se charge mais la génération bloque

```bash
# Vérifier l'utilisation du GPU pendant la génération
docker exec fish-speech watch -n1 nvidia-smi

# Vérifier les logs pour des erreurs
docker logs fish-speech --tail 50
```

***

## Liens

* **GitHub**: <https://github.com/fishaudio/fish-speech>
* **Docker Hub**: <https://hub.docker.com/r/fishaudio/fish-speech>
* **Documentation officielle**: <https://speech.fish.audio>
* **Modèles Hugging Face**: <https://huggingface.co/fishaudio/fish-speech-1.4>
* **CLORE.AI Marketplace**: <https://clore.ai/marketplace>
* **Communauté Discord**: <https://discord.gg/Es5qTB9BcN>

***

## Recommandations GPU Clore.ai

| Cas d’utilisation      | GPU recommandé  | Coût estimé sur Clore.ai |
| ---------------------- | --------------- | ------------------------ |
| Développement/Test     | RTX 3090 (24GB) | \~$0.12/gpu/hr           |
| TTS en production      | RTX 4090 (24GB) | \~$0.70/gpu/hr           |
| Inférence à haut débit | A100 80GB       | \~$1.20/gpu/hr           |

> 💡 Tous les exemples de ce guide peuvent être déployés sur [Clore.ai](https://clore.ai/marketplace) serveurs GPU. Parcourez les GPU disponibles et louez à l’heure — sans engagement, avec accès root complet.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## 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/fish-speech.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.
