Les événements client sont des messages JSON envoyés via une connexion WebSocket pour contrôler la session de l'API Qwen-TTS Realtime : configurez les paramètres vocaux, diffusez du texte pour la synthèse et signalez la fin de la session.
Pour obtenir un aperçu complet de l'API, consultez Synthèse vocale en temps réel - Qwen .
Résumé des événements
| Événement client | Réponse du serveur | Description |
|---|---|---|
session.update | session.updated | Définit la voix, le format audio, le mode d'interaction et d'autres paramètres de session |
input_text_buffer.append | -- | Ajoute du texte au tampon de synthèse |
input_text_buffer.commit | input_text_buffer.committed | Valide le texte mis en tampon pour déclencher la synthèse |
input_text_buffer.clear | input_text_buffer.cleared | Supprime tout le texte mis en tampon |
session.finish | -- | Met fin à la session ; le serveur vide l'audio restant et ferme la connexion |
session.update
Configure la session. Envoyez ce message en premier après l'établissement de la connexion WebSocket. Si vous l'omettez, tous les paramètres utilisent les valeurs par défaut. Le serveur confirme l'opération avec un événement session.updated.
Corps de la requête
{
"event_id": "event_123",
"type": "session.update",
"session": {
"voice": "Cherry",
"mode": "server_commit",
"language_type": "Chinese",
"response_format": "pcm",
"sample_rate": 24000
}
}
Paramètres
| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
event_id | string | Oui | Identifiant d'événement unique généré par le client (UUID recommandé). Doit être unique au sein de la session WebSocket. |
type | string | Oui | Définissez sur session.update. |
session | object | Non | Configuration de la session. Consultez les sous-sections suivantes. |
Propriétés de session
voice
Type : string | Obligatoire : Oui
La voix système utilisée pour la synthèse vocale. Consultez Voix prises en charge.
mode
Type : string | Obligatoire : Non | Par défaut : server_commit
Le mode d'interaction qui contrôle le moment où le texte mis en tampon est synthétisé.
| Valeur | Comportement |
|---|---|
server_commit | Le serveur décide quand synthétiser, en équilibrant latence et qualité. Recommandé pour la plupart des utilisations. |
commit | Déclenchez manuellement la synthèse en envoyant input_text_buffer.commit. Latence minimale, mais vous devez gérer l'intégrité des phrases. |
language_type
Type : string | Obligatoire : Non | Par défaut : Auto
La langue de l'audio synthétisé.
Auto-- Pour un texte de langue inconnue ou mixte. Le modèle adapte automatiquement la prononciation par segment, sans garantir la précision.- Pour un texte monolingue, spécifier la langue améliore considérablement la qualité. Valeurs prises en charge :
| Valeur | Valeur | Valeur |
|---|---|---|
Chinese | English | German |
Italian | Portuguese | Spanish |
Japanese | Korean | French |
Russian |
response_format
Type : string | Obligatoire : Non | Par défaut : pcm
Le format de sortie audio.
| Valeur | Notes |
|---|---|
pcm | Par défaut. |
wav | |
mp3 | |
opus | Prend en charge un débit binaire configurable via le paramètre bit_rate. |
sample_rate
Type : integer | Obligatoire : Non | Par défaut : 24000
La fréquence d'échantillonnage de la sortie audio, en Hz.
Valeurs prises en charge : 8000, 16000, 24000, 48000.
speech_rate
Type : float | Obligatoire : Non | Par défaut : 1,0 | Plage : 0,5–2,0
La vitesse de lecture. Les valeurs inférieures à 1,0 ralentissent l'audio ; les valeurs supérieures à 1,0 l'accélèrent.
volume
Type : integer | Obligatoire : Non | Par défaut : 50 | Plage : 0–100
Le volume audio.
pitch_rate
Type : float | Obligatoire : Non | Par défaut : 1,0 | Plage : 0,5–2,0
La hauteur tonale de l'audio synthétisé.
bit_rate
Type : integer | Obligatoire : Non | Par défaut : 128 | Plage : 6–510
Le débit binaire audio en kbps. Des valeurs plus élevées offrent une meilleure qualité mais génèrent des fichiers plus volumineux. S'applique uniquement lorsque response_format est défini sur opus.
input_text_buffer.append
Ajoute du texte au tampon de synthèse.
- En mode
server_commit, le texte est ajouté au tampon côté serveur. - En mode
commit, le texte est ajouté au tampon côté client.
Corps de la requête
{
"event_id": "event_B4o9RHSTWobB5OQdEHLTo",
"type": "input_text_buffer.append",
"text": "Hello, I am Qwen."
}
Paramètres
| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
event_id | string | Oui | Identifiant d'événement unique généré par le client (UUID recommandé). Doit être unique au sein de la session WebSocket. |
type | string | Oui | Définissez sur input_text_buffer.append. |
text | string | Oui | Le texte à synthétiser. |
input_text_buffer.commit
Valide le texte mis en tampon et crée un élément de message utilisateur. Le serveur répond avec un événement input_text_buffer.committed.
Renvoie une erreur si le tampon est vide.
Le comportement varie selon le mode :
- Mode
server_commit: Tout le texte mis en tampon est synthétisé immédiatement. Le serveur arrête la mise en cache et traite l'ensemble des données d'un coup. - Mode
commit: Crée un élément de message utilisateur à partir du texte mis en tampon.
Remarque : La validation du tampon déclenche uniquement la synthèse ; elle ne génère pas de réponse du modèle.
Corps de la requête
{
"event_id": "event_B4o9RHSTWobB5OQdEHLTo",
"type": "input_text_buffer.commit"
}
Paramètres
| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
event_id | string | Oui | Identifiant d'événement unique généré par le client (UUID recommandé). Doit être unique au sein de la session WebSocket. |
type | string | Oui | Définissez sur input_text_buffer.commit. |
input_text_buffer.clear
Efface le texte du tampon. Le serveur répond avec un événement input_text_buffer.cleared.
Corps de la requête
{
"event_id": "event_2728",
"type": "input_text_buffer.clear"
}
Paramètres
| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
event_id | string | Oui | Identifiant d'événement unique généré par le client (UUID recommandé). Doit être unique au sein de la session WebSocket. |
type | string | Oui | Définissez sur input_text_buffer.clear. |
session.finish
Signale qu'aucun autre texte ne sera envoyé. Le serveur renvoie l'audio restant et ferme la connexion.
Corps de la requête
{
"event_id": "event_2239",
"type": "session.finish"
}
Paramètres
| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
event_id | string | Oui | Identifiant d'événement unique généré par le client (UUID recommandé). Doit être unique au sein de la session WebSocket. |
type | string | Oui | Définissez sur session.finish. |