Présentation des interfaces clés et des paramètres de requête pour le SDK Java DashScope dédié à Qwen-Omni real-time Qwen-Omni-Realtime .
Prérequis
La version de votre SDK Java doit être v2.22.15 ou ultérieure. Avant de commencer, consultez le flux d'interaction multimodale en temps réelFlux d'interaction multimodale en temps réel.
Premiers pas
Téléchargez l'exemple de code depuis GitHubhttps://github.com/aliyun/alibabacloud-bailian-speech-demo/tree/master/samples/conversation/omni. Trois méthodes d'appel sont disponibles :
-
Exemple de conversation audiohttps://github.com/aliyun/alibabacloud-bailian-speech-demo/tree/master/samples/conversation/omni/java : capture l'audio en temps réel depuis un microphone, active le mode Voice Activity Detection (VAD)Qwen-Omni-Realtime qui détecte automatiquement le début et la fin de la parole, et prend en charge l'interruption vocale.
Définissez le paramètre enableTurnDetection sur
true.Utilisez un casque pour la lecture audio afin d'éviter que les échos ne déclenchent une interruption vocale.
-
Exemple de conversation audio et vidéohttps://github.com/aliyun/alibabacloud-bailian-speech-demo/tree/master/samples/conversation/omni/java : capture l'audio et la vidéo en temps réel depuis un microphone et une caméra, active le mode VADQwen-Omni-Realtime et prend en charge l'interruption vocale.
Définissez le paramètre enableTurnDetection sur
true.Utilisez un casque pour la lecture audio afin d'éviter que les échos ne déclenchent une interruption vocale.
-
Appel localhttps://github.com/aliyun/alibabacloud-bailian-speech-demo/tree/master/samples/conversation/omni/java : utilise des fichiers audio et des images locaux comme entrée et active le mode manuelQwen-Omni-Realtime qui vous permet de contrôler manuellement le rythme d'envoi.
Définissez le paramètre enableTurnDetection sur
false.
Paramètres de requête
Configurez les paramètres de requête suivants à l'aide des méthodes chaînées ou des setters de l'objet OmniRealtimeParam, puis transmettez-le au constructeur OmniRealtimeConversation.
| Paramètre | Type | Description |
|---|---|---|
model | String | Le modèle Qwen-Omni à utiliser. Consultez la liste des modèles. |
url | String | L'URL de l'endpoint :
Remplacez |
ImportantAlibaba Cloud Model Studio a publié des domaines spécifiques aux espaces de travail pour les régions Chine (Pékin) et Singapour. Les 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
wss://dashscope.aliyuncs.comàwss://{WorkspaceId}.cn-beijing.maas.aliyuncs.com - Singapour : passez de
wss://dashscope-intl.aliyuncs.comàwss://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com
{WorkspaceId} correspond à votre ID d'espace de travail, visible sur la page Workspace Details de la console Alibaba Cloud Model Studio. Le domaine existant reste entièrement fonctionnel.
Configurez les paramètres de requête suivants à l'aide des méthodes chaînées ou des setters de l'objet OmniRealtimeConfig, puis transmettez-le à la méthode updateSession.
| Paramètre | Type | Description |
|---|---|---|
modalities | List<OmniRealtimeModality> | La modalité de sortie du modèle. Définissez sur [OmniRealtimeModality.TEXT] pour le texte uniquement, ou sur [OmniRealtimeModality.TEXT, OmniRealtimeModality.AUDIO] pour l'audio et le texte. |
voice | String | La voix utilisée pour la sortie audio. Pour consulter les voix prises en charge, reportez-vous à la liste des voix. Voix par défaut :
|
inputAudioFormat | OmniRealtimeAudioFormat | Le format de l'audio entrant de l'utilisateur. Actuellement, seul |
outputAudioFormat | OmniRealtimeAudioFormat | Le format de l'audio sortant du modèle. Actuellement, seul |
instructions | String | Un message système définissant l'objectif ou le rôle du modèle. Exemple : « Vous êtes un agent de service client IA pour un hôtel cinq étoiles. Répondez aux questions des clients concernant les types de chambres, les équipements, les tarifs et les politiques de réservation avec précision et convivialité. Restez toujours professionnel et utile. Ne fournissez pas d'informations non vérifiées ou hors du périmètre des services de l'hôtel. » RemarqueDéfinissez |
smooth_output | Boolean | Ce paramètre est pris en charge uniquement par
|
enableInputAudioTranscription | Boolean | Active la reconnaissance vocale pour l'audio entrant. |
InputAudioTranscription | String | Modèle de reconnaissance vocale utilisé pour la transcription de l'audio entrant. La valeur est toujours qwen3-asr-flash-realtime. Ce paramètre n'est pas configurable. |
enableTurnDetection | Boolean | Active la détection d'activité vocale (VAD). Si cette option est désactivée, vous devez soumettre manuellement l'audio pour générer une réponse. |
turnDetectionType | String | Le type de VAD. Valeurs valides :
|
turnDetectionThreshold | Float | Seuil de détection VAD. Augmentez cette valeur dans les environnements bruyants et diminuez-la dans les environnements calmes.
Par défaut : 0,5. Valeurs valides : [-1,0, 1,0]. |
turnDetectionSilenceDurationMs | Integer | Durée de silence indiquant la fin de la parole. Si cette durée est dépassée, le modèle déclenche une réponse. Par défaut : 800. Valeurs valides : [200, 6000]. |
turnDetectionParam | Map | Paramètres de configuration supplémentaires pour Exemple : |
enable_search | Boolean | Ce paramètre prend effet uniquement lorsque vous utilisez le modèle de la série Qwen3,5-Omni-Realtime. Active la recherche web. Par défaut :
|
search_options | Object | Paramètres des options de recherche web. Ce paramètre prend effet uniquement après l'activation d'
|
tools | List<Map<String, Object>> | Ce paramètre prend effet uniquement lorsque vous utilisez le modèle de la série Qwen3,5-Omni-Realtime. Définitions des outils. Lorsqu'ils sont fournis, le modèle peut appeler des outils externes pour répondre aux questions des utilisateurs. Si un outil est appelé, le modèle ne génère pas d'audio et retourne uniquement les paramètres d'appel de l'outil. Chaque outil est une Map contenant les champs suivants :
|
temperature | Float | Température d'échantillonnage contrôlant la diversité du contenu. Des valeurs plus élevées produisent un contenu plus diversifié ; des valeurs plus faibles produisent un contenu plus déterministe. Valeurs valides : [0, 2). Étant donné que temperature et top_p contrôlent tous deux la diversité du contenu, nous vous recommandons de n'en définir qu'un seul. Valeurs par défaut de temperature :
|
top_p | Float | Seuil de probabilité pour l'échantillonnage par noyau (nucleus sampling), contrôlant la diversité du contenu. Des valeurs plus élevées produisent un contenu plus diversifié ; des valeurs plus faibles produisent un contenu plus déterministe. Valeurs valides : (0, 1,0]. Étant donné que temperature et top_p contrôlent tous deux la diversité du contenu, nous vous recommandons de n'en définir qu'un seul. Valeurs par défaut de top_p :
|
top_k | Integer | Taille de l'ensemble de candidats pour l'échantillonnage. Par exemple, 50 signifie que seuls les 50 jetons ayant les scores les plus élevés forment l'ensemble de candidats. Des valeurs plus grandes augmentent l'aléatoire ; des valeurs plus petites augmentent le déterminisme. Définissez sur None ou sur une valeur supérieure à 100 pour désactiver top_k et utiliser uniquement top_p. La valeur doit être supérieure ou égale à 0. Valeurs par défaut de top_k :
|
max_tokens | Integer | Nombre maximal de jetons à retourner.
Les valeurs par défaut et maximales correspondent à la longueur de sortie maximale du modèle. Consultez la liste des modèles pour plus de détails. Utilisez max_tokens pour limiter la longueur de sortie lors de la génération de résumés, de mots-clés, pour contrôler les coûts ou réduire le temps de réponse.
|
repetition_penalty | Float | Contrôle la répétition dans les séquences générées. Des valeurs plus élevées réduisent la répétition. 1,0 signifie aucune pénalité. Doit être supérieur à 0. Valeurs par défaut de repetition_penalty :
|
presence_penalty | Float | Contrôle la répétition du contenu dans la sortie du modèle. Valeurs valides : [-2,0, 2,0]. Les valeurs positives réduisent la répétition ; les valeurs négatives l'augmentent. Valeurs par défaut de presence_penalty :
Scénarios : Des valeurs plus élevées conviennent aux scénarios nécessitant de la diversité ou de la créativité, tels que l'écriture créative ou le brainstorming. Des valeurs plus faibles conviennent aux scénarios nécessitant de la cohérence ou de la précision technique, tels que les documents techniques.
|
seed | Integer | Rend la génération plus déterministe, garantissant des résultats cohérents d'une exécution à l'autre. L'utilisation de la même seed avec des paramètres identiques produit, autant que possible, le même résultat. Valeurs valides : 0 à 231−1. Valeur par défaut : -1.
|
Interfaces clés
Classe OmniRealtimeConversation
Importez avec import com.alibaba.dashscope.audio.omni.OmniRealtimeConversation;.
Signature de la méthode | Événement de réponse du serveur (envoyé via callback) | Description |
|---|---|---|
|
| Établit une connexion avec le serveur. |
|
| Met à jour la configuration de la session. Pour plus de détails sur les paramètres, consultez la section Paramètres de requête. Après la connexion, le serveur renvoie les configurations de session par défaut. Appelez cette méthode immédiatement après la connexion pour mettre à jour les paramètres. Lorsque le serveur reçoit l'événement session.update, il valide les paramètres. Des paramètres invalides renvoient une erreur ; sinon, le serveur met à jour la configuration de la session. |
| Aucun | Ajoute de l'audio encodé en Base64 au tampon d'entrée cloud. Le tampon est un stockage temporaire pouvant être écrit et validé ultérieurement.
|
| Aucun | Ajoute des données d'image encodées en Base64 au tampon vidéo cloud. Accepte des images locales ou des captures de flux vidéo en temps réel. Limites d'entrée d'image :
|
|
| Supprime l'audio présent dans le tampon cloud actuel. |
|
| Valide l'audio et la vidéo du tampon cloud. Renvoie une erreur si le tampon est vide.
|
|
response.audio_transcript.delta
response.audio_transcript.done
| Instruit le serveur de créer une réponse du modèle. Lorsque la session est configurée en mode « turn_detection », le serveur crée automatiquement une réponse du modèle. |
| Aucun | Annule la réponse en cours. Si aucune réponse n'est disponible pour annulation, le serveur renvoie une erreur. |
| Aucun | Envoie l'événement Le paramètre item est un JsonObject et doit contenir les champs suivants :
|
| Aucun | Arrête la tâche et ferme la connexion. |
| Aucun | Récupère l'ID de session de la tâche actuelle. |
| Aucun | Récupère l'ID de réponse de la réponse la plus récente. |
Interface de callback (OmniRealtimeCallback)
Le serveur renvoie les événements et les données de réponse via des callbacks. Implémentez les méthodes de callback pour traiter les réponses du serveur.
Importez avec import com.alibaba.dashscope.audio.omni.OmniRealtimeCallback;.
Méthode | Paramètre | Valeur de retour | Description |
|---|---|---|---|
| Aucun | Aucun | Appelé immédiatement après l'établissement d'une connexion avec le serveur. |
| message : l'événement de réponse du serveur. | Aucun | Contient les réponses aux appels d'interface ainsi que le texte et l'audio générés par le modèle. Consultez les événements serveur. |
| code : le code d'état de fermeture du WebSocket. reason : la raison de la fermeture du WebSocket. | Aucun | Appelé après la fermeture de la connexion avec le serveur. |
FAQ
Q : Comment l'audio et les images d'entrée sont-ils alignés ?
Le modèle Qwen-Omni real-time utilise le flux audio comme chronologie d'entrée. Les images sont insérées dans le flux audio en fonction de leur heure d'envoi. Vous pouvez ajouter des images à n'importe quel moment de la chronologie audio.
Dans les scénarios d'interaction en temps réel, vous pouvez activer ou désactiver l'entrée vidéo à tout moment.
Q : Quelle est la fréquence recommandée pour l'entrée d'images et d'audio ?
Dans les scénarios d'interaction en temps réel, nous vous recommandons d'envoyer les images à une fréquence de 1 ou 2 images par seconde et l'audio par paquets de 100 ms.
Q : Quelles sont les différences entre les deux modes du commutateur turn_detection ?
Lorsque turn_detection est activé, il prend en charge deux modes : server_vad et semantic_vad :
-
Activer « turn_detection » :
- État d'entrée : la VAD basée sur le cloud détecte la fin d'une phrase dans l'audio d'entrée et déclenche immédiatement l'inférence Qwen-Omni pour retourner le texte de réponse et la parole.
- État de réponse : dans cet état, vous pouvez continuer à envoyer des entrées audio et vidéo sans interruption pendant que le modèle répond. Une fois la réponse terminée, l'état revient à l'état d'entrée pour attendre la prochaine entrée vocale.
- Interruption : si l'utilisateur commence à parler pendant que le modèle répond, une interruption est déclenchée. Le service arrête immédiatement la réponse en cours et passe à l'état d'entrée.
-
Désactiver « turn_detection » :
- Vous devez déterminer manuellement la fin d'un tour d'entrée audio et vidéo et déclencher l'inférence Qwen-Omni pour obtenir une réponse à l'aide de commit et create_response.
- Pendant que le modèle répond, vous devez cesser d'envoyer des entrées audio et vidéo. Vous ne pouvez reprendre l'entrée pour le tour suivant qu'après la fin de la réponse du modèle.
- Vous devez utiliser la méthode cancel_response pour interrompre la réponse du modèle.
Notez que lorsque turn_detection est activé, vous pouvez toujours déclencher activement une réponse à l'aide de commit et create_response, et l'interrompre activement à l'aide de cancel_response.
Q : Pourquoi dois-je sélectionner un autre modèle pour input_audio_transcription ?
Qwen-Omni real-time est un modèle multimodal de bout en bout. Sa sortie textuelle est une réponse à l'entrée, et non une transcription directe de l'audio d'entrée. Un modèle ASR distinct est requis pour la transcription. Actuellement, le modèle est déterminé par la configuration intégrée et n'est pas configurable.