Tous les produits
Search
Centre de documentation

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

Dernière mise à jour :Sep 07, 2026

Diffusez des flux audio vers Qwen-ASR-Realtime via WebSocket et obtenez des résultats de transcription en temps réel grâce au SDK Python DashScope.

Pour une vue d'ensemble des modèles pris en charge, des fonctionnalités disponibles et des exemples de code complets, consultez la rubrique Reconnaissance vocale en temps réel.

Prérequis

Avant de commencer, assurez-vous de disposer des éléments suivants :

ImportantAlibaba Cloud Model Studio a publié des domaines spécifiques aux espaces 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) : passez de dashscope.aliyuncs.com à {WorkspaceId}.cn-beijing.maas.aliyuncs.com
  • Singapour : passez de dashscope-intl.aliyuncs.com à {WorkspaceId}.ap-southeast-1.maas.aliyuncs.com

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

Paramètres de requête

Constructeur OmniRealtimeConversation

Créez une instance OmniRealtimeConversation à l'aide des paramètres suivants.

Cliquez pour afficher l'exemple de code

from dashscope.audio.qwen_omni import OmniRealtimeConversation, OmniRealtimeCallback

class MyCallback(OmniRealtimeCallback):
    """Callback for real-time recognition"""
    def __init__(self, conversation):
        self.conversation = conversation
        self.handlers = {
            'session.created': self._handle_session_created,
            'conversation.item.input_audio_transcription.completed': self._handle_final_text,
            'conversation.item.input_audio_transcription.text': self._handle_stash_text,
            'input_audio_buffer.speech_started': lambda r: print('======Speech Start======'),
            'input_audio_buffer.speech_stopped': lambda r: print('======Speech Stop======')
        }

    def on_open(self):
        print('Connection opened')

    def on_close(self, code, msg):
        print(f'Connection closed, code: {code}, msg: {msg}')

    def on_event(self, response):
        try:
            handler = self.handlers.get(response['type'])
            if handler:
                handler(response)
        except Exception as e:
            print(f'[Error] {e}')

    def _handle_session_created(self, response):
        print(f"Start session: {response['session']['id']}")

    def _handle_final_text(self, response):
        print(f"Final recognized text: {response['transcript']}")

    def _handle_stash_text(self, response):
        print(f"Got stash result: {response['stash']}")

conversation = OmniRealtimeConversation(
        model='qwen3-asr-flash-realtime',
        # The following URL is for the Chinese mainland. For regions outside
        # the Chinese mainland, use
        # wss://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api-ws/v1/realtime instead.
        url='wss://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api-ws/v1/realtime',
        callback=MyCallback(conversation=None)  # Temporarily pass None and inject it later.
    )
# Inject self into the callback.
conversation.callback.conversation = conversation
ParamètreTypeObligatoireDescription
modelstrOuiModèle à utiliser.
callbackOmniRealtimeCallbackOuiObjet de rappel chargé de gérer les événements côté serveur.
urlstrOuiEndpoint WebSocket. 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 véritable ID d'espace de travail.

Configuration de la session

Une fois connecté, appelez update_session pour définir les paramètres de session.

Cliquez pour afficher l'exemple de code

from dashscope.audio.qwen_omni import TranscriptionParams, MultiModality

transcription_params = TranscriptionParams(
    language='zh',
    sample_rate=16000,
    input_audio_format="pcm"
)

conversation.update_session(
    output_modalities=[MultiModality.TEXT],
    enable_turn_detection=True,
    turn_detection_type="server_vad",
    turn_detection_threshold=0.0,
    turn_detection_silence_duration_ms=400,
    enable_input_audio_transcription=True,
    transcription_params=transcription_params
)
ParamètreTypeObligatoireDescription
output_modalitiesList[MultiModality]OuiModalité de sortie. Valeur fixe : [MultiModality.TEXT].
enable_turn_detectionboolNonActive la détection d'activité vocale (VAD) côté serveur. Valeur par défaut : True. Si défini sur False, appelez manuellement commit() pour déclencher la reconnaissance.
turn_detection_typestrNonType de VAD côté serveur. Valeur fixe : server_vad.
turn_detection_thresholdfloatNonSeuil de sensibilité du VAD. Valeur par défaut : 0.2. Recommandé : 0.0. 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 les faux positifs dans les environnements bruyants.
turn_detection_silence_duration_msintNonDurée de silence (ms) marquant la fin d'une phrase. Valeur par défaut : 800. Recommandé : 400. Plage valide : [200, 6000]. Une valeur faible (ex. : 300 ms) accélère la réponse mais peut scinder les pauses naturelles. Une valeur élevée (ex. : 1200 ms) gère mieux les pauses dans les phrases longues, mais augmente la latence.
transcription_paramsTranscriptionParamsNonParamètres de reconnaissance vocale. Consultez TranscriptionParams.

TranscriptionParams

Définissez les paramètres de reconnaissance vocale via le constructeur TranscriptionParams.

Cliquez pour afficher l'exemple de code

transcription_params = TranscriptionParams(
    language='zh',
    sample_rate=16000,
    input_audio_format="pcm"
)
ParamètreTypeObligatoireDescription
languagestrNonLangue source de l'audio. Valeurs prises en charge : zh (chinois : mandarin, sichuanais, minnan, wu), yue (cantonais), en (anglais), ja (japonais), ko (coréen), de (allemand), fr (français), es (espagnol), pt (portugais), it (italien), ru (russe), ar (arabe), hi (hindi), id (indonésien), th (thaï), tr (turc), uk (ukrainien), vi (vietnamien), cs (tchèque), da (danois), fi (finnois), fil (filipino), is (islandais), ms (malais), no (norvégien), pl (polonais), sv (suédois)
sample_rateintNonTaux d'échantillonnage audio en Hz. Valeur par défaut : 16000. Valeurs prises en charge : 16000, 8000. Avec 8000, le serveur rééchantillonne à 16 000 Hz avant la reconnaissance, ce qui peut ajouter une légère latence. N'utilisez 8000 que pour un audio source à 8 kHz, comme les enregistrements téléphoniques.
input_audio_formatstrNonFormat audio. Valeur par défaut : pcm. Formats pris en charge : pcm, opus.
corpus_textstrNonTexte contextuel, vocabulaire d'entités ou autres informations de référence pour le biaisage contextuel. Maximum : 10 000 tokens. Pour plus de détails, consultez Biaisage contextuel.

Interfaces clés

Classe OmniRealtimeConversation

from dashscope.audio.qwen_omni import OmniRealtimeConversation
MéthodeÉvénement de réponse serveurDescription
connect()session.created, session.updatedÉtablit une connexion WebSocket avec le serveur.
update_session(...)session.updatedConfigure la session. À appeler après connect(). Si omis, les valeurs par défaut s'appliquent. Consultez la section Configuration de la session pour les paramètres.
append_audio(audio_b64: str)AucunEnvoie un fragment audio encodé en Base64 au tampon d'entrée du serveur. Lorsque enable_turn_detection=True, le serveur détecte automatiquement les limites de parole et valide les données. Si enable_turn_detection=False, le client contrôle le moment de validation (max. 15 Mio par événement). Des fragments plus petits améliorent la réactivité du VAD.
commit()input_audio_buffer.committedValide l'audio mis en tampon pour la reconnaissance. Renvoie une erreur si le tampon est vide. Désactivé lorsque enable_turn_detection=True.
end_session(timeout: int = 20)session.finishedTermine la session une fois la reconnaissance finale effectuée par le serveur. En mode VAD (par défaut), appelez cette méthode après l'envoi de tout l'audio. En mode manuel, appelez-la après commit(). Variante asynchrone : end_session_async().
close()AucunArrête la tâche et ferme la connexion.
get_session_id()AucunRenvoie l'ID de la session actuelle.
get_last_response_id()AucunRenvoie l'ID de la réponse la plus récente.

Interface OmniRealtimeCallback

Créez une sous-classe de OmniRealtimeCallback et implémentez ses méthodes pour traiter les événements serveur.

from dashscope.audio.qwen_omni import OmniRealtimeCallback
MéthodeParamètresDescription
on_open()AucunAppelée lors de l'établissement de la connexion WebSocket.
on_event(message: dict)message : un événement serveurAppelée à la réception d'un événement serveur.
on_close(close_status_code, close_msg)close_status_code : code d'état ; close_msg : message de journalAppelée lors de la fermeture de la connexion WebSocket.