qwen3-livetranslate-flash traduce audio y video a través del endpoint de finalizaciones de chat compatible con OpenAI. Todas las solicitudes se transmiten.
Nota: La interfaz DashScope no es compatible.
Modelos admitidos
qwen3-livetranslate-flashqwen3-livetranslate-flash-2025-12-01
Requisitos previos
Antes de comenzar, complete lo siguiente:
- Crear una clave API
- Configurar la clave API como variable de entorno
- Instalar el SDK de OpenAI (para Python o Node.js)
Endpoints
Región | SDK | Endpoint HTTP |
|---|---|---|
Singapur |
|
|
Beijing |
|
|
Reemplace {WorkspaceId} con su ID de espacio de trabajo real.
ImportanteAlibaba Cloud Model Studio ha lanzado dominios específicos de espacio de trabajo para las regiones de China (Beijing) y Singapur. Los nuevos dominios dedicados ofrecen un rendimiento superior y una mayor estabilidad para las solicitudes de inferencia. Recomendamos migrar a los nuevos dominios:
- China (Pekín): de
https://dashscope.aliyuncs.comahttps://{WorkspaceId}.cn-beijing.maas.aliyuncs.com - Singapur: de
https://dashscope-intl.aliyuncs.comahttps://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com
{WorkspaceId} es su ID de espacio de trabajo, que se encuentra en la página Workspace Details de la consola de Alibaba Cloud Model Studio. El dominio existente permanece totalmente funcional.
Inicio rápido
Los siguientes ejemplos traducen un archivo de audio y devuelven tanto texto traducido como audio mediante transmisión. Reemplace base_url si utiliza la región de Pekín.
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"
}
}'
Entrada de video
Para traducir video en lugar de audio, establezca el tipo de contenido en 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"
},
}
],
},
]
Todos los demás parámetros permanecen igual.
Cuerpo de la solicitud
Parámetros obligatorios
Parámetro | Tipo | Descripción |
|---|---|---|
| string | Nombre del modelo. Valores válidos: |
| array | Una matriz de mensajes. Solo se admite un mensaje de usuario. |
| boolean | Debe ser |
| object | Configuración de traducción. Consulte Opciones de traducción. Este es un parámetro no estándar de OpenAI. En el SDK de Python, páselo dentro de |
Parámetros opcionales
Parámetro | Tipo | Predeterminado | Descripción |
|---|---|---|---|
| array |
| Modalidad de salida. Establezca en |
| object | - | Configuración de audio de salida. Obligatorio cuando |
| object | - | Configuración de transmisión. Consulte Opciones de transmisión. |
| integer | Máximo del modelo | El número máximo de tokens a generar. La generación se detiene al alcanzar este límite o al completarse. |
| integer | - | Semilla aleatoria para reproducibilidad. La misma semilla produce una salida idéntica para solicitudes idénticas. Rango: |
| float | 1.0 | Controla la velocidad del audio de salida. 1.0 es velocidad normal, menos de 1.0 es más lento, mayor que 1.0 es más rápido. Rango: [0.5, 2.0]. |
Parámetros de muestreo
Para garantizar la precisión de la traducción, mantenga estos parámetros en sus valores predeterminados.
Parámetro | Tipo | Predeterminado | Rango | Notas |
|---|---|---|---|---|
| float | 0.000001 | [0, 2) | Controla la diversidad de la salida. |
| float | 0.8 | (0, 1.0] | Umbral de muestreo de núcleo. |
| float | 0 | [-2.0, 2.0] | Reduce la repetición cuando es positivo. |
| integer | 1 | >= 0 | Tamaño del conjunto de candidatos. Si el valor es |
| float | 1.05 | > 0 | Penaliza secuencias repetidas. Parámetro no estándar de OpenAI. SDK de Python: use |
Objeto de mensaje
La matriz messages debe contener exactamente un objeto con role establecido en user.
Propiedades de los elementos de la matrizcontent:
Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
| string | Sí |
|
| object | Cuando | Entrada de audio. Véase abajo. |
| object | Cuando | Entrada de video. Véase abajo. |
input_audioobject:
Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
| string | Sí | URL del archivo de audio o una URL de datos Base64. Para archivos locales, consulte Introducir un archivo local codificado en Base64. |
| string | Sí | Formato de audio, como |
video_urlobject:
Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
| string | Sí | URL pública del archivo de video o una URL de datos Base64. Para archivos locales, consulte Introducir un archivo local codificado en Base64. |
Opciones de traducción
Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
| string | No | Nombre completo en inglés del idioma de origen. Consulte Idiomas admitidos. Si se omite, el idioma se detecta automáticamente. |
| string | Sí | Nombre completo en inglés del idioma de destino. Consulte Idiomas admitidos. |
Nota:
translation_optionses un parámetro no estándar de OpenAI. En el SDK de Python, páselo dentro deextra_body. En Node.js o HTTP, páselo en el nivel superior del cuerpo de la solicitud.
extra_body={"translation_options": {"source_lang": "zh", "target_lang": "en"}}
Opciones de salida de audio
Requerido cuando modalities es ["text", "audio"].
Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
| string | Sí | Voz para el audio de salida. Consulte Voces admitidas. |
| string | Sí | Formato de audio de salida. Solo se admite |
Opciones de transmisión
Campo | Tipo | Predeterminado | Descripción |
|---|---|---|---|
| boolean |
| Cuando |
Respuesta
La API devuelve una serie de fragmentos de transmisión, cada uno como un objeto chat.completion.chunk. Los fragmentos se dividen en tres categorías: texto, audio y uso de tokens.
Fragmento de texto
Contiene texto traducido incremental en 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"
}
Fragmento de audio
Contiene audio incremental codificado en Base64 en 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"
}
Fragmento de uso de tokens
Devuelto como el fragmento final cuando include_usage es true. La matriz choices está vacía y usage contiene el desglose de 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
}
}
}
Nota: Para entrada de video,
prompt_tokens_details.audio_tokensincluye los tokens de audio extraídos del video.video_tokensreporta el recuento de tokens específicos del video.
Campos de respuesta
Campo | Tipo | Descripción |
|---|---|---|
| string | El identificador de la solicitud. Idéntico en todos los fragmentos. |
| array | Contenido generado. Vacío en el fragmento final de uso. |
| string | Texto traducido incremental. |
| object | Datos de audio incrementales. |
| string | Segmento de audio codificado en Base64. |
| string | Identificador único para el audio de salida. |
| integer | Marca de tiempo en la que se creó la solicitud. |
| string | Rol del mensaje. Presente solo en el primer fragmento. |
| string |
|
| integer | Siempre |
| integer | Marca de tiempo Unix para la solicitud. Idéntica en todos los fragmentos. |
| string | El nombre del modelo. |
| string | Siempre |
| object | Consumo de tokens. Presente solo en el fragmento final cuando |
| integer | Total de tokens de entrada. |
| integer | Total de tokens de salida. |
| integer | Suma de |
| integer | Tokens de audio de salida. |
| integer | Tokens de texto de salida. |
| integer | Tokens de audio de entrada. Para entrada de video, esto incluye el audio extraído del video. |
| integer | Tokens de texto de entrada. Siempre |
| integer | Tokens de video de entrada. Presente solo para entrada de video. |
Campos fijados a null
Los siguientes campos están presentes en la respuesta por compatibilidad con OpenAI, pero siempre devuelven null:
reasoning_content, function_call, refusal, tool_calls, logprobs, service_tier, system_fingerprint
Notas de uso
- Solo transmisión. Establezca
streamentrue. Las llamadas sin transmisión no son compatibles. - Mensaje único. La matriz
messagesacepta solo un mensaje de usuario. - Parámetros no estándar.
translation_options,top_kyrepetition_penaltyno forman parte de la API estándar de OpenAI. SDK de Python: páselos enextra_body. Node.js/HTTP: inclúyalos en el nivel superior. - Valores predeterminados de muestreo. Los valores predeterminados para
temperature,top_p,top_k,presence_penaltyyrepetition_penaltyestán optimizados para la precisión de la traducción. Cambiarlos puede degradar la calidad. - Formato de audio de salida. Solo se admite
wav. - Detección automática de idioma. Si se omite
source_lang, el idioma de entrada se detecta automáticamente.
Referencias
- Descripción general de la traducción de audio y video
- Voces admitidas
- Idiomas admitidos
- Selección de modelo
- Crear una clave API
- Configurar la clave API como variable de entorno
- Instalar el SDK
- Introducir un archivo local codificado en Base64