Tous les produits
Search
Centre de documentation

Alibaba Cloud Model Studio:Qwen-Audio-ASR-Message Android SDK

Dernière mise à jour :Oct 11, 2026

Ce guide vous montre comment utiliser le SDK Android pour la reconnaissance vocale en temps réel Qwen-Audio-ASR-Message afin de convertir la parole en texte.

Démarrage rapide

  1. Obtenir une clé API

  2. Télécharger le SDK et exécuter l'exemple de code :
    • Télécharger le dernier package SDK.
    • Extrayez le package ZIP. Le SDK au format AAR se trouve dans le répertoire app/libs. Ajoutez-le aux dépendances de votre projet. Pour l'intégration C++ Android, utilisez android_libs et android_include du package ZIP pour obtenir les bibliothèques dynamiques et les fichiers d'en-tête.
    • Ouvrez le projet dans Android Studio. L'exemple de code se trouve dans DashFunAsrSpeechTranscriberActivity.java. Remplacez la clé API pour tester la fonctionnalité.

Procédure d'appel

  1. Initialiser le SDK.
  2. Définissez les paramètres pour votre cas d'utilisation. Utilisez l'argument parameters de la méthode initialize pour définir les Paramètres de connexion et de contrôle, et utilisez la méthode setParams pour définir les Paramètres de reconnaissance vocale.
  3. Appelez startDialog pour démarrer la reconnaissance.
  4. Dans le rappel onNuiAudioStateChanged, démarrez le périphérique d'enregistrement en fonction de l'état audio.
  5. Fournissez continuellement des données d'enregistrement dans le rappel onNuiNeedAudioData, ou envoyez activement des données d'enregistrement en appelant updateAudio.
  6. Dans le rappel onNuiEventCallback, écoutez les événements et obtenez les résultats de la reconnaissance vocale.
  7. Appelez stopDialog pour arrêter la reconnaissance, et écoutez l'événement EVENT_TRANSCRIBER_COMPLETE pour confirmer que la reconnaissance est terminée.
  8. Lorsque vous n'avez plus besoin de la reconnaissance, appelez release pour libérer les ressources du SDK.

Paramètres de la requête

Paramètres de connexion et de contrôle

Pour configurer ces paramètres, passez une chaîne JSON dans l'argument parameters de la méthode initialize.

  • Exemple : Voici un exemple de chaîne JSON. Tous les paramètres ne sont pas listés. Ajoutez-en d'autres selon vos besoins lors de l'écriture de votre code :
{
    "url": "wss://dashscope.aliyuncs.com/api-ws/v1/inference",
    "apikey": "st-****",
    "device_id": "my_device_id",
    "service_mode": "1"
}
  • Paramètres
    ParamètreTypeObligatoireDescription
    urlStringOuiAdresse du service :
    • wss://dashscope.aliyuncs.com/api-ws/v1/inference
    • Chine (Pékin) : wss://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api-ws/v1/inference
    • Singapour : wss://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api-ws/v1/inference
    Remplacez {WorkspaceId} par votre véritable ID d'espace de travail.
    apikeyStringOuiLa clé API.
    service_modeStringOuiLe mode d'exécution. Fixé à "1" pour la reconnaissance vocale en temps réel.
    device_idStringOuiUne chaîne unique qui identifie l'utilisateur final. Vous pouvez la définir sur un ID utilisateur in-app ou un identifiant d'appareil unique généré par le client. Cet ID est principalement utilisé pour le traçage des journaux et le dépannage.
    audio_update_manuallyStringNonIndique s'il faut activer la poussée active des données audio. Par défaut : "false".Si défini sur "true" et que la version du SDK prend en charge les capacités de traitement audio sur appareil telles que AEC et VAD, ces capacités sont activées par défaut.
    workspaceStringNonLe chemin où sont stockés les fichiers de ressources sur appareil. Ce paramètre est requis lorsque audio_update_manually est défini sur "true" et qu'une capacité de traitement audio sur appareil telle que AEC ou VAD est activée.
    debug_pathStringNonLe chemin de stockage des fichiers journaux.Ce paramètre prend effet uniquement lorsque save_log est défini sur true dans la méthode initialize. Dans ce cas, vous devez définir le chemin du fichier journal, sinon une erreur se produit.Un maximum de deux fichiers journaux sont conservés localement.
    save_wavStringNonIndique s'il faut sauvegarder le fichier audio de débogage. Le fichier audio est sauvegardé sous debug_path.Par défaut : "false".Valeurs valides :
    • "true" : enregistrer le fichier.
    • "false" : ne pas enregistrer le fichier.
    Ce paramètre prend effet uniquement lorsque save_log est défini sur true dans la méthode initialize. De plus, debug_path doit également être défini.
    max_log_file_sizeintNonLa taille maximale d'un fichier journal, en octets.Ce paramètre prend effet uniquement lorsque save_log est défini sur true dans la méthode initialize.Par défaut : 104857600 (100 * 1024 * 1024 octets, soit 100 Mio).
    log_track_levelintNonLe niveau de filtrage pour le contenu des journaux envoyé via le rappel de journalisation (onNuiLogTrackCallback).Par défaut : 2.Valeurs valides :
    • 0: LOG_LEVEL_VERBOSE
    • 1: LOG_LEVEL_DEBUG
    • 2: LOG_LEVEL_INFO
    • 3: LOG_LEVEL_WARNING
    • 4: LOG_LEVEL_ERROR
    • 5 : LOG_LEVEL_NONE (désactive cette fonctionnalité)
    Remarque : log_track_level et level (définis via la méthode initialize) déterminent ensemble quels journaux sont finalement envoyés au rappel. Un journal est envoyé au rappel uniquement lorsque sa valeur de niveau est supérieure ou égale à la fois à log_track_level et level. Par exemple, si log_track_level est défini sur 2 (INFO) et level sur 3 (WARNING), alors seuls les journaux de niveau WARNING ou supérieur (valeur >= 3) sont envoyés au rappel.
    enable_reconnectionStringNonIndique s'il faut reprendre la transmission après la reconnexion du réseau. Par défaut : "false".
    aec_paramsobjectNonL'objet de configuration avancé pour l'annulation d'écho acoustique (AEC) sur appareil. Cet objet prend effet uniquement lorsque audio_update_manually est défini sur "true".
    aec_params.enable_aecbooleanNonIndique s'il faut activer l'AEC sur appareil. Si audio_update_manually est défini sur "true" et que la version du SDK prend en charge l'AEC sur appareil, cette capacité est activée par défaut.
    aec_params.save_audiobooleanNonIndique s'il faut sauvegarder l'audio traité par le module AEC sur appareil. Si save_wav est défini sur "true" et que debug_path est spécifié, cette fonctionnalité est activée par défaut et les données audio AEC sont sauvegardées dans debug_path.
    aec_params.enable_aec_data_callbackbooleanNonIndique s'il faut retourner les données traitées par AEC à votre application. Par défaut : false. Si activé, recevez les données de l'événement EVENT_AEC_DATA dans onNuiAssistEventCallback.
    vad_paramsobjectNonL'objet de configuration avancé pour la détection d'activité vocale (VAD) sur appareil. Cet objet prend effet uniquement lorsque audio_update_manually est défini sur "true".
    vad_params.enable_aecbooleanNonIndique s'il faut activer le VAD sur appareil. Si audio_update_manually est défini sur "true" et que la version du SDK prend en charge le VAD sur appareil, cette capacité est activée par défaut.
    vad_params.save_audiobooleanNonIndique s'il faut sauvegarder l'audio traité par le module VAD sur appareil. Si save_wav est défini sur "true" et que debug_path est spécifié, cette fonctionnalité est activée par défaut et les données audio VAD sont sauvegardées dans debug_path.

Paramètres de reconnaissance vocale

Pour configurer ces paramètres, passez une chaîne JSON dans l'argument params de la méthode setParams.

  • Exemple : Voici un exemple de chaîne JSON. Tous les paramètres ne sont pas listés. Ajoutez-en d'autres selon vos besoins lors de l'écriture de votre code :
{
    "service_type": 4,
    "nls_config": {
        "model": "qwen-audio-3.1-asr-flash-message",
        "sr_format": "pcm",
        "sample_rate": "16000"
    }
}
  • Paramètres
    Paramètre de niveau supérieurTypeObligatoireDescription

    service_type

    int

    Oui

    Le type de service vocal. Fixé à 4 pour la reconnaissance vocale en temps réel.

    nls_config

    object

    Oui

    L'objet de configuration principal pour la reconnaissance vocale. Il contient des paramètres clés tels que la sélection du modèle et les contrôles de qualité de reconnaissance.

    nls_config.model

    string

    Oui

    Le modèle utilisé dans l'exemple. Pour les informations sur les modèles, voir Modèles et régions pris en charge.

    nls_config.sr_format

    string

    Oui

    Le format audio.

    Valeurs valides :

    • pcm
    • opus

    ImportantPour l'audio Opus, transmettez l'audio PCM au SDK. Le SDK l'encode en Opus en interne.

    nls_config.sample_rate

    int

    Oui

    Le taux d’échantillonnage en Hz. Seule la valeur 16000 est prise en charge.

    nls_config.language_hintsarray[string]

    Non

    La langue de l'audio à reconnaître. Il n'y a pas de valeur par défaut ; si elle n'est pas définie, le modèle détecte automatiquement la langue.

    Vous pouvez définir jusqu’à 4 valeurs. Au-delà, seules les 4 premières prennent effet.

    Cliquez pour afficher les codes de langue pris en charge

    • 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

    Ce paramètre s’applique uniquement aux résultats finaux (sentence_end=true) et n’est pas pris en charge pour les résultats intermédiaires (sentence_end=false).

    nls_config.max_sentence_silence

    int

    Non

    Seuil de silence VAD pour la segmentation, en millisecondes. La phrase est considérée comme terminée si le silence après la parole dépasse ce seuil. Par défaut : 800. Plage valide : [200, 6000].

    nls_config.heartbeat

    boolean

    Non

    Indique s'il faut activer les paquets de battement de cœur.

    Valeur par défaut : false.

    • true : Maintient la connexion au serveur active même lorsque de l'audio silencieux est envoyé en continu.
    • false (par défaut) : Même lorsque de l'audio silencieux est envoyé en continu, la connexion expire et se ferme après un certain temps.

    L'audio silencieux désigne le contenu d'un fichier audio ou d'un flux de données qui ne contient aucun signal sonore. Vous pouvez générer de l'audio silencieux de plusieurs manières, par exemple en utilisant un logiciel d'édition audio comme Audacity ou Adobe Audition, ou en utilisant un outil en ligne de commande comme FFmpeg.

    nls_config.disfluency_removal_enabled

    boolean

    Non

    Pris en charge uniquement par qwen-audio-3.1-asr-flash-message. Indique s'il faut filtrer les mots de remplissage et peaufiner la sortie. La valeur par défaut est false. Définissez sur true pour activer cette fonctionnalité.

    nls_config.intermediate_result_enabled

    boolean

    Non

    Pris en charge uniquement par qwen-audio-3.1-asr-flash-message. Indique s'il faut retourner les résultats de streaming intermédiaires. La valeur par défaut est false. Définissez sur true pour retourner les résultats de streaming intermédiaires.

    nls_config.vocabulary_id

    string

    Non

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

    Générez cet ID à l'avance en appelant l'API de création de liste de mots chauds. Transmettez l'ID lors de la reconnaissance pour utiliser les mots chauds 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 les requêtes.

    Pour plus de détails sur l'utilisation, voir Mots chauds précompilés.

    nls_config.instant_vocabulary

    object

    Non

    Mots-clés instantanés.

    Transmis sous forme de paires clé-valeur, où la clé est le texte du mot chaud (string) et la valeur est le poids du mot chaud (integer). Aucune liste de mots chauds ne doit être créée à l'avance. Le poids varie de [1, 5] ou est défini sur 50 : une valeur dans [1, 5] rend le modèle plus susceptible de produire le mot à mesure que la valeur augmente ; une valeur de 50 désigne un super mot chaud, ce qui améliore considérablement le rappel, mais le nombre de super mots chauds ne peut pas dépasser 50.

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

    Lorsque des mots chauds instantanés et précompilés sont configurés ensemble, le système fusionne les deux ensembles. Si l'ensemble fusionné contient plus de 2000 mots chauds, le système en sélectionne aléatoirement 2000 à utiliser. Pour plus de détails sur l'utilisation, voir Mots chauds instantanés.

    ImportantPour les modèles et les limites applicables aux mots chauds instantanés, voir Mots chauds instantanés.

    nls_config.speech_noise_threshold

    float

    Non

    Le seuil pour distinguer la parole du bruit, utilisé pour ajuster la sensibilité de la détection d'activité vocale (VAD).

    Valeurs valides : [-1.0, 1.0].

    Descriptions des valeurs :

    • Plus la valeur est proche de -1 : Le seuil de bruit diminue, donc le bruit est plus susceptible d'être reconnu comme de la parole, ce qui peut entraîner la transcription de davantage de bruit.
    • Plus la valeur est proche de +1 : Le seuil de bruit augmente, donc la parole est plus susceptible d'être jugée à tort comme du bruit, ce qui peut entraîner le filtrage de certaines paroles.

    Il s'agit d'un paramètre de configuration avancé. Son ajustement peut affecter considérablement les résultats de la reconnaissance. Recommandations :

    • Effectuer des tests et vérifier minutieusement les résultats avant tout ajustement.
    • Ajustez par petits incréments en fonction de l'environnement audio réel (un pas de 0.1 est recommandé).

    nls_config.enable_connection_fast_check

    boolean

    Non

    Indique s'il faut détecter rapidement les pannes réseau et les signaler dès que possible. Par défaut : false.

Interfaces clés

NativeNui

initialize

Initialise une instance SDK de reconnaissance vocale. Le SDK est un singleton. Ne l'initialisez pas plus d'une fois avant d'appeler release.

Cette méthode est bloquante, appelez-la donc sur un thread non UI.

  • Signature de la méthode
public synchronized int initialize(final INativeNuiCallback callback,
                                   String parameters,
                                   final Constants.LogLevel level,
                                   final boolean save_log)
  • Paramètres
    ParamètreTypeDescription
    callbackINativeNuiCallbackL'implémentation de l'interface de rappel des événements et des données.
    parametersStringUne chaîne JSON contenant les paramètres d'authentification, de connexion et de débogage. Voir Paramètres de connexion et de contrôle.
    levelConstants.LogLevelContrôle le niveau d'impression des propres journaux du SDK.
    save_logbooleanIndique s'il faut sauvegarder les journaux locaux. Si défini sur true, spécifiez le chemin via debug_path dans les Paramètres de connexion et de contrôle, et définissez éventuellement la taille du fichier via max_log_file_size.
  • Valeur de retour

setParams

Définit les Paramètres de reconnaissance vocale au format JSON. Appelez cette méthode avant startDialog.

  • Signature de la méthode
public synchronized int setParams(String params)
  • Paramètres
    ParamètreTypeDescription
    paramsStringParamètres de reconnaissance vocale.
  • Valeur de retour

startDialog

Démarre la reconnaissance.

  • Signature de la méthode
public synchronized int startDialog(VadMode vad_mode, String dialog_params)
  • Paramètres
    ParamètreTypeDescription

    vad_mode

    VadMode

    Le mode VAD. Fixé à VadMode.TYPE_P2T.

    dialog_params

    String

    Si le paramètre apikey dans Paramètres de connexion et de contrôle utilise une clé API temporaire, vous pouvez la mettre à jour ici lorsqu'elle expire.

    Pour améliorer la précision de la reconnaissance en utilisant le contexte, mettez à jour le contexte ici.

    Le contenu est au format JSON :

    {
      "apikey": "st-****",
      "input_context": [
        {
          "role": "user",
          "content": [
            {
              "text": "xxxxx",
              "type": "input_text"
            }
          ]
        }
      ]
    }
    
  • Valeur de retour

stopDialog

Termine la reconnaissance. Après avoir appelé cette méthode, le serveur retourne le résultat final de reconnaissance et termine la tâche.

  • Signature de la méthode
public synchronized int stopDialog();
  • Valeur de retour

cancelDialog

Arrête la reconnaissance immédiatement. Après avoir appelé cette méthode, la tâche se termine aussitôt sans attendre que le serveur retourne le résultat final de reconnaissance.

  • Signature de la méthode
public synchronized int cancelDialog();
  • Valeur de retour

updateAction

Envoie une commande d'action pendant une interaction pour mettre à jour le comportement d'exécution, tel que le contexte de reconnaissance.

  • Signature de la méthode
public synchronized int updateAction(String params);
  • Paramètres
    ParamètreTypeDescription
    paramsStringUne chaîne JSON utilisée pour mettre à jour le comportement d'exécution, tel que le contexte de reconnaissance.
    params.typeStringDéfinir sur "action".
    params.commandStringLa commande d'exécution. Valeurs valides :
    • context : Met à jour immédiatement le contexte pour améliorer la précision de la reconnaissance.
    • play_start : Lorsque l'AEC sur appareil est utilisé, notifie au SDK que le lecteur a commencé à lire l'audio.
    • play_over : Lorsque l'AEC sur appareil est utilisé, notifie au SDK que le lecteur a terminé la lecture de l'audio.
    params.contextStringLorsque command est défini sur context, met à jour immédiatement le contexte pour améliorer la précision de la reconnaissance. La valeur est une chaîne JSON, comme illustré dans l'exemple suivant.
{
  "context": [
    {
      "role": "user",
      "content": [
        {
          "text": "xxx",
          "type": "input_text"
        }
      ]
    }
  ]
}
  • Valeur de retour

updateAudio

Lorsque audio_update_manually est défini sur "true", appelez cette méthode pour pousser activement les données d'enregistrement au lieu de fournir les données via onNuiNeedAudioData.

  • Signature de la méthode
public synchronized int updateAudio(byte[] data, int len,
                                    boolean first_pack);
  • Paramètres
    ParamètreTypeDescription
    databyte[]Les données audio à transmettre.
    lenintLe nombre d'octets de données audio à transmettre.
    first_packbooleanIgnorer ce paramètre.
  • Valeur de retour

updateRefAudio

Lorsque audio_update_manually est défini sur "true" et que l'AEC sur appareil est activé, appelez cette méthode pour pousser l'audio lu par le lecteur comme signal de référence.

  • Signature de la méthode
public synchronized int updateRefAudio(byte[] data, int len,
                                       boolean first_pack);
  • Paramètres
    ParamètreTypeDescription
    databyte[]Les données audio à transmettre.
    lenintLe nombre d'octets de données audio à transmettre.
    first_packbooleanIgnorer ce paramètre.
  • Valeur de retour

release

Libère toutes les ressources internes du SDK. Après avoir appelé cette méthode, l'instance SDK devient indisponible. Pour l'utiliser à nouveau, vous devez la réinitialiser en appelant initialize.

  • Signature de la méthode
public synchronized int release();
  • Valeur de retour

GetVersion

Obtient les informations de version actuelle du SDK.

  • Signature de la méthode
public synchronized String GetVersion();
  • Valeur de retour

    Les informations de version actuelle du SDK.

INativeNuiCallback : rappels d'écoute

onNuiEventCallback : écouter les événements et les résultats de reconnaissance vocale

  • Signature de la méthode
void onNuiEventCallback(NuiEvent event, final int resultCode, final int arg2, KwsResult kwsResult, AsrResult asrResult);
  • Paramètres
    ParamètreTypeDescription
    eventNuiEventL'événement de rappel.
    resultCodeintValide uniquement lorsque l’événement EVENT_ASR_ERROR se produit.
    arg2intUn paramètre réservé.
    asrResultAsrResultLe résultat de la reconnaissance vocale.
    kwsResultKwsResultLa fonctionnalité de réveil vocal. Vous n'avez pas besoin d'utiliser ce paramètre.

onNuiAudioStateChanged : écouter l'état audio

Le SDK utilise ce rappel pour vous notifier quand démarrer ou arrêter l'enregistrement.

  • Signature de la méthode
void onNuiAudioStateChanged(AudioState state);
  • États AudioState
    ÉtatDescription
    STATE_OPENL'interaction a commencé. Vous pouvez ouvrir le périphérique d'enregistrement et commencer l'enregistrement.
    STATE_PAUSEL'interaction s'est arrêtée. Vous pouvez arrêter l'enregistrement.
    STATE_CLOSEL'instance du SDK a été libérée. Vous pouvez fermer complètement le périphérique d'enregistrement.

onNuiNeedAudioData : fournir les données audio à reconnaître

Après le début de la reconnaissance, ce rappel est déclenché en continu. Fournissez les données audio à reconnaître dans ce rappel.

  • Signature de la méthode
int onNuiNeedAudioData(byte[] buffer, int len);
  • Paramètres
    ParamètreTypeDescription
    bufferbyte[]Les données audio à remplir.
    lenintLe nombre d'octets de données audio à remplir.
  • Valeur de retour

    Le nombre d'octets effectivement remplis.

onNuiAssistEventCallback : recevoir les événements et données auxiliaires

Ce rappel reçoit les événements auxiliaires et les données associées du SDK.

  • Signature de la méthode
void onNuiAssistEventCallback_(int event, byte[] info, int info_len,
                               byte[] data);
  • Paramètres
    ParamètreTypeDescription
    eventintUn événement NuiEvent.
    infoStringIgnorer ce paramètre.
    info_lenintIgnorer ce paramètre.
    databyte[]Données auxiliaires, telles que les données audio traitées par l'AEC.

onNuiLogTrackCallback : écouter les journaux de trace

Ce rappel reçoit les journaux internes détaillés du SDK pour aider au dépannage et au débogage.

default void onNuiLogTrackCallback(Constants.LogLevel level, String log)

NuiEvent : types d'événements

ÉvénementDescription
EVENT_TRANSCRIBER_STARTEDLa tâche a démarré avec succès.
EVENT_VAD_STARTDéclenché juste après le début de la tâche. Cela ne signifie pas que le début de la parole est détecté.
EVENT_VAD_ENDLa fin de la parole est détectée.
EVENT_ASR_PARTIAL_RESULTUn résultat intermédiaire de reconnaissance vocale.
EVENT_ASR_WARNUn avertissement qui n'interrompt pas la reconnaissance vocale s'est produit, comme une panne réseau lorsque la reconnexion est activée.
EVENT_ASR_ERRORUne erreur s'est produite lors de la reconnaissance vocale.
EVENT_MIC_ERRORDéclenché lorsqu'aucune donnée audio n'est reçue pendant 2 secondes consécutives.
EVENT_SENTENCE_ENDLa fin d'une phrase est détectée. Un résultat de reconnaissance complet pour la phrase est retourné.
EVENT_TRANSCRIBER_COMPLETELa reconnaissance vocale est terminée.
EVENT_AEC_DATADonnées audio traitées par l'AEC.