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

# Options de flux WebSocket

> Options d'initialisation de connexion communes à tts_realtime et stt_realtime

Avec les API WebSocket temps réel (`tts_realtime` ou `stt_realtime`), deux
paramètres contrôlent la façon dont la connexion s'initialise. Ils
fonctionnent de manière identique pour le TTS et le STT.

Pour le cycle de vie complet du protocole, y compris les messages
WebSocket bruts, les tokens navigateur, le multiplexage et le comportement
en cas d'erreur, consultez
[Cycle de vie du WebSocket](/fr/guides/websocket-lifecycle).

## `send_setup_on_start`

Détermine si le message `setup` est envoyé automatiquement à l'entrée dans
le gestionnaire de contexte. Valeur par défaut : `True`.

Définissez-le sur `False` lorsque vous devez envoyer le `setup`
manuellement, par exemple avec le [multiplexage](/fr/guides/multiplexing),
où chaque requête a son propre `setup` avec un `client_req_id` unique.

```python theme={null}
# Setup sent automatically (default)
async with client.tts_realtime(voice_id="YTpq7expH9539ERJ", output_format="pcm") as stream:
    await stream.send_text("Hello")

# Setup sent manually
async with client.tts_realtime(send_setup_on_start=False) as stream:
    await stream.send_setup({"voice_id": "YTpq7expH9539ERJ", "output_format": "pcm"})
    await stream.send_text("Hello")
```

## `wait_for_ready_on_start`

Détermine si le client attend de manière bloquante le message `ready` du
serveur après l'envoi du `setup`. Valeur par défaut : `False`.

Avec `False`, le message `ready` est capturé de façon différée pendant la
boucle de réception normale. Cela réduit la latence de connexion, puisque
vous pouvez commencer à envoyer des données juste après le `setup`, sans
attendre un aller-retour.

Avec `True`, `stream.ready` est garanti d'être renseigné avant que vous ne
commenciez à envoyer des données, ce qui peut être utile si vous avez
besoin de métadonnées fournies par le serveur (comme la fréquence
d'échantillonnage) avant de continuer.

```python theme={null}
# Non-blocking (default), ready captured lazily during recv
async with client.tts_realtime(
    voice_id="YTpq7expH9539ERJ",
    output_format="pcm"
) as stream:
    # stream.ready is None here, start sending immediately
    await stream.send_text("Hello")
    await stream.send_eos()

    async for msg in stream:
        # stream.ready gets populated when the ready message arrives
        if msg["type"] == "audio":
            process_audio(msg["audio"])

# Blocking, wait for ready before sending
async with client.tts_realtime(
    voice_id="YTpq7expH9539ERJ",
    output_format="pcm",
    wait_for_ready_on_start=True
) as stream:
    # stream.ready is populated here
    print(f"Server ready: {stream.ready}")
    await stream.send_text("Hello")
```

Les deux paramètres fonctionnent de la même manière pour `stt_realtime` :

```python theme={null}
async with client.stt_realtime(
    model_name="default",
    input_format="pcm",
    json_config={"language": "en"},
    wait_for_ready_on_start=True
) as stream:
    print(f"Server ready: {stream.ready}")
    await stream.send_audio(audio_data)
```


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