Tous les produits
Search
Centre de documentation

Alibaba Cloud Model Studio:Qwen-ASR-Realtime Java SDK - API reference

Dernière mise à jour :Sep 07, 2026

Utilisez le SDK DashScope pour Java afin d'appeler Qwen-ASR-Realtime.

Guide utilisateur : Pour une présentation du modèle, ses fonctionnalités et des exemples de code complets, consultez Reconnaissance vocale en temps réel - Qwen.

Prérequis

ImportantAlibaba Cloud Model Studio a publié des domaines spécifiques à chaque espace de travail pour les régions Chine (Pékin) et Singapour. 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 :

  • Chine (Pékin) : de dashscope.aliyuncs.com vers {WorkspaceId}.cn-beijing.maas.aliyuncs.com
  • Singapour : de dashscope-intl.aliyuncs.com vers {WorkspaceId}.ap-southeast-1.maas.aliyuncs.com

Remplacez {WorkspaceId} par votre ID d'espace de travail. Les domaines existants restent pleinement opérationnels.

Modes d'interaction

Qwen-ASR-Realtime propose deux modes pour déterminer le moment de traitement de l'audio :

Mode

enableTurnDetection

Fonctionnement

Mode VAD (par défaut)

true

Le serveur détecte les limites de la parole grâce à la détection d'activité vocale (VAD) et décide quand soumettre le tampon audio à la reconnaissance.

Mode manuel

false

Le client contrôle la soumission de l'audio en appelant commit(). Vous gardez ainsi la maîtrise totale de la segmentation.

Pour plus de détails sur chaque mode, reportez-vous aux sections Mode VAD et Mode manuel.

Paramètres de requête

Paramètres de connexion (OmniRealtimeParam)

Définissez ces paramètres à l'aide des méthodes chaînées de la classe OmniRealtimeParam.

Cliquez pour afficher l'exemple de code

OmniRealtimeParam param = OmniRealtimeParam.builder()
        .model("qwen3-asr-flash-realtime")
        // Endpoint for the Singapore region.
        // The following configuration is for the Singapore region. Replace "{WorkspaceId}" with your actual workspace ID. The configuration varies by region.
        .url("wss://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api-ws/v1/realtime")
        // The API keys for the Singapore and Beijing regions are different.
        // To obtain an API key, see https://www.alibabacloud.com/help/en/model-studio/get-api-key
        // If you have not configured an environment variable, replace the following line with .apikey("sk-xxx").
        .apikey(System.getenv("DASHSCOPE_API_KEY"))
        .build();

Paramètre

Type

Obligatoire

Description

model

String

Oui

Modèle à utiliser. Exemple : qwen3-asr-flash-realtime.

url

String

Oui

Endpoint du service. Chine (Pékin) : wss://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api-ws/v1/realtime. Singapour : wss://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api-ws/v1/realtime. Remplacez {WorkspaceId} par votre ID d'espace de travail. Remplacez {WorkspaceId} par votre ID d'espace de travail.

apikey

String

Non

Clé API.

Configuration de session (OmniRealtimeConfig)

Définissez ces paramètres via les méthodes chaînées de la classe OmniRealtimeConfig.

Cliquez pour afficher l'exemple de code

OmniRealtimeTranscriptionParam transcriptionParam = new OmniRealtimeTranscriptionParam();
transcriptionParam.setLanguage("zh");
transcriptionParam.setInputSampleRate(16000);
transcriptionParam.setInputAudioFormat("pcm");

OmniRealtimeConfig config = OmniRealtimeConfig.builder()
        .modalities(Collections.singletonList(OmniRealtimeModality.TEXT))
        .enableTurnDetection(true)
        .turnDetectionType("server_vad")
        .turnDetectionThreshold(0.0f)
        .turnDetectionSilenceDurationMs(400)
        .transcriptionConfig(transcriptionParam)
        .build();

Paramètre

Type

Obligatoire

Description

modalities

List<OmniRealtimeModality>

Oui

Modalité de sortie. Valeur fixe : [OmniRealtimeModality.TEXT].

enableTurnDetection

boolean

Non

Active le VAD côté serveur. Si cette option est désactivée, appelez commit() pour déclencher manuellement la reconnaissance. Valeur par défaut : true.

turnDetectionType

String

Non

Type de VAD. Valeur fixe : server_vad.

turnDetectionThreshold

float

Non

Seuil de sensibilité du VAD. Valeur recommandée : 0.0.

Valeur par défaut : 0,2. Plage valide : [-1, 1].

Des valeurs plus basses augmentent la sensibilité (risque de déclenchement sur le bruit ambiant). Des valeurs plus élevées réduisent la sensibilité et limitent les faux positifs dans les environnements bruyants.

turnDetectionSilenceDurationMs

int

Non

Durée de silence en millisecondes marquant la fin d'une énonciation. Valeur recommandée : 400.

Valeur par défaut : 800. Plage valide : [200, 6000].

Des durées plus courtes (ex. : 300 ms) accélèrent les réponses mais peuvent fractionner les pauses naturelles. Des durées plus longues (ex. : 1200 ms) gèrent mieux les pauses mais augmentent la latence.

transcriptionConfig

OmniRealtimeTranscriptionParam

Non

Paramètres de reconnaissance vocale. Consultez la section Paramètres de transcription.

Paramètres de transcription (OmniRealtimeTranscriptionParam)

Configurez ces paramètres au moyen des méthodes setter de la classe OmniRealtimeTranscriptionParam.

Cliquez pour afficher l'exemple de code

OmniRealtimeTranscriptionParam transcriptionParam = new OmniRealtimeTranscriptionParam();
transcriptionParam.setLanguage("zh");
transcriptionParam.setInputSampleRate(16000);
transcriptionParam.setInputAudioFormat("pcm");

Paramètre

Type

Obligatoire

Description

language

String

Non

Langue de la source audio. Pour la liste des langues prises en charge, voir Langues prises en charge.

inputSampleRate

int

Non

Taux d'échantillonnage audio en Hz. Valeurs valides : 16000, 8000.

Valeur par défaut : 16000.

La valeur 8000 entraîne un suréchantillonnage côté serveur jusqu'à 16 000 Hz, ce qui peut introduire une légère latence. À utiliser uniquement pour un audio natif à 8 000 Hz (ex. : téléphonie).

inputAudioFormat

String

Non

Format d'encodage audio. Valeurs valides : pcm, opus. Valeur par défaut : pcm.

corpusText

String

Non

Texte contextuel pour le biaisage contextuel. Fournissez du texte de fond, des vocabulaires d'entités ou des documents de référence afin d'améliorer la précision de la reconnaissance. Maximum : 10 000 tokens.

Interfaces clés

OmniRealtimeConversation

Importation : com.alibaba.dashscope.audio.omni.OmniRealtimeConversation

Cette classe gère le cycle de vie WebSocket : connexion au serveur, envoi de l'audio et clôture de la session.

Créer une conversation

OmniRealtimeConversation conversation =
        new OmniRealtimeConversation(param, callback);

Crée une nouvelle instance de conversation avec les paramètres de connexion et le gestionnaire de callback spécifiés.

Se connecter au serveur

conversation.connect();

Ouvre une connexion WebSocket. Le serveur répond par les événements session.created et session.updated.

Exceptions levées : NoApiKeyException, InterruptedException.

Configurer la session

conversation.updateSession(config);

Met à jour la configuration de la session une fois la connexion établie. Le serveur répond par un événement session.updated. En l'absence d'appel, le serveur applique les paramètres par défaut.

Envoyer des données audio

conversation.appendAudio(audioBase64);

Ajoute un segment audio encodé en Base64 au tampon audio côté serveur.

  • Mode VAD (enableTurnDetection=true) : Le serveur détecte les limites de la parole et décide du moment de traitement du tampon.
  • Mode manuel (enableTurnDetection=false) : L'audio s'accumule dans le tampon jusqu'à l'appel de commit() pour déclencher la reconnaissance. Chaque événement peut contenir jusqu'à 15 Mio de données audio.

Soumettre le tampon audio

conversation.commit();

Soumet l'audio mis en tampon pour reconnaissance. Le serveur répond par un événement input_audio_buffer.committed.

Cette méthode n'est disponible qu'en mode manuel ( enableTurnDetection=false ). Une erreur survient si le tampon audio est vide.

Terminer la session

conversation.endSession();  // synchronous
// or
conversation.endSessionAsync();  // asynchronous

Signale au serveur de finir le traitement de l'audio restant et de clore la session. Le serveur répond par un événement session.finished.

Moments d'appel recommandés :

  • Mode VAD : Après avoir terminé l'envoi de l'audio.
  • Mode manuel : Après avoir appelé commit().

Fermer la connexion

conversation.close();

Arrête la tâche et ferme immédiatement la connexion WebSocket.

Obtenir les ID de session et de réponse

String sessionId = conversation.getSessionId();
String responseId = conversation.getResponseId();
  • getSessionId() renvoie l'ID de session de la tâche en cours.
  • getResponseId() renvoie l'ID de la réponse serveur la plus récente.

OmniRealtimeCallback

Importation : com.alibaba.dashscope.audio.omni.OmniRealtimeCallback

Héritez de cette classe et implémentez les méthodes de callback pour traiter les événements serveur.

Méthode

Paramètres

Déclenchement

onOpen()

Aucun

La connexion WebSocket est établie.

onEvent(JsonObject message)

message : Un événement serveur au format JSON. Types d'événements courants : session.created, session.updated, input_audio_buffer.committed, conversation.item.input_audio_transcription.completed, session.finished.

Réception d'un événement serveur. Analysez le champ type pour identifier le type d'événement.

onClose(int code, String reason)

code : Code d'état. reason : Raison de la fermeture.

La connexion WebSocket est fermée.