qwen3-livetranslate-flash traduit du contenu audio et vidéo via l'endpoint chat completions compatible OpenAI. Toutes les requêtes s'effectuent en streaming.
Note : L'interface DashScope n'est pas prise en charge.
Modèles pris en charge
qwen3-livetranslate-flashqwen3-livetranslate-flash-2025-12-01
Prérequis
Avant de commencer, procédez comme suit :
- Créer une clé API
- Configurer la clé API comme variable d'environnement
- Installer le SDK OpenAI (pour Python ou Node.js)
Endpoints
Région | SDKbase_url | Endpoint HTTP |
|---|---|---|
Singapour |
|
|
Pékin |
|
|
Remplacez {WorkspaceId} par votre ID d'espace de travail.
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) : passez de
https://dashscope.aliyuncs.comàhttps://{WorkspaceId}.cn-beijing.maas.aliyuncs.com - Singapour : passez de
https://dashscope-intl.aliyuncs.comàhttps://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com
{WorkspaceId} correspond à votre ID d'espace de travail, disponible sur la page Workspace Details dans la console Alibaba Cloud Model Studio. Le domaine existant reste pleinement fonctionnel.
Démarrage rapide
Les exemples suivants traduisent un fichier audio et renvoient à la fois le texte traduit et l'audio en streaming. Remplacez la valeur base_url si vous utilisez la région Pékin.
Python
import os
from openai import OpenAI
client = OpenAI(
api_key=os.getenv("DASHSCOPE_API_KEY"),
# The following is the Singapore region URL. Replace {WorkspaceId} with your actual workspace ID. URLs vary by region.
base_url="https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1",
)
completion = client.chat.completions.create(
model="qwen3-livetranslate-flash",
messages=[
{
"role": "user",
"content": [
{
"type": "input_audio",
"input_audio": {
"data": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250211/tixcef/cherry.wav",
"format": "wav",
},
}
],
}
],
modalities=["text", "audio"],
audio={"voice": "Cherry", "format": "wav"},
stream=True,
stream_options={"include_usage": True},
extra_body={"translation_options": {"source_lang": "zh", "target_lang": "en"}},
)
for chunk in completion:
print(chunk)
Node.js
import OpenAI from "openai";
const client = new OpenAI({
apiKey: process.env.DASHSCOPE_API_KEY,
// The following is the Singapore region URL. Replace {WorkspaceId} with your actual workspace ID. URLs vary by region.
baseURL: "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1",
});
async function main() {
const completion = await client.chat.completions.create({
model: "qwen3-livetranslate-flash",
messages: [
{
role: "user",
content: [
{
type: "input_audio",
input_audio: {
data: "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250211/tixcef/cherry.wav",
format: "wav",
},
},
],
},
],
modalities: ["text", "audio"],
audio: { voice: "Cherry", format: "wav" },
stream: true,
stream_options: { include_usage: true },
translation_options: { source_lang: "zh", target_lang: "en" },
});
for await (const chunk of completion) {
console.log(JSON.stringify(chunk));
}
}
main();
curl
## The following is the Singapore region URL. Replace {WorkspaceId} with your actual workspace ID. URLs vary by region.
curl -X POST https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1/chat/completions \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "qwen3-livetranslate-flash",
"messages": [
{
"role": "user",
"content": [
{
"type": "input_audio",
"input_audio": {
"data": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250211/tixcef/cherry.wav",
"format": "wav"
}
}
]
}
],
"modalities": ["text", "audio"],
"audio": {
"voice": "Cherry",
"format": "wav"
},
"stream": true,
"stream_options": {
"include_usage": true
},
"translation_options": {
"source_lang": "zh",
"target_lang": "en"
}
}'
Entrée vidéo
Pour traduire une vidéo plutôt qu'un fichier audio, définissez le type de contenu sur video_url :
messages = [
{
"role": "user",
"content": [
{
"type": "video_url",
"video_url": {
"url": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241115/cqqkru/1.mp4"
},
}
],
},
]
Tous les autres paramètres restent identiques.
Corps de la requête
Paramètres obligatoires
Paramètre | Type | Description |
|---|---|---|
| string | Nom du modèle. Valeurs valides : |
| array | Tableau de messages. Un seul message utilisateur est pris en charge. |
| boolean | Doit être défini sur |
| object | Configuration de la traduction. Consultez Options de traduction. Il s'agit d'un paramètre non standard OpenAI. Dans le SDK Python, transmettez-le dans |
Paramètres facultatifs
Paramètre | Type | Valeur par défaut | Description |
|---|---|---|---|
| array |
| Modalité de sortie. Définissez sur |
| object | - | Configuration audio de sortie. Obligatoire lorsque |
| object | - | Configuration du streaming. Consultez Options de streaming. |
| integer | Maximum du modèle | Nombre maximal de tokens à générer. La génération s'arrête à cette limite ou lorsqu'elle est terminée. |
| integer | - | Graine aléatoire pour la reproductibilité. Une même graine produit une sortie identique pour des requêtes identiques. Plage : |
| float | 1,0 | Contrôle la vitesse de l'audio de sortie. 1,0 correspond à la vitesse normale, une valeur inférieure à 1,0 ralentit la lecture, tandis qu'une valeur supérieure à 1,0 l'accélère. Plage : [0,5, 2,0]. |
Paramètres d'échantillonnage
Pour garantir la précision de la traduction, conservez les valeurs par défaut de ces paramètres.
Paramètre | Type | Valeur par défaut | Plage | Notes |
|---|---|---|---|---|
| float | 0,000001 | [0, 2) | Contrôle la diversité de la sortie. |
| float | 0,8 | (0, 1,0] | Seuil d'échantillonnage du noyau. |
| float | 0 | [-2,0, 2,0] | Réduit les répétitions lorsqu'il est positif. |
| integer | 1 | >= 0 | Taille de l'ensemble des candidats. Si la valeur est |
| float | 1,05 | > 0 | Pénalise les séquences répétées. Paramètre non standard OpenAI. SDK Python : utilisez |
Objet Message
Le tableau messages doit contenir exactement un objet dont le champ role est défini sur user.
Champ | Type | Obligatoire | Description |
|---|---|---|---|
| string | Oui |
|
| object | Lorsque | Entrée audio. Voir ci-dessous. |
| object | Lorsque | Entrée vidéo. Voir ci-dessous. |
Champ | Type | Obligatoire | Description |
|---|---|---|---|
| string | Oui | URL du fichier audio ou URL de données Base64. Pour les fichiers locaux, consultez Fournir un fichier local encodé en Base64. |
| string | Oui | Format audio, tel que |
Champ | Type | Obligatoire | Description |
|---|---|---|---|
| string | Oui | URL publique du fichier vidéo ou URL de données Base64. Pour les fichiers locaux, consultez Fournir un fichier local encodé en Base64. |
Options de traduction
Champ | Type | Obligatoire | Description |
|---|---|---|---|
| string | Non | Nom complet en anglais de la langue source. Consultez Langues prises en charge. Si ce champ est omis, la langue est détectée automatiquement. |
| string | Oui | Nom complet en anglais de la langue cible. Consultez Langues prises en charge. |
Note :
translation_optionsest un paramètre non standard OpenAI. Dans le SDK Python, transmettez-le dansextra_body. Pour Node.js ou HTTP, placez-le au niveau supérieur du corps de la requête.
extra_body={"translation_options": {"source_lang": "zh", "target_lang": "en"}}
Options de sortie audio
Obligatoire lorsque modalities vaut ["text", "audio"].
Champ | Type | Obligatoire | Description |
|---|---|---|---|
| string | Oui | Voix pour l'audio de sortie. Consultez Voix prises en charge. |
| string | Oui | Format audio de sortie. Seul le format |
Options de streaming
Champ | Type | Valeur par défaut | Description |
|---|---|---|---|
| boolean |
| Lorsque la valeur est |
Réponse
L'API renvoie une série de chunks en streaming, chacun étant un objet chat.completion.chunk. Ces chunks se divisent en trois catégories : texte, audio et consommation de tokens.
Chunk texte
Contient le texte traduit incrémentiel dans choices[0].delta.content :
{
"id": "chatcmpl-c22a54b8-40cc-4a1d-988b-f84cdf86868f",
"choices": [
{
"delta": {
"content": " of",
"role": null,
"audio": null
},
"finish_reason": null,
"index": 0
}
],
"created": 1764755440,
"model": "qwen3-livetranslate-flash",
"object": "chat.completion.chunk"
}
Chunk audio
Contient l'audio incrémentiel encodé en Base64 dans choices[0].delta.audio.data :
{
"id": "chatcmpl-c22a54b8-40cc-4a1d-988b-f84cdf86868f",
"choices": [
{
"delta": {
"content": null,
"role": null,
"audio": {
"data": "///+//7////+////////////AAAAAAAAAAABA......",
"expires_at": 1764755440,
"id": "audio_c22a54b8-40cc-4a1d-988b-f84cdf86868f"
}
},
"finish_reason": null,
"index": 0
}
],
"created": 1764755440,
"model": "qwen3-livetranslate-flash",
"object": "chat.completion.chunk"
}
Chunk de consommation des tokens
Renvoyé comme dernier chunk lorsque include_usage vaut true. Le tableau choices est vide, et usage contient le détail des tokens :
{
"id": "chatcmpl-c22a54b8-40cc-4a1d-988b-f84cdf86868f",
"choices": [],
"created": 1764755440,
"model": "qwen3-livetranslate-flash",
"object": "chat.completion.chunk",
"usage": {
"completion_tokens": 242,
"prompt_tokens": 415,
"total_tokens": 657,
"completion_tokens_details": {
"accepted_prediction_tokens": null,
"audio_tokens": 191,
"reasoning_tokens": null,
"rejected_prediction_tokens": null,
"text_tokens": 51
},
"prompt_tokens_details": {
"audio_tokens": 415,
"cached_tokens": null,
"text_tokens": 0,
"video_tokens": null
}
}
}
Note : Pour une entrée vidéo,
prompt_tokens_details.audio_tokensinclut les tokens audio extraits de la vidéo.video_tokensindique le nombre de tokens spécifiques à la vidéo.
Champs de réponse
Champ | Type | Description |
|---|---|---|
| string | Identifiant de la requête. Identique dans tous les chunks. |
| array | Contenu généré. Vide dans le dernier chunk de consommation. |
| string | Texte traduit incrémentiel. Vaut |
| object | Données audio incrémentielles. Vaut |
| string | Segment audio encodé en Base64. |
| string | Identifiant unique de l'audio de sortie. |
| integer | Horodatage de création de la requête. |
| string | Rôle du message. Présent uniquement dans le premier chunk. |
| string |
|
| integer | Toujours |
| integer | Horodatage Unix de la requête. Identique dans tous les chunks. |
| string | Nom du modèle. |
| string | Toujours |
| object | Consommation de tokens. Présent uniquement dans le dernier chunk lorsque |
| integer | Total des tokens d'entrée. |
| integer | Total des tokens de sortie. |
| integer | Somme de |
| integer | Tokens audio de sortie. |
| integer | Tokens texte de sortie. |
| integer | Tokens audio d'entrée. Pour une entrée vidéo, cela inclut l'audio extrait de la vidéo. |
| integer | Tokens texte d'entrée. Toujours |
| integer | Tokens vidéo d'entrée. Présent uniquement pour une entrée vidéo. |
Champs fixés à null
Les champs suivants sont présents dans la réponse pour assurer la compatibilité OpenAI, mais renvoient toujours null :
reasoning_content, function_call, refusal, tool_calls, logprobs, service_tier, system_fingerprint
Notes d'utilisation
- Streaming uniquement. Définissez
streamsurtrue. Les appels sans streaming ne sont pas pris en charge. - Message unique. Le tableau
messagesaccepte un seul message utilisateur. - Paramètres non standard.
translation_options,top_ketrepetition_penaltyn'appartiennent pas à l'API OpenAI standard. SDK Python : transmettez-les dansextra_body. Node.js/HTTP : incluez-les au niveau supérieur. - Valeurs par défaut d'échantillonnage. Les valeurs par défaut de
temperature,top_p,top_k,presence_penaltyetrepetition_penaltysont optimisées pour la précision de la traduction. Leur modification peut dégrader la qualité. - Format audio de sortie. Seul le format
wavest pris en charge. - Détection automatique de la langue. Si
source_langest omis, la langue d'entrée est détectée automatiquement.
Références
- Présentation de la traduction audio et vidéo
- Voix prises en charge
- Langues prises en charge
- Sélection du modèle
- Créer une clé API
- Configurer la clé API comme variable d'environnement
- Installer le SDK
- Fournir un fichier local encodé en Base64