> 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

Exécutez la synthèse vocale multilingue Fish Speech et le clonage vocal zero-shot sur les GPU Clore.ai

Fish Speech est un système de synthèse vocale multilingue de pointe (TTS) doté de capacités de clonage vocal zero-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 bien plus encore — le tout à partir d’un seul modèle. À l’aide de 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 des transformers avec un vocodeur VQGAN, atteignant des scores de naturel proches de ceux de l’humain sur les benchmarks TTS standard. La WebUI (Gradio) le rend accessible sans écrire une seule ligne de code, tandis que l’API REST permet une intégration fluide dans les pipelines de production.

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

***

## Exigences du serveur

| Paramètre              | Minimum                 | Recommandé              |
| ---------------------- | ----------------------- | ----------------------- |
| GPU                    | NVIDIA RTX 3080 (10 GB) | NVIDIA RTX 4090 (24 GB) |
| VRAM                   | 8 Go                    | 16–24 Go                |
| RAM                    | 16 Go                   | 32 Go                   |
| CPU                    | 4 cœurs                 | 8 cœurs ou plus         |
| Disque                 | 20 Go                   | 40 Go                   |
| Système d'exploitation | 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 de milieu de gamme (RTX 3080/3090). Pour l’inférence par lot ou pour servir plusieurs utilisateurs simultanés, une RTX 4090 ou une A100 est recommandée.
{% endhint %}

***

## Déploiement rapide sur CLORE.AI

Le moyen le plus rapide de faire fonctionner Fish Speech est d’utiliser directement l’image Docker officielle depuis Docker Hub.

### 1. Trouvez un serveur adapté

Accédez à [la place de marché CLORE.AI](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 ce qui suit :

**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 (facultatif — lance automatiquement la WebUI) :**

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

### 3. Accéder à l’interface

Une fois déployé, ouvrez votre navigateur et accédez à :

```
http://<your-clore-server-ip>:7860
```

L’interface Web Gradio se chargera avec l’interface complète de Fish Speech, prête à être utilisée.

***

## Configuration étape par étape

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

```bash
ssh root@<your-clore-server-ip> -p <ssh-port>
```

### É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 listé 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 au premier lancement (\~3 à 5 Go). Surveillez la progression :

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

Attendez de voir :

```
Exécution sur l’URL locale :  http://0.0.0.0:7860
```

### Étape 5 : Accéder à la WebUI

Accédez à `http://<server-ip>:7860` dans votre navigateur.

### Étape 6 : (Facultatif) 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 de base via la WebUI

1. Ouvrez la WebUI à `http://<server-ip>:7860`
2. Entrez du texte dans le **"Texte"** champ :

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

***

### Exemple 2 : Clonage vocal zero-shot

Clonez n’importe quelle voix à l’aide de seulement 10 à 15 secondes d’audio de référence :

1. Dans la WebUI, accédez au **"Clonage vocal"** onglet
2. Téléversez votre fichier audio de référence (`.wav` ou `.mp3`, 10 à 30 secondes)
3. Saisissez la transcription de l’audio de référence (facultatif mais améliore la qualité)
4. Saisissez le texte cible à synthétiser
5. Cliquez sur **"Cloner et générer"**

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

***

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

```python
import requests
import base64

# Point de terminaison de l’API Fish Speech
API_URL = "http://<your-clore-server-ip>:8080/v1/tts"

payload = {
    "text": "Bonjour, ceci est un test de Fish Speech exécuté 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://<your-clore-server-ip>:8080/v1/tts"

texts = {
    "en": "Clore.ai fournit un calcul cloud GPU abordable pour les chercheurs en IA.",
    "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://<your-clore-server-ip>: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 de 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 ont été 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 sur laquelle lier le serveur               |
| `--port`           | `7860`     | Port de la 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 précision demi FP16 (économise la VRAM)  |
| `--num_samples`    | `1`        | Nombre d’échantillons audio à générer                |
| `--max_new_tokens` | `1024`     | Nombre maximal de nouveaux jetons à générer          |

### Variantes de 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 affiné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
# Ajoutez l’option --compile au démarrage
python -m tools.webui --listen 0.0.0.0 --port 7860 --compile
```

Le premier lancement sera plus lent (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 un 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 optimale de mémoire CUDA
export PYTORCH_CUDA_ALLOC_CONF=max_split_size_mb:512

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

### 5. Ajustement de la taille des lots

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

* **RTX 3080 (10 GB)**: 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 dans le conteneur
docker exec fish-speech nvidia-smi

# En cas d’échec, vérifier 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 de mémoire insuffisante (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 l’option --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 : le port 7860 n’est pas accessible

```bash
# Vérifier que le conteneur est en cours d'exécution
docker ps | grep fish-speech

# Vérifier l’association du port
docker port fish-speech

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

### Problème : l’é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 les modèles manuellement
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 de 16 kHz ou plus)
* 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 : la WebUI se charge mais la génération se bloque

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

# Vérifier les journaux à la recherche d’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>
* **la place de marché CLORE.AI**: <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 (24 Go) | 0,07–0,21 $/gpu/h                         |
| TTS de production      | RTX 4090 (24 Go) | 0,14–0,42 $/gpu/h                         |
| Inférence à haut débit | A100 80 Go       | [bare metal](https://clore.ai/bare-metal) |

> 💡 Tous les exemples de ce guide peuvent être déployés sur [Clore.ai](https://clore.ai/marketplace) des serveurs GPU. Parcourez les GPU disponibles et louez à l'heure — sans engagement, 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, and the optional `goal` query parameter:

```
GET https://docs.clore.ai/guides/guides_v2-fr/audio-et-voix/fish-speech.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
