Tous les produits
Search
Centre de documentation

Alibaba Cloud Model Studio:Référence de l'API de reconnaissance vocale en différé (Qwen-Audio-3.0-ASR-Flash/Fun-ASR-Flash)

Dernière mise à jour :Sep 07, 2026

Cette rubrique détaille les paramètres et le fonctionnement de l'API HTTP de reconnaissance vocale en différé Qwen-Audio-3.0-ASR-Flash/Fun-ASR-Flash.

Guide d'utilisation : Reconnaissance vocale en différé. Pour connaître les prérequis d'entrée (formats audio pris en charge, limites de taille de fichier et de durée), consultez Spécifications audio.

ImportantCette fonctionnalité ne prend pas en charge les appels SDK.

Endpoints du service

Singapore

POST https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation

Remplacez {WorkspaceId} par votre ID d'espace de travail réel.

China (Beijing)

POST https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation

Remplacez {WorkspaceId} par votre ID d'espace de travail réel.

ImportantAlibaba Cloud Model Studio a publié des domaines spécifiques à chaque espace 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 ID d'espace de travail réel. Les domaines existants restent pleinement opérationnels.

En-têtes de requête

Paramètre

Type

Obligatoire

Description

Authorization

string

Oui

Jeton d'authentification au format Bearer <your_api_key>. Remplacez « <your_api_key> » par votre clé API réelle.

Content-Type

string

Oui

Type MIME du corps de la requête. Valeur fixe : application/json.

X-DashScope-SSE

string

Oui

Détermine si les résultats sont renvoyés sous forme de flux SSE. Définissez ce paramètre sur enable pour activer le streaming SSE ; le serveur renvoie alors les résultats intermédiaires et finaux dans plusieurs messages. Réglez-le sur disable ou omettez le paramètre pour obtenir uniquement le résultat final.

Corps de la requête

Les exemples suivants utilisent la configuration de la région Singapore. Remplacez « {WorkspaceId} » par votre ID d'espace de travail réel. La configuration varie selon les régions, et la clé API de la région Singapore diffère de celle de la région Beijing.

Sans streaming

curl --location --request POST 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation' \
         --header "Authorization: Bearer $DASHSCOPE_API_KEY" \
         --header "Content-Type: application/json" \
         --header "X-DashScope-SSE: disable" \
         --data '{
        "model": "qwen-audio-3.0-asr-flash",
        "input": {
            "messages": [
                {
                    "role": "user",
                    "content": [
                        {
                            "type": "input_audio",
                            "input_audio": {
                                "data": "{YOUR_AUDIO_URL}"
                            }
                        }
                    ]
                }
            ]
        },
        "parameters": {
            "format": "wav",
            "sample_rate": "16000"
        }
    }'

Avec streaming

curl --location --request POST 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation' \
         --header "Authorization: Bearer $DASHSCOPE_API_KEY" \
         --header "Content-Type: application/json" \
         --header "X-DashScope-SSE: enable" \
         --data '{
        "model": "qwen-audio-3.0-asr-flash",
        "input": {
            "messages": [
                {
                    "role": "user",
                    "content": [
                        {
                            "type": "input_audio",
                            "input_audio": {
                                "data": "{YOUR_AUDIO_URL}"
                            }
                        }
                    ]
                }
            ]
        },
        "parameters": {
            "format": "wav",
            "sample_rate": "16000"
        }
    }'

Avec contexte - sans streaming

curl --location --request POST 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation' \
         --header "Authorization: Bearer $DASHSCOPE_API_KEY" \
         --header "Content-Type: application/json" \
         --header "X-DashScope-SSE: disable" \
         --data '{
        "model": "qwen-audio-3.0-asr-flash",
        "input": {
            "messages": [
                {
                    "role": "user",
                    "content": [
                        {
                            "type": "input_text",
                            "text": "Hello"
                        }
                    ]
                },
                {
                    "role": "assistant",
                    "content": [
                        {
                            "type": "text",
                            "text": "Hello, I'm Qwen. How can I help you?"
                        }
                    ]
                },
                {
                    "role": "user",
                    "content": [
                        {
                            "type": "input_audio",
                            "input_audio": {
                                "data": "{YOUR_AUDIO_URL}"
                            }
                        }
                    ]
                }
            ]
        },
        "parameters": {
            "format": "wav",
            "sample_rate": "16000"
        }
    }'

Avec contexte - avec streaming

curl --location --request POST 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation' \
         --header "Authorization: Bearer $DASHSCOPE_API_KEY" \
         --header "Content-Type: application/json" \
         --header "X-DashScope-SSE: enable" \
         --data '{
        "model": "qwen-audio-3.0-asr-flash",
        "input": {
            "messages": [
                {
                    "role": "user",
                    "content": [
                        {
                            "type": "input_text",
                            "text": "Hello"
                        }
                    ]
                },
                {
                    "role": "assistant",
                    "content": [
                        {
                            "type": "text",
                            "text": "Hello, I'm Qwen. How can I help you?"
                        }
                    ]
                },
                {
                    "role": "user",
                    "content": [
                        {
                            "type": "input_audio",
                            "input_audio": {
                                "data": "{YOUR_AUDIO_URL}"
                            }
                        }
                    ]
                }
            ]
        },
        "parameters": {
            "format": "wav",
            "sample_rate": "16000"
        }
    }'

Base64

Vous pouvez transmettre des données encodées en Base64 (Data URL) au format data:<mediatype>;base64,<data>.

  • <mediatype> : type MIME.

    La valeur dépend du format audio. Par exemple :

    • WAV : audio/wav
    • MP3 : audio/mpeg
  • <data> : chaîne audio encodée en Base64.

    L'encodage Base64 augmente la taille des données. Veillez à limiter la taille du fichier original afin que les données encodées respectent la limite de taille audio d'entrée (10 Mo).

  • Exemple : data:audio/wav;base64,SUQzBAAAAAAAI1RTU0UAAAAPAAADTGF2ZjU4LjI5LjEwMAAAAAAAAAAAAAAA//PAxABQ/BXRbMPe4IQAhl9

    Cliquez pour afficher l'exemple de code

    import base64, pathlib
    
        # Replace with the path to your own audio file and make sure it meets the audio requirements
        file_path = pathlib.Path("{YOUR_AUDIO_FILE}")
        base64_str = base64.b64encode(file_path.read_bytes()).decode()
        data_uri = f"data:audio/mpeg;base64,{base64_str}"
    
    import java.nio.file.*;
              import java.util.Base64;
    
              public class Main {
                  /**
                   * Replace with the path to your own audio file and make sure it meets the audio requirements
                   */
                  public static String toDataUrl(String filePath) throws Exception {
                      byte[] bytes = Files.readAllBytes(Paths.get(filePath));
                      String encoded = Base64.getEncoder().encodeToString(bytes);
                      return "data:audio/mpeg;base64," + encoded;
                  }
    
                  public static void main(String[] args) throws Exception {
                      System.out.println(toDataUrl("{YOUR_AUDIO_FILE}"));
                  }
              }
    
import base64, pathlib
    import os
    import requests

    # Replace with the path to your own audio file and make sure it meets the audio requirements
    file_path = pathlib.Path("{YOUR_AUDIO_FILE}")
    base64_str = base64.b64encode(file_path.read_bytes()).decode()
    data_uri = f"data:audio/wav;base64,{base64_str}"

    # Replace "{WorkspaceId}" with your actual workspace ID
    url = "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation"

    headers = {
        "Authorization": f"Bearer {os.environ['DASHSCOPE_API_KEY']}",
        "Content-Type": "application/json",
        "X-DashScope-SSE": "disable",
    }

    payload = {
        "model": "qwen-audio-3.0-asr-flash",
        "input": {
            "messages": [
                {
                    "role": "user",
                    "content": [
                        {
                            "type": "input_audio",
                            "input_audio": {
                                "data": data_uri,
                            },
                        }
                    ],
                }
            ]
        },
        "parameters": {
            "format": "wav",
            "sample_rate": "16000",
        },
    }

    response = requests.post(url, headers=headers, json=payload)
    print(response.status_code)
    print(response.json())

Mots-clés intégrés

curl --location --request POST 'https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation' \
         --header "Authorization: Bearer $DASHSCOPE_API_KEY" \
         --header "Content-Type: application/json" \
         --header "X-DashScope-SSE: disable" \
         --data '{
        "model": "qwen-audio-3.0-asr-flash",
        "input": {
            "messages": [
                {
                    "role": "user",
                    "content": [
                        {
                            "type": "input_audio",
                            "input_audio": {
                                "data": "{YOUR_AUDIO_URL}"
                            }
                        }
                    ]
                }
            ]
        },
        "parameters": {
            "format": "wav",
            "sample_rate": "16000",
            "vocabulary": {"John Smith": 5, "Jane Doe": 5}
        }
    }'

modelstring(Obligatoire)

Nom du modèle. Les séries Qwen-Audio-3.0-ASR-Flash et Fun-ASR-Flash sont prises en charge. Pour plus de détails, consultez Modèles et régions pris en charge.

inputobject(Obligatoire)

Informations d'entrée.

Propriétés

messagesarray(object)(Obligatoire)

Liste des messages. Elle contient l'audio à reconnaître ainsi que, facultativement, un contexte de conversation améliorant la précision de la reconnaissance.

ImportantLa fonctionnalité de contexte améliore la précision de reconnaissance des termes spécifiques à un domaine. Pour son utilisation, consultez Amélioration par contexte.

Contraintes : une requête peut inclure au maximum 5 messages de contexte de chaque type (input_text et text). En cas de dépassement, seuls les 5 messages les plus récents sont conservés. Le texte total de contexte par tour (longueur combinée des champs text dans les messages user et assistant) ne doit pas excéder 400 caractères, chaque caractère comptant pour 1. Tout excédent est tronqué par la fin.

ImportantLorsque vous incluez du contexte, l'ordre des messages dans messages est important : les messages de contexte doivent être organisés par tour de conversation. Au sein de chaque tour, le message user (de type input_text) doit précéder le message assistant correspondant (de type text). Le message user contenant input_audio doit constituer le dernier élément du tableau messages.

Propriétés

rolestring(Obligatoire)

Rôle du message. Valeurs valides :

  • user (Obligatoire) : message utilisateur. Lorsque le type est input_audio, il contient l'audio à reconnaître. Lorsque le type est input_text, il contient les résultats de reconnaissance des tours précédents ou une liste de mots spécifiques au domaine (facultatif, utilisé comme contexte).
  • assistant (Facultatif, contexte) : réponses du grand modèle linguistique lors des tours précédents.

contentarray(object)(Obligatoire)

Liste du contenu des messages.

Propriétés

typestring(Obligatoire)

Type de contenu. Chaque requête nécessite au moins un message de type input_audio. Valeurs valides :

  • input_audio (Obligatoire) : entrée audio à reconnaître (le rôle est user). Vous devez également transmettre l'objet input_audio.
  • input_text (Facultatif, contexte) : résultats de reconnaissance de la parole utilisateur des tours précédents, ou liste de mots spécifiques au domaine (le rôle est user). Vous devez également transmettre le champ text.
  • text (Facultatif, contexte) : réponses du grand modèle linguistique lors des tours précédents (le rôle est assistant). Vous devez également transmettre le champ text.

input_audioobject(Conditionnellement obligatoire)

Obligatoire lorsque type vaut input_audio.

Propriétés

datastring(Obligatoire)

Données audio à reconnaître. Pour connaître les prérequis d'entrée (formats audio pris en charge, limites de taille de fichier et de durée), consultez Spécifications audio. Deux méthodes sont prises en charge :

  • URL de fichier audio : transmettez une URL accessible publiquement pointant vers le fichier audio.
  • Data URI Base64 : transmettez les données audio encodées en Base64 sous forme de Data URI. La valeur correspond au préfixe data:{MIME_TYPE};base64, concaténé aux données audio encodées en Base64. Les types MIME pris en charge incluent audio/wav et audio/mp3.

Exemple (URL) : https://example.com/audio/sample.wav

Exemple (Base64) : data:audio/wav;base64,{BASE64_ENCODED_DATA}

textstring(Conditionnellement obligatoire)

Lorsque type vaut input_text, saisissez les résultats de reconnaissance de la parole utilisateur des tours précédents ou une liste de mots spécifiques au domaine. Lorsque type vaut text, saisissez les réponses du grand modèle linguistique des tours précédents. La longueur du texte est mesurée en caractères, chaque caractère comptant pour 1. La longueur combinée des champs text dans tous les messages d'un même tour de contexte ne peut excéder 400 caractères. Tout excédent est tronqué par la fin.

parametersobject(Obligatoire)

Paramètres du modèle.

RemarqueLa correction de texte est désactivée par défaut et n'est pas encore disponible.

Correction de texte : lors de la transcription vocale, le modèle supprime automatiquement les mots de remplissage inutiles et les répétitions dues au bégaiement, gère les auto-corrections effectuées pendant la parole, fluidifie les expressions familières et normalise la ponctuation ainsi que le formatage du texte. Il en résulte une sortie plus concise, fluide et lisible, tout en préservant autant que possible l'intention originale de l'utilisateur et les informations clés.

Propriétés

formatstring(Obligatoire)

Format audio. Définissez cette valeur pour qu'elle corresponde à votre format audio réel. Les valeurs prises en charge incluent wav, mp3 et opus. Pour plus de détails, consultez Spécifications audio.

sample_ratestring(Facultatif)

Fréquence d'échantillonnage audio, en Hz. Par exemple, 16000 correspond à une fréquence d'échantillonnage de 16 kHz. Pour plus de détails, consultez Spécifications audio.

vocabulary_idstring(Facultatif)

Identifiant d'une liste de mots-clés précompilée.

Générez cet identifiant au préalable en appelant l'API de création de liste de mots-clés. Transmettez l'identifiant lors de la reconnaissance pour utiliser les mots-clés de la liste.

Convient aux scénarios où le vocabulaire est connu et relativement stable, et où vous devez réutiliser la même liste de mots entre plusieurs requêtes.

Pour plus de détails sur l'utilisation, consultez Mots-clés précompilés.

vocabularyobject(Facultatif)

Mots-clés instantanés.

Transmis sous forme de paires clé-valeur, où la clé est le texte du mot-clé (string) et la valeur est le poids du mot-clé (integer). Aucune liste de mots-clés ne doit être créée au préalable. Le poids varie de [1, 5] ou est fixé à 50 : une valeur comprise dans [1, 5] augmente la probabilité que le modèle génère le mot à mesure que la valeur croît ; une valeur de 50 désigne un super mot-clé, ce qui améliore considérablement le rappel, mais le nombre de super mots-clés ne peut excéder 50.

Adapté à l'optimisation temporaire de mots-clés au niveau de la session.

Lorsqu'ils sont configurés conjointement avec des mots-clés précompilés, seuls les mots-clés instantanés prennent effet. Pour plus de détails sur l'utilisation, consultez Mots-clés instantanés.

ImportantSeul qwen-audio-3.0-asr-flash prend en charge les mots-clés intégrés.

language_hints array[string](Facultatif)

Codes de langue à reconnaître. Si vous ne pouvez pas déterminer la langue à l'avance, laissez ce paramètre vide et le modèle détectera automatiquement la langue.

Pour les modèles de la série Qwen-Audio-3.0-ASR-Flash, vous pouvez définir jusqu'à 4 valeurs ; si vous en définissez plus de 4, seules les 4 premières prennent effet. Pour les modèles de la série Fun-ASR-Flash, vous ne pouvez définir qu'une seule valeur ; si vous en définissez plusieurs, seule la première prend effet.

Cliquez pour afficher les codes de langue pris en charge

  • qwen-audio-3.0-asr-flash, fun-asr-flash-2026-06-15 :

    • zh : Chinois
    • en : Anglais
    • ja : Japonais
    • ko : Coréen
    • vi : Vietnamien
    • th : Thaï
    • id : Indonésien
    • ms : Malais
    • tl : Filipino
    • hi : Hindi
    • ar : Arabe
    • fr : Français
    • de : Allemand
    • es : Espagnol
    • pt : Portugais
    • ru : Russe
    • it : Italien
    • nl : Néerlandais
    • sv : Suédois
    • da : Danois
    • fi : Finnois
    • no : Norvégien
    • el : Grec
    • pl : Polonais
    • cs : Tchèque
    • hu : Hongrois
    • ro : Roumain
    • bg : Bulgare
    • hr : Croate
    • sk : Slovaque

Corps de la réponse

Sans streaming

{
    "output": {
        "sentence": {
            "begin_time": 760,
            "channel_id": 0,
            "end_time": 3800,
            "sentence_end": true,
            "sentence_id": 1,
            "text": "Hello World, this is Alibaba Speech Lab.",
            "words": [
                {"begin_time": 760, "end_time": 1040, "fixed": true, "punctuation": "", "text": "Hello"},
                {"begin_time": 1040, "end_time": 1240, "fixed": true, "punctuation": ",", "text": " World"},
                {"begin_time": 1360, "end_time": 1880, "fixed": true, "punctuation": "", "text": "this is"},
                {"begin_time": 1880, "end_time": 2520, "fixed": true, "punctuation": "", "text": "Alibaba"},
                {"begin_time": 2520, "end_time": 2840, "fixed": true, "punctuation": "", "text": "Speech"},
                {"begin_time": 2840, "end_time": 3800, "fixed": true, "punctuation": ".", "text": "Lab"}
            ]
        },
        "text": "Hello World, this is Alibaba Speech Lab."
    },
    "usage": {
        "duration": 4
    },
    "request_id": "40e0734d-096f-9ae3-86c1-a8c013287561"
}

Avec streaming

Lorsque vous définissez X-DashScope-SSE: enable, le serveur renvoie les résultats de reconnaissance via le protocole Server-Sent Events. Le format d'événement SSE est le suivant :

id:{sequence_number}
          event:result
          :HTTP_STATUS/200
          data:{JSON_data}

Exemple de réponse :

id:1
    event:result
    :HTTP_STATUS/200
    data:{"output":{"sentence":{"sentence_id":1,"sentence_end":true,"end_time":3800,"words":[{"end_time":1040,"punctuation":"","begin_time":760,"fixed":true,"text":"Hello"},{"end_time":1240,"punctuation":",","begin_time":1040,"fixed":true,"text":" World"},{"end_time":1880,"punctuation":"","begin_time":1360,"fixed":true,"text":"this is"},{"end_time":2520,"punctuation":"","begin_time":1880,"fixed":true,"text":"Alibaba"},{"end_time":2840,"punctuation":"","begin_time":2520,"fixed":true,"text":"Speech"},{"end_time":3800,"punctuation":".","begin_time":2840,"fixed":true,"text":"Lab"}],"begin_time":760,"text":"Hello World, this is Alibaba Speech Lab.","channel_id":0},"text":"Hello World, this is Alibaba Speech Lab."},"usage":{"duration":4},"request_id":"fc1582e4-935c-9fc2-a482-a98bf43daa69"}

request_idstring

Identifiant unique de cette requête.

outputobject

Résultat de sortie.

Propriétés

textstring

Texte reconnu complet accumulé jusqu'à présent.

sentenceobject

Détails de la phrase en cours.

Propriétés

sentence_idinteger

Numéro de la phrase, commençant à 1.

sentence_endboolean

Indique s'il s'agit du résultat final pour la phrase. La valeur true signifie que la reconnaissance de la phrase est terminée.

begin_timeinteger

Heure de début de la phrase, en millisecondes.

end_timeinteger

Heure de fin de la phrase, en millisecondes. Renvoyé uniquement lorsque sentence_end vaut true.

textstring

Texte reconnu de la phrase en cours.

channel_idinteger

Numéro du canal, commençant à 0.

wordsarray

Liste des horodatages au niveau des mots.

Propriétés

textstring

Texte du mot.

begin_timeinteger

Heure de début du mot, en millisecondes.

end_timeinteger

Heure de fin du mot, en millisecondes.

punctuationstring

Signe de ponctuation suivant le mot. Chaîne vide en l'absence de ponctuation.

fixedboolean

Indique si le mot est stabilisé. La valeur false indique que l'horodatage du mot peut être ajusté dans les événements ultérieurs.

usageobject

Informations d'utilisation. Renvoyé uniquement lorsque sentence_end vaut true.

Propriétés

durationinteger

Durée audio traitée, en secondes.

Logique de traitement des résultats de streaming SSE

En mode streaming, le client doit gérer les éléments suivants :

  1. Pour chaque événement SSE reçu, analysez le JSON contenu dans le champ data.
  2. Utilisez output.sentence.sentence_end pour déterminer si la phrase en cours est terminée. Lorsque cette valeur est true, la reconnaissance de la phrase est achevée, les horodatages au niveau des mots sont stabilisés et le résultat peut être considéré comme définitif. Lorsque cette valeur est false, la reconnaissance est toujours en cours, et le texte ainsi que les horodatages peuvent être mis à jour dans les événements suivants.
  3. Les informations usage ne sont renvoyées que dans l'événement de fin de phrase ; elles permettent de mesurer la durée audio traitée.