Découvrir les points de terminaison WebSocket, l'authentification, les flux d'interaction Realtime et Inference, ainsi que les événements spécifiques aux modèles.
Prérequis
- Activer le modèle ou l'application cible et confirmer ses régions prises en charge.
- Obtenir une clé API pour la région et l'espace de travail que vous utiliserez. Voir Authentification par jeton.
- Obtenir votre ID d'espace de travail si vous utilisez un domaine spécifique à l'espace de travail.
Pour la sélection du protocole et les modèles pris en charge, voir Aperçu de l'API Realtime.
En-têtes de requête
Définir Authorization dans la requête de handshake WebSocket. Utiliser les autres en-têtes comme décrit dans la référence des paramètres du modèle cible.
En-tête | Obligatoire | Description |
|---|---|---|
Authorization | Oui | Transmettre la clé API sous la forme |
user-agent | Non | Identifie le client. |
X-DashScope-WorkSpace | Spécifique au modèle | Spécifie un ID d'espace de travail. Consulter la référence des en-têtes spécifiques au modèle pour l'utilisation. |
X-DashScope-DataInspection | Spécifique au modèle | Configure l'inspection des données. Consulter la référence des en-têtes spécifiques au modèle pour les valeurs prises en charge et l'applicabilité. |
Points de terminaison
Utiliser wss:// et sélectionner le chemin d'API et l'emplacement du nom du modèle pour votre modèle cible. Le tableau ci-dessous liste les méthodes de connexion par modèle. Pour les modèles et régions pris en charge, consulter la documentation correspondante du modèle.
Famille de modèles | Chemin d'API | Emplacement du nom du modèle |
|---|---|---|
Qwen-Omni-Realtime | /api-ws/v1/realtime | Paramètre de requête URL |
Qwen-Audio-TTS/CosyVoice | /api-ws/v1/inference |
|
Qwen-TTS-Realtime | /api-ws/v1/realtime | Paramètre de requête URL |
Qwen-Audio-ASR/Fun-ASR/Paraformer | /api-ws/v1/inference |
|
Qwen-ASR-Realtime | /api-ws/v1/realtime | Paramètre de requête URL |
Qwen-Audio-Realtime | /api-ws/v1/realtime | Paramètre de requête URL |
Qwen-LiveTranslate-Realtime | /api-ws/v1/realtime | Paramètre de requête URL |
Domaines spécifiques à l'espace de travail :
Région | Domaine spécifique à l'espace de travail |
|---|---|
Chine (Pékin) | {WorkspaceId}.cn-beijing.maas.aliyuncs.com |
Singapour | {WorkspaceId}.ap-southeast-1.maas.aliyuncs.com |
Remplacer {WorkspaceId} par votre ID d'espace de travail. Exemples :
wss://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api-ws/v1/realtime?model=qwen3.8-omni-flash-realtime
wss://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api-ws/v1/inference
Qwen-TTS-Realtime prend également en charge les domaines publics dashscope.aliyuncs.com pour Pékin et dashscope-intl.aliyuncs.com pour Singapour, avec le même chemin /api-ws/v1/realtime. La clé API doit correspondre à la région.
Flux d'interaction courants
/api-ws/v1/realtime utilise un protocole basé sur les sessions, tandis que /api-ws/v1/inference utilise un protocole basé sur les tâches.
Protocole Realtime
Après la connexion, le client configure la session avec session.update et attend session.updated avant d'envoyer des entrées. Le modèle cible détermine comment valider l'entrée, déclencher une réponse et terminer la session.
- Client →
Realtime API: Handshake WebSocket avecAuthorizationetmodel. Realtime API→ Client :HTTP 101etsession.created.- Client →
Realtime API:session.update.Realtime API→ Client :session.updated. - Dans la boucle d'entrée/sortie, sélectionner la branche d'entrée : pour l'audio, Client →
Realtime API:input_audio_buffer.append; pour l'entrée texteQwen-TTS, Client →Realtime API:input_text_buffer.append. - Validation manuelle facultative : Client →
Realtime API:input_audio_buffer.commitouinput_text_buffer.commit, sélectionné selon le type d'entrée. - Pour les modèles nécessitant une réponse explicite, Client →
Realtime API:response.create. Realtime API→ Client : événements textuels /response.audio.delta.- Achèvement facultatif de la réponse, à l'exclusion des modèles ASR uniquement :
Realtime API→ Client :response.done. La boucle d'entrée/sortie peut continuer. - Pour les modèles prenant en charge un événement de fin, Client →
Realtime API:session.finish;Realtime API→ Client :session.finished. - Client →
Realtime API: Fermer la connexion WebSocket.
Étapes détaillées
- Se connecter : Spécifier le modèle dans le paramètre de requête
modelde l'URL et inclure la clé API dans les en-têtes de requête. Après un handshake réussi, le serveur envoiesession.created. - Configurer la session : Envoyer
session.updatepour configurer les formats audio pris en charge, les modalités de sortie, les voix ou les paramètres de détection de la parole, puis attendresession.updated. Consulter la référence des événements clients spécifiques au modèle pour les paramètres de session pris en charge. - Envoyer des entrées : Envoyer de l'audio encodé en Base64 avec
input_audio_buffer.append. Pour Qwen-TTS, envoyer du texte avecinput_text_buffer.append. Les modèles qui prennent en charge l'entrée d'image utilisentinput_image_buffer.append; suivre les exigences de synchronisation d'image et d'audio du modèle. - Valider et recevoir des résultats : Dans les modes automatiques, le serveur déclenche le traitement. Dans les modes manuels, envoyer
input_audio_buffer.commitouinput_text_buffer.commitselon le type d'entrée. La nécessité d'utiliser égalementresponse.createet les événements de résultat à gérer dépendent du modèle. Voir la comparaison ci-dessous. - Terminer la session : Pour les modèles qui prennent en charge un événement de fin, envoyer
session.finishet attendresession.finishedainsi que les résultats restants. Pour les autres modèles, fermer la connexion WebSocket après avoir reçu les résultats.response.donemarque la fin d'une réponse, et non celle de la connexion. Pour les modèles ASR uniquement, les événements de fin de transcription marquent la fin de la reconnaissance.
Protocole d'inférence
Le client envoie run-task et attend task-started avant de transmettre l'entrée. La reconnaissance vocale utilise des trames audio binaires ; la synthèse vocale envoie du texte avec continue-task. Lorsque l'entrée se termine, envoyer finish-task et attendre task-finished.
- Client →
Inference API: Handshake WebSocket avecAuthorization. Inference API→ Client :HTTP 101.- Client →
Inference API:run-taskavecpayload.modelettask_id.Inference API→ Client :task-started. - Dans la boucle d'entrée/sortie, la branche de reconnaissance vocale envoie des trames audio binaires du Client vers
Inference API.Inference APIretourneresult-generatedau Client. - Dans la branche de synthèse vocale, Client →
Inference API:continue-taskavec texte ettask_id.Inference API→ Client : trames audio binaires etresult-generatedsi fourni. - Lorsque la boucle d'entrée/sortie se termine, Client →
Inference API:finish-taskavec le mêmetask_id. Inference API→ Client : Résultats restants ettask-finished.- Client →
Inference API: Fermer ou réutiliser la connexion selon la prise en charge par le modèle.
Étapes détaillées
- Se connecter : Utiliser
/api-ws/v1/inferenceet inclure la clé API dans les en-têtes de requête. - Démarrer une tâche : Envoyer
run-task, en spécifiant le modèle danspayload.modelet les paramètres tels que le format d'entrée. Générer unheader.task_idunique et attendretask-started. - Envoyer des entrées et recevoir des résultats :
- Reconnaissance vocale : Envoyer des trames audio binaires et recevoir les résultats de reconnaissance via
result-generated. - Synthèse vocale : Envoyer du texte dans
payload.input.textdecontinue-tasket recevoir des trames audio binaires. Le modèle peut également retourner des informations telles que des horodatages viaresult-generated.
- Reconnaissance vocale : Envoyer des trames audio binaires et recevoir les résultats de reconnaissance via
- Terminer la tâche : Après avoir envoyé
finish-task, continuer à recevoir les résultats restants jusqu'à l'arrivée detask-finished. Tous les événementsrun-task,continue-tasketfinish-taskpour la même tâche doivent utiliser le mêmeheader.task_id. Ensuite, fermer la connexion ou la réutiliser si cela est pris en charge par le modèle.
Différences entre les modèles
Modèles Realtime
Le tableau ci-dessous résume les déclencheurs d'entrée et la fin de session. Pour tous les types de VAD pris en charge, les formats audio et les autres valeurs de paramètres, consulter les références d'événements spécifiques au modèle.
Modèle | Déclencheur d'entrée et de réponse | Terminaison |
|---|---|---|
Qwen3.8-Omni / Qwen3.5-Omni | Les modes VAD déclenchent automatiquement les réponses. En mode manuel, envoyer | Fermer la connexion après avoir reçu les résultats. |
Qwen-TTS-Realtime |
| session.finish → session.finished |
Qwen-ASR-Realtime | Le mode VAD traite automatiquement les entrées. En mode manuel, envoyer | session.finish → session.finished |
Qwen-Audio-Realtime | Les modes automatiques détectent les tours de parole côté serveur. En mode manuel, envoyer | Fermer la connexion après avoir reçu les résultats. |
Qwen3.8-LiveTranslate | Configurer les modalités de sortie avec | session.finish → session.finished |
Qwen3.5-LiveTranslate | Configurer la session avec | session.finish → session.finished |
Les événements de sortie principaux sont listés ci-dessous. Les événements retournés dépendent des modalités de sortie configurées.
Modèle | Événements de sortie principaux |
|---|---|
Qwen-Omni-Realtime |
|
Qwen-TTS-Realtime |
|
Qwen-ASR-Realtime |
|
Qwen-Audio-Realtime |
|
Qwen3.8-LiveTranslate |
|
Qwen3.5-LiveTranslate |
|
RemarqueLes noms des événements de traduction dépendent de la version du modèle : Qwen3.8-LiveTranslate utilise .delta, tandis que Qwen3.5-LiveTranslate utilise .text. Par exemple, les transcriptions audio traduites utilisent respectivement response.audio_transcript.delta et response.audio_transcript.text.
Modèles d'inférence
Qwen-Audio-TTS/CosyVoice utilise le flux de tâches run-task → task-started → continue-task → finish-task → task-finished. La reconnaissance vocale Qwen-Audio-ASR/Fun-ASR/Paraformer envoie des trames audio binaires après task-started. Les deux types signalent les erreurs de tâche via task-failed.
Guides d'intégration spécifiques aux modèles
Omni en temps réel
Synthèse vocale en temps réel
Qwen-Audio-TTS
CosyVoice
Qwen-TTS-Realtime
Sambert
Reconnaissance vocale en temps réel
Qwen-Audio-ASR-Message
Qwen-Audio-ASR-Streaming
Fun-ASR-Realtime
Qwen-ASR-Realtime
Paraformer
Conversation vocale en temps réel
Qwen-Audio-Realtime
Traduction audio et vidéo en temps réel
Qwen-Livetranslate-Realtime
Gestion des erreurs
- Échec du handshake : Utiliser le statut HTTP et le message d'erreur pour vérifier le point de terminaison, la clé API, l'espace de travail et les autorisations du modèle. Pour 401/403, vérifier d'abord l'authentification.
- Modèle indisponible ou non activé : Vérifier le nom du modèle, l'activation du service et la région.
- Erreurs Realtime : Gérer les événements
erroret lire leur type et leur message. Ajuster le type d'événement ou les paramètres dans la requête en fonction du message d'erreur. - Erreurs d'inférence : Un événement
task-failedindique que la tâche a échoué. Lireheader.error_codeetheader.error_messagepour connaître la cause.
Après avoir corrigé la configuration ou géré une interruption réseau, se reconnecter et configurer une nouvelle session ou démarrer une nouvelle tâche selon les exigences du protocole. Voir Codes d'erreur.