qwen3-livetranslate-flash translates audio and video through the OpenAI-compatible chat completions endpoint. All requests are streamed.
Note: The DashScope interface is not supported.
Supported models
qwen3-livetranslate-flashqwen3-livetranslate-flash-2025-12-01
Prerequisites
Before you begin, complete the following:
Install the OpenAI SDK (for Python or Node.js)
Endpoints
Region | SDK | HTTP endpoint |
Singapore |
|
|
Beijing |
|
|
Replace {WorkspaceId} with your actual workspace ID.
Alibaba Cloud Model Studio has released workspace-specific domains for the China (Beijing) and Singapore regions. The new dedicated domains deliver superior performance and higher stability for inference requests. We recommend migrating to the new domains:
China (Beijing): from
https://dashscope.aliyuncs.comtohttps://{WorkspaceId}.cn-beijing.maas.aliyuncs.comSingapore: from
https://dashscope-intl.aliyuncs.comtohttps://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com
{WorkspaceId} is your workspace ID, which can be found on the Workspace Details page in the Alibaba Cloud Model Studio console. The existing domain remains fully functional.
Quick start
The following examples translate an audio file and return both translated text and audio through streaming. Replace the base_url if you use the Beijing region.
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"
}
}'Video input
To translate video instead of audio, set the content type to 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"
},
}
],
},
]All other parameters remain the same.
Request body
Required parameters
Parameter | Type | Description |
| string | Model name. Valid values: |
| array | An array of messages. Only one user message is supported. |
| boolean | Must be |
| object | Translation configuration. See Translation options. This is a non-standard OpenAI parameter. In the Python SDK, pass it inside |
Optional parameters
Parameter | Type | Default | Description |
| array |
| Output modality. Set to |
| object | - | Output audio configuration. Required when |
| object | - | Streaming configuration. See Stream options. |
| integer | Model maximum | The maximum number of tokens to generate. Generation stops at this limit or when complete. |
| integer | - | Random seed for reproducibility. The same seed produces identical output for identical requests. Range: |
| float | 1.0 | Controls the speed of the output audio. 1.0 is normal speed, less than 1.0 is slower, greater than 1.0 is faster. Range: [0.5, 2.0]. |
Sampling parameters
For translation accuracy, keep these parameters at their default values.
Parameter | Type | Default | Range | Notes |
| float | 0.000001 | [0, 2) | Controls output diversity. |
| float | 0.8 | (0, 1.0] | Nucleus sampling threshold. |
| float | 0 | [-2.0, 2.0] | Reduces repetition when positive. |
| integer | 1 | >= 0 | Candidate set size. If the value is |
| float | 1.05 | > 0 | Penalizes repeated sequences. Non-standard OpenAI parameter. Python SDK: use |
Message object
The messages array must contain exactly one object with role set to user.
Properties of content array items:
Field | Type | Required | Description |
| string | Yes |
|
| object | When | Audio input. See below. |
| object | When | Video input. See below. |
input_audio object:
Field | Type | Required | Description |
| string | Yes | URL of the audio file, or a Base64 data URL. For local files, see Input a Base64-encoded local file. |
| string | Yes | Audio format, such as |
video_url object:
Field | Type | Required | Description |
| string | Yes | Public URL of the video file, or a Base64 data URL. For local files, see Input a Base64-encoded local file. |
Translation options
Field | Type | Required | Description |
| string | No | Full English name of the source language. See Supported languages. If omitted, language is auto-detected. |
| string | Yes | Full English name of the target language. See Supported languages. |
Note:translation_optionsis a non-standard OpenAI parameter. In the Python SDK, pass it insideextra_body: In Node.js or HTTP, pass it at the top level of the request body.
extra_body={"translation_options": {"source_lang": "zh", "target_lang": "en"}}Audio output options
Required when modalities is ["text", "audio"].
Field | Type | Required | Description |
| string | Yes | Voice for the output audio. See Supported voices. |
| string | Yes | Output audio format. Only |
Stream options
Field | Type | Default | Description |
| boolean |
| When |
Response
The API returns a series of streaming chunks, each as a chat.completion.chunk object. Chunks fall into three categories: text, audio, and token usage.
Text chunk
Contains incremental translated text in 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"
}Audio chunk
Contains incremental Base64-encoded audio in 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"
}Token usage chunk
Returned as the final chunk when include_usage is true. The choices array is empty, and usage contains the token breakdown:
{
"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: For video input,prompt_tokens_details.audio_tokensincludes the audio tokens extracted from the video.video_tokensreports the video-specific token count.
Response fields
Field | Type | Description |
| string | The request identifier. Identical across all chunks. |
| array | Generated content. Empty in the final usage chunk. |
| string | Incremental translated text. |
| object | Incremental audio data. |
| string | Base64-encoded audio segment. |
| string | Unique identifier for the output audio. |
| integer | Timestamp when the request was created. |
| string | Message role. Present only in the first chunk. |
| string |
|
| integer | Always |
| integer | Unix timestamp for the request. Identical across all chunks. |
| string | The model name. |
| string | Always |
| object | Token consumption. Present only in the final chunk when |
| integer | Total input tokens. |
| integer | Total output tokens. |
| integer | Sum of |
| integer | Output audio tokens. |
| integer | Output text tokens. |
| integer | Input audio tokens. For video input, this includes audio extracted from the video. |
| integer | Input text tokens. Always |
| integer | Input video tokens. Present only for video input. |
Fields fixed to null
The following fields are present in the response for OpenAI compatibility but always return null:
reasoning_content, function_call, refusal, tool_calls, logprobs, service_tier, system_fingerprint
Usage notes
Streaming only. Set
streamtotrue. Non-streaming calls are unsupported.Single message. The
messagesarray accepts one user message only.Non-standard parameters.
translation_options,top_k, andrepetition_penaltyare not in the standard OpenAI API. Python SDK: pass inextra_body. Node.js/HTTP: include at top level.Sampling defaults. Defaults for
temperature,top_p,top_k,presence_penalty, andrepetition_penaltyare optimized for translation accuracy. Changing them may degrade quality.Output audio format. Only
wavis supported.Automatic language detection. If
source_langis omitted, the input language is auto-detected.