Qwen-ASR-Realtime reçoit des flux audio et transcrit la parole en temps réel via WebSocket. Ce service prend en charge deux modes d'interaction : Mode VAD et Mode manuel .
Guide d'utilisation : Pour une présentation générale des modèles et des conseils de sélection, consultez Speech-to-text. Pour obtenir des exemples de code, reportez-vous à Real-time speech recognition.
Limites de taux : Les appels de modèle sont soumis à des limites de taux. Lorsqu'une limite est dépassée, le serveur renvoie l'erreur Requests rate limit exceeded, please try again later. Réduisez votre taux de requêtes ou le niveau de concurrence, puis réessayez. Pour connaître les limites applicables à chaque modèle, consultez Rate limiting.
Endpoint du service
Utilisez l'URL WebSocket suivante. Le paramètre de requête model spécifie le modèle. Remplacez <model_name> par le nom du modèle :
Singapore
wss://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api-ws/v1/realtime?model=<model_name>
Remplacez {WorkspaceId} par votre Workspace ID réel.
China (Beijing)
wss://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api-ws/v1/realtime?model=<model_name>
Remplacez {WorkspaceId} par votre Workspace ID réel.
ImportantAlibaba Cloud Model Studio a publié des domaines spécifiques aux espaces de travail pour les régions China (Beijing) et Singapore. Ces nouveaux domaines dédiés offrent des performances supérieures et une stabilité accrue pour les requêtes d'inférence. Nous vous recommandons de migrer vers ces nouveaux domaines :
- China (Beijing) : passez de
dashscope.aliyuncs.comà{WorkspaceId}.cn-beijing.maas.aliyuncs.com - Singapore : passez de
dashscope-intl.aliyuncs.comà{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com
Remplacez {WorkspaceId} par votre Workspace ID réel. Les domaines existants restent pleinement fonctionnels.
ImportantUtilisez le schéma wss://. Configurez l'autorisation dans les en-têtes de requête (voir En-têtes de requête). Spécifiez le modèle au moyen du paramètre de requête model.
En-têtes de requête
Incluez les champs suivants dans les en-têtes de requête :
Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
Authorization | string | Oui | Jeton d'authentification au format |
user-agent | string | Non | Identifiant client permettant au serveur de suivre l'origine des requêtes. |
X-DashScope-WorkSpace | string | Non | L'workspace ID Alibaba Cloud Model Studio. |
X-DashScope-DataInspection | string | Non | Indique s'il faut activer l'inspection des données. Omettez cet en-tête sauf si cette inspection est nécessaire ; dans ce cas, définissez la valeur sur |
ImportantL'autorisation est vérifiée lors du handshake WebSocket. Si la clé API est invalide ou manquante, le handshake échoue avec une erreur HTTP 401 ou 403.
Flux d'interaction
Pour plus de détails sur les événements client et serveur, consultez Client events for Qwen-ASR-Realtime et Server events.
Qwen-ASR-Realtime prend en charge deux modes d'interaction :
- Mode VAD (par défaut) : Le serveur utilise la détection d'activité vocale (VAD) pour identifier automatiquement le début et la fin de chaque énoncé. Privilégiez ce mode pour les conversations en temps réel, la transcription de réunions et les scénarios similaires.
- Mode manuel : Le client contrôle les limites des énoncés. Ce mode est adapté lorsque le client peut déterminer explicitement ces limites, par exemple lors de l'envoi d'un message vocal dans une application de messagerie.
Mode VAD (par défaut)
Le serveur détecte automatiquement le début et la fin de chaque énoncé. Envoyez le flux audio en continu ; le serveur renvoie la transcription finale de chaque énoncé dès qu'il en détecte la fin. Ce mode convient aux conversations en temps réel, à la transcription de réunions et aux cas d'usage analogues.
Activation : Configurez le paramètre session.turn_detection dans l'événement client session.update.
-
Le client envoie des événements input_audio_buffer.append pour ajouter des données audio au tampon.
-
Le serveur renvoie un événement input_audio_buffer.speech_started lorsqu'une parole est détectée.
Remarque : Si le client envoie session.finish pour terminer la session avant la réception de cet événement, le serveur retourne immédiatement un événement session.finished. Le client doit alors fermer la connexion.
-
Le client continue d'envoyer des événements input_audio_buffer.append pour transmettre l'audio.
-
Une fois tout l'audio envoyé, le client émet un événement session.finish pour clore la session.
AvertissementEn mode VAD, le client doit envoyer un événement
session.finishavant de fermer la connexion. Si le client ferme la connexion WebSocket sans avoir préalablement envoyésession.finish, le serveur abandonne l'élément en cours de traitement et les événements tels queconversation.item.input_audio_transcription.completedne sont pas remis. Envoyez{"type":"session.finish"}avant d'appelerws.Close(), puis attendez l'événementsession.finishedavant de fermer la connexion. -
Le serveur retourne un événement input_audio_buffer.speech_stopped lorsqu'il détecte la fin de la parole.
-
Le serveur renvoie ensuite un événement input_audio_buffer.committed.
-
Le serveur émet un événement conversation.item.created.
-
Le serveur fournit un événement conversation.item.input_audio_transcription.text contenant les résultats partiels de transcription.
-
Le serveur retourne un événement conversation.item.input_audio_transcription.completed contenant le résultat final de la transcription.
-
Enfin, le serveur envoie un événement session.finished pour signaler la fin de la reconnaissance. Le client doit alors fermer la connexion.
Mode manuel
Dans ce mode, le client maîtrise les limites des énoncés. Après avoir transmis l'audio correspondant à un énoncé complet, le client envoie un événement input_audio_buffer.commit pour notifier le serveur. Cette approche est recommandée lorsque le client peut déterminer explicitement les bornes de l'énoncé, comme c'est le cas pour l'envoi d'un message vocal dans une application de messagerie.
Activation : Définissez session.turn_detection sur null dans l'événement client session.update.
- Le client transmet des événements input_audio_buffer.append pour alimenter le tampon audio.
- Le client envoie un événement input_audio_buffer.commit pour valider le tampon audio d'entrée. Cette validation crée un nouvel élément de message utilisateur dans la conversation.
- Le client envoie un événement session.finish pour mettre fin à la session.
- Le serveur répond par un événement input_audio_buffer.committed.
- Le serveur retourne des résultats partiels de transcription via un événement conversation.item.input_audio_transcription.text.
- Le serveur fournit le résultat final de transcription dans un événement conversation.item.input_audio_transcription.completed.
- Un événement session.finished signale la fin de la reconnaissance. Le client doit ensuite fermer la connexion.