> ## Documentation Index
> Fetch the complete documentation index at: https://docs.gradium.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Migrer depuis Fish Audio

> Transférez vos intégrations Fish Audio de synthèse vocale, de clonage de voix et d'ASR vers les endpoints Gradium, l'authentification x-api-key et les messages WebSocket JSON.

Pour passer de Fish Audio à Gradium, quelques modifications mécaniques
suffisent : pointer les requêtes vers les URL Gradium, envoyer
`x-api-key` au lieu d'un token Bearer, renommer quelques champs de
requête et remplacer les événements WebSocket MessagePack par des
messages JSON, ce qui supprime la dépendance à msgpack.

## Pourquoi choisir Gradium plutôt que Fish Audio

* **Catalogue de voix officiel.** Les
  [voix phares](/fr/guides/voices/flagship-voices) de Gradium sont des
  voix maison, conçues avec des experts de la voix et des chercheurs pour
  chaque langue prise en charge. La bibliothèque de Fish Audio est
  constituée de modèles mis en ligne par la communauté et appartenant à
  des comptes individuels.
* **Transcription en streaming.** Gradium transcrit l'audio en direct via
  WebSocket, avec VAD sémantique et délai adaptatif pour la gestion des
  tours de parole. Fish Audio ne propose que la transcription par lots.
* **Traduction Speech-to-Speech.** L'[endpoint S2S](/fr/guides/speech-to-speech) de Gradium traduit
  la parole en direct dans une autre langue sur un seul WebSocket : l'audio arrive
  en flux, l'audio traduit et la transcription repartent en flux. Fish
  Audio n'a pas d'équivalent.
* **Du JSON partout.** Tous les messages WebSocket de Gradium sont en
  JSON : les clients se passent de la dépendance MessagePack et
  fonctionnent directement avec `wscat`, les navigateurs et les
  bibliothèques standard.
* **Authentification compatible navigateur.** Des tokens de courte durée
  obtenus via `GET /api/api-keys/token` permettent aux clients navigateur
  et mobiles de se connecter sans embarquer de clé API ; voir
  [WebSockets dans le navigateur](/fr/guides/browser-websockets).
* **Contrôles pour la production.** Le
  [multiplexage](/fr/guides/multiplexing) avec `client_req_id`, les
  [dictionnaires de prononciation](/fr/api-reference/endpoint/list-pronunciations),
  la [réécriture de texte](/fr/guides/text-rewriting) et les formats
  téléphonie (`ulaw_8000`, `alaw_8000`) sont intégrés aux mêmes endpoints.

## Correspondance des endpoints

| Flux | Fish Audio | Gradium |
| - | - | - |
| TTS en un appel | `POST https://api.fish.audio/v1/tts` | `POST https://api.gradium.ai/api/post/speech/tts` |
| TTS en streaming | `wss://api.fish.audio/v1/tts/live` | `wss://api.gradium.ai/api/speech/tts` |
| Clonage de voix | `POST https://api.fish.audio/model` | `POST https://api.gradium.ai/api/voices/` |
| Liste des voix | `GET https://api.fish.audio/model` | `GET https://api.gradium.ai/api/voices/` |
| STT par lots | `POST https://api.fish.audio/v1/asr` | `POST https://api.gradium.ai/api/post/speech/asr` |
| STT en streaming | Non disponible | `wss://api.gradium.ai/api/speech/asr` |

## Correspondance de l'authentification

| Fish Audio | Gradium |
| - | - |
| `Authorization: Bearer $FISH_API_KEY` | `x-api-key: $GRADIUM_API_KEY` |
| En-tête `model` (`s1`, `s2-pro`, `s2.1-pro`) | Champ `model_name`, par défaut `default` |
| Clé API dans les clients navigateur | `?token=...` de courte durée ; voir [WebSockets dans le navigateur](/fr/guides/browser-websockets). |

`model_name` se place dans le corps de la requête ou dans le message
`setup` ; `default` pointe toujours vers le modèle recommandé du moment,
si bien que la plupart des intégrations n'ont jamais besoin de le définir.

## Catalogue de voix

Le [catalogue de voix phares](/fr/guides/voices/flagship-voices) de
Gradium couvre toutes les langues prises en charge, dont le français,
l'allemand, l'espagnol et le portugais, ainsi que des variantes
régionales comme le portugais brésilien et l'espagnol mexicain.

| Fish Audio | Gradium |
| - | - |
| Clones mis en ligne par la communauté, propriété de chaque utilisateur | Voix phares maison |
| Disponibilité dépendante du compte qui les a mises en ligne | Valeurs `voice_id` stables |
| Qualité variable selon l'audio de référence fourni | Enregistrements de qualité studio homogènes |
| Découverte par recherche, tags et popularité | Liste éditorialisée avec description, pays et genre |

Choisissez un `voice_id` de remplacement pour chaque langue dans la
[bibliothèque de voix](/fr/guides/voices/flagship-voices), ou clonez une
voix qui vous appartient sous forme de voix personnalisée privée (voir
[Migration du clonage de voix](#migration-du-clonage-de-voix)).

## TTS POST de Gradium

Avec `only_audio: true`, la réponse contient les octets audio bruts,
comme le `/v1/tts` de Fish Audio.

```bash Gradium theme={null}
curl -L -X POST https://api.gradium.ai/api/post/speech/tts \
  -H "x-api-key: $GRADIUM_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "text": "Hello from Gradium.",
    "voice_id": "YTpq7expH9539ERJ",
    "output_format": "wav",
    "only_audio": true
  }' \
  > output.wav
```

## Correspondance des champs TTS

| Champ Fish Audio | Champ Gradium |
| - | - |
| `text` | `text` |
| `reference_id` | `voice_id` |
| En-tête `model` | `model_name` |
| `format` + `sample_rate` | Chaîne `output_format` |
| `latency` (`low`, `balanced`, `normal`) | Inutile ; utilisez l'endpoint WebSocket pour une faible latence |
| `chunk_length` / `min_chunk_length` | Envoyez le texte par fragments via WebSocket ; placez `<flush>` aux coupures naturelles |
| `normalize` | `json_config.rewrite_rules` ; voir [Réécriture de texte](/fr/guides/text-rewriting) |
| `prosody.speed` | `json_config.padding_bonus` (négatif pour accélérer, positif pour ralentir) |
| `temperature` | `json_config.temp` |
| `top_p` / `repetition_penalty` | Pas d'équivalent direct ; ajustez `temp` |
| `references` (audio zero-shot en ligne) | Créez une voix une fois avec `POST /voices/`, puis réutilisez son `voice_id` |

`output_format` est une chaîne unique, au lieu de champs séparés pour le
format et la fréquence d'échantillonnage : `wav`, `pcm`, `opus`,
`ulaw_8000`, `alaw_8000`, ou des fréquences PCM explicites comme
`pcm_16000` et `pcm_44100`.

<Note>
  Gradium ne renvoie pas de MP3. Remplacez `format: "mp3"` par `wav` pour
  une sortie fichier ou par `opus` pour un streaming compressé.
</Note>

## Migration du TTS WebSocket

Le socket `/v1/tts/live` de Fish Audio utilise des événements
MessagePack. Le socket TTS de Gradium utilise des messages texte JSON.

```json Gradium messages theme={null}
{"type":"setup","voice_id":"YTpq7expH9539ERJ","model_name":"default","output_format":"pcm"}
{"type":"text","text":"Hello from Gradium."}
{"type":"end_of_stream"}
```

| Événement Fish Audio | Message Gradium |
| - | - |
| `start` avec un objet de configuration `request` | `setup` avec `voice_id`, `model_name`, `output_format` |
| `text` | `text` |
| `flush` | Balise `<flush>` dans un message `text` |
| `stop` | `end_of_stream` |
| `audio` (payload binaire) | `audio` (payload base64 dans du JSON) |
| `finish` avec `reason` | Message serveur `end_of_stream` |

Gradium répond par `ready` après `setup`, envoie des messages `audio` en
flux, puis termine par son propre `end_of_stream`. Pour plusieurs
requêtes logiques sur un même socket, ajoutez `client_req_id` à chaque
message et définissez `close_ws_on_eos: false` ; voir
[Multiplexage](/fr/guides/multiplexing).

## Migration du clonage de voix

Fish Audio clone une voix en créant un modèle à partir d'échantillons
mis en ligne. Gradium utilise un seul appel `POST /voices/` ; le `uid`
renvoyé sert de `voice_id` dans n'importe quelle requête TTS.

```bash Gradium theme={null}
curl -X POST https://api.gradium.ai/api/voices/ \
  -H "x-api-key: $GRADIUM_API_KEY" \
  -F "audio_file=@voice_sample.wav" \
  -F "name=My Custom Voice" \
  -F "language=en"
```

| Champ Fish Audio | Champ Gradium |
| - | - |
| `voices` (un ou plusieurs fichiers audio) | `audio_file` (un seul fichier ; environ 10 secondes de parole propre) |
| `texts` (transcriptions des échantillons) | Non requis |
| `title` | `name` |
| `train_mode` (`fast`) | Non requis ; l'extraction a lieu dès la mise en ligne |
| `visibility` | Non requis ; les voix sont privées et propres à votre compte |
| `type: "tts"` | Non requis |
| `enhance_audio_quality` | Non requis |
| `_id` renvoyé | `uid` renvoyé, utilisé comme `voice_id` |

Gérez vos clones avec `GET`, `PUT` et `DELETE` sur
`/voices/{voice_uid}` ; voir [Voix personnalisées](/fr/guides/voices/custom-voices).

## Migration de la transcription

Le `/v1/asr` de Fish Audio accepte des envois MessagePack ou multipart
et renvoie un seul objet JSON. L'endpoint POST de transcription de
Gradium prend les octets audio bruts comme corps de requête et renvoie
en flux des messages JSON séparés par des sauts de ligne.

```bash Gradium theme={null}
curl -X POST https://api.gradium.ai/api/post/speech/asr \
  --url-query 'json_config={"language":"en"}' \
  -H "x-api-key: $GRADIUM_API_KEY" \
  -H "Content-Type: audio/wav" \
  --data-binary @recording.wav
```

| Concept ASR Fish Audio | Équivalent STT Gradium |
| - | - |
| Corps de requête MessagePack ou multipart | Octets audio bruts avec `Content-Type: audio/wav`, `audio/pcm` ou `audio/ogg` |
| `language` | `json_config.language` (définissez-le toujours ; `"any"` pour la détection automatique) |
| `text` dans la réponse | Concaténez les messages `text` reçus en flux |
| `segments` avec heures de début et de fin | Horodatage des segments dans chaque message |
| `ignore_timestamps` | L'horodatage est toujours inclus dans les messages en flux |
| Pas d'option de streaming | `wss://api.gradium.ai/api/speech/asr` avec messages `step` de VAD sémantique |

Pour la transcription en direct, utilisez l'endpoint WebSocket ; il émet
des messages `step` contenant `inactivity_prob` pour la gestion des
tours de parole. Voir [Transcription (STT)](/fr/guides/speech-to-text).

## Liste de contrôle de l'adaptateur

* Remplacez les URL Fish Audio par les endpoints Gradium correspondants.
* Passez de l'authentification `Authorization: Bearer` à `x-api-key`, ou
  à un `?token=...` de courte durée pour les WebSockets dans le navigateur.
* Supprimez l'en-tête `model` ; ne définissez `model_name` que pour
  cibler un modèle précis.
* Renommez `reference_id` en `voice_id`, en choisissant des voix phares
  dans la [bibliothèque de voix](/fr/guides/voices/flagship-voices).
* Regroupez `format` et `sample_rate` en une seule chaîne `output_format` ;
  remplacez MP3 par `wav` ou `opus`.
* Remplacez les événements MessagePack (`start`, `text`, `stop`) par des
  messages JSON (`setup`, `text`, `end_of_stream`).
* Recréez les voix clonées avec `POST /voices/` et utilisez les valeurs
  `uid` renvoyées.
* Déplacez les réglages de prosodie et d'échantillonnage dans
  `json_config` ; voir [Réglages de la voix](/fr/guides/voice-settings).
* Pour la transcription par lots, envoyez les octets audio bruts et
  lisez les messages JSON reçus en flux.

## Étapes suivantes

<CardGroup cols={2}>
  <Card title="Guide TTS WebSocket de Gradium" icon="waveform-lines" href="/fr/guides/text-to-speech">
    Messages de setup en streaming, messages audio, flush et horodatages.
  </Card>

  <Card title="Voix personnalisées" icon="microphone" href="/fr/guides/voices/custom-voices">
    Créez, modifiez et gérez des voix clonées à partir d'un audio de
    référence.
  </Card>

  <Card title="Réglages de la voix" icon="sliders" href="/fr/guides/voice-settings">
    Vitesse, température et règles de réécriture via json\_config.
  </Card>

  <Card title="Transcription (STT)" icon="ear-listen" href="/fr/guides/speech-to-text">
    Transcription en streaming avec VAD sémantique et flush.
  </Card>
</CardGroup>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.