> ## Documentation Index
> Fetch the complete documentation index at: https://docs.modelstudio.console.alibabacloud.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Audio and Video File Translation – Qwen

> qwen3-livetranslate-flash translates audio and video files across 18 languages. It accepts audio or video input and returns translated text, synthesized audio, or both via a streaming API. For video input, visual context improves translation accuracy (e.g., distinguishing "medical mask" vs. "masquerade mask" based on video frames).

## Before you begin <span id="h2_54f36439" />

1. [Create an API key](/en/model-studio/get-api-key).
2. Configure the API key as an environment variable.
3. (Optional) If you use the OpenAI SDK, [install the SDK](/en/model-studio/install-sdk).

## Quick start <span id="0bc4867ccfbqv" />

All examples use the OpenAI-compatible streaming API. Set source and target languages via `translation_options`. The default input is audio; uncomment the video input block in each example to translate video files instead.

> Specifying `source_lang` improves accuracy. Omit it to enable automatic language detection.

<CodeGroup dropdown>
  ```python expandable
  import os
  from openai import OpenAI

  client = OpenAI(
      api_key=os.getenv("DASHSCOPE_API_KEY"),
      # The following URL is for the Singapore region. When calling, replace {WorkspaceId} with your actual workspace ID. URLs vary by region.
      base_url="https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1",
  )

  # --- Audio input ---
  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",
                  },
              }
          ],
      }
  ]

  # --- Video input (uncomment to use) ---
  # 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"
  #                 },
  #             }
  #         ],
  #     },
  # ]

  completion = client.chat.completions.create(
      model="qwen3-livetranslate-flash",
      messages=messages,
      modalities=["text", "audio"],
      audio={"voice": "Cherry", "format": "wav"},
      stream=True,
      stream_options={"include_usage": True},
      # translation_options is not a standard OpenAI parameter; pass it through extra_body
      extra_body={"translation_options": {"source_lang": "zh", "target_lang": "en"}},
  )

  for chunk in completion:
      print(chunk)
  ```

  ```javascript expandable
  import OpenAI from "openai";

  const client = new OpenAI({
      apiKey: process.env.DASHSCOPE_API_KEY,
      // The following URL is for the Singapore region. When calling, replace {WorkspaceId} with your actual workspace ID. URLs vary by region.
      baseURL: "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1",
  });

  // --- Audio input ---
  const 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",
                  },
              },
          ],
      },
  ];

  // --- Video input (uncomment to use) ---
  // const 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",
  //                 },
  //             },
  //         ],
  //     },
  // ];

  async function main() {
      const completion = await client.chat.completions.create({
          model: "qwen3-livetranslate-flash",
          messages: messages,
          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();
  ```

  ```bash expandable
  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"
      }
  }'
  ```
</CodeGroup>

These examples use a public file URL. To use a local file, see [Input a Base64-encoded local file](/en/model-studio/qwen-omni#c516d1e824x03).

## Request parameters <span id="h2_22ce2569" />

## Input <span id="h3_fde56bb6" />

The `messages` array must contain exactly one message with `role` set to `user`. The `content` field holds the audio or video to translate:

- <strong>Audio</strong>: Set `type` to `input_audio`. Provide the file URL or Base64-encoded data in `input_audio.data`, and specify the format (for example, `wav`) in `input_audio.format`.
- <strong>Video</strong>: Set `type` to `video_url`. Provide the file URL in `video_url.url`.

## Translation options <span id="h3_8124c6e8" />

Specify the source and target languages in the `translation_options` parameter:

```json
"translation_options": {"source_lang": "zh", "target_lang": "en"}
```

In the Python SDK, `translation_options` is not a standard OpenAI parameter. Pass it through `extra_body`:

```python
extra_body={"translation_options": {"source_lang": "zh", "target_lang": "en"}}
```

## Output modality <span id="h3_7132631b" />

Control the output format with the `modalities` parameter:

<table><thead><tr><th><strong><code>modalities</code> value</strong></th><th><strong>Output</strong></th></tr></thead><tbody><tr><td><code>\["text"]</code></td><td>Translated text only</td></tr><tr><td><code>\["text", "audio"]</code></td><td>Translated text and Base64-encoded synthesized audio</td></tr></tbody></table>

When the output includes audio, set the voice in the `audio` parameter. See [Supported voices](/en/model-studio/qwen3-livetranslate-flash#0a5bde7593gdk) for available options.

## Constraints <span id="h3_54abe7ef" />

- <strong>Single-turn only</strong>: The model handles one translation per request. Multi-turn conversations are not supported.
- <strong>No system message</strong>: The `system` role is not supported.
- <strong>Streaming only</strong>: Only OpenAI-compatible streaming output is supported.

## Parse the response <span id="b6a6667a65zvt" />

Each streaming `chunk` object contains:

- <strong>Text</strong>: `chunk.choices[0].delta.content`
- <strong>Audio</strong>: `chunk.choices[0].delta.audio["data"]` (Base64-encoded, 24 kHz sample rate)

## Save audio to a file <span id="h3_404214df" />

Concatenate all Base64 audio fragments from the stream, then decode and save the result after the stream completes.

## Python <span id="h4_4e1d590a" />

```python expandable
import os
from openai import OpenAI
import base64
import numpy as np
import soundfile as sf

client = OpenAI(
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    # The following URL is for the Singapore region. When calling, replace {WorkspaceId} with your actual workspace ID. URLs vary by region.
    base_url="https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1",
)

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",
                },
            }
        ],
    }
]

completion = client.chat.completions.create(
    model="qwen3-livetranslate-flash",
    messages=messages,
    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"}},
)

# Concatenate Base64 fragments, then decode after the stream completes
audio_string = ""
for chunk in completion:
    if chunk.choices:
        if hasattr(chunk.choices[0].delta, "audio"):
            try:
                audio_string += chunk.choices[0].delta.audio["data"]
            except Exception as e:
                print(chunk.choices[0].delta.audio["transcript"])
    else:
        print(chunk.usage)

wav_bytes = base64.b64decode(audio_string)
audio_np = np.frombuffer(wav_bytes, dtype=np.int16)
sf.write("output.wav", audio_np, samplerate=24000)
```

## Node.js <span id="h4_f16b27b8" />

```javascript expandable
import OpenAI from "openai";
import { createWriteStream } from "node:fs";
import { Writer } from "wav";

const client = new OpenAI({
    apiKey: process.env.DASHSCOPE_API_KEY,
    // The following URL is for the Singapore region. When calling, replace {WorkspaceId} with your actual workspace ID. URLs vary by region.
    baseURL: "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1",
});

const 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",
                },
            },
        ],
    },
];

const completion = await client.chat.completions.create({
    model: "qwen3-livetranslate-flash",
    messages: messages,
    modalities: ["text", "audio"],
    audio: { voice: "Cherry", format: "wav" },
    stream: true,
    stream_options: { include_usage: true },
    translation_options: { source_lang: "zh", target_lang: "en" },
});

// Concatenate Base64 fragments, then decode after the stream completes
let audioString = "";
for await (const chunk of completion) {
    if (Array.isArray(chunk.choices) && chunk.choices.length > 0) {
        if (chunk.choices[0].delta.audio?.data) {
            audioString += chunk.choices[0].delta.audio.data;
        }
    } else {
        console.log(chunk.usage);
    }
}

// Save as WAV file
async function saveAudio(base64Data, outputPath) {
    const wavBuffer = Buffer.from(base64Data, "base64");
    const writer = new Writer({
        sampleRate: 24000,
        channels: 1,
        bitDepth: 16,
    });
    const outputStream = createWriteStream(outputPath);
    writer.pipe(outputStream);
    writer.write(wavBuffer);
    writer.end();
    await new Promise((resolve, reject) => {
        outputStream.on("finish", resolve);
        outputStream.on("error", reject);
    });
    console.log(`Audio saved to ${outputPath}`);
}

saveAudio(audioString, "output.wav");
```

## Real-time playback <span id="h3_bc139620" />

Decode each Base64 fragment as it arrives and play it directly. This approach requires platform-specific audio libraries.

## Python <span id="h4_c8673436" />

Install `pyaudio` first:

<table><thead><tr><th><strong>Platform</strong></th><th><strong>Installation</strong></th></tr></thead><tbody><tr><td>macOS</td><td><code>brew install portaudio && pip install pyaudio</code></td></tr><tr><td>Ubuntu / Debian</td><td><code>sudo apt-get install python-pyaudio python3-pyaudio</code> or <code>pip install pyaudio</code></td></tr><tr><td>CentOS</td><td><code>sudo yum install -y portaudio portaudio-devel && pip install pyaudio</code></td></tr><tr><td>Windows</td><td><code>python -m pip install pyaudio</code></td></tr></tbody></table>

```python expandable
import os
from openai import OpenAI
import base64
import numpy as np
import pyaudio
import time

client = OpenAI(
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    # The following URL is for the Singapore region. When calling, replace {WorkspaceId} with your actual workspace ID. URLs vary by region.
    base_url="https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1",
)

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",
                },
            }
        ],
    }
]

completion = client.chat.completions.create(
    model="qwen3-livetranslate-flash",
    messages=messages,
    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"}},
)

# Initialize PyAudio for real-time playback
p = pyaudio.PyAudio()
stream = p.open(format=pyaudio.paInt16, channels=1, rate=24000, output=True)

for chunk in completion:
    if chunk.choices:
        if hasattr(chunk.choices[0].delta, "audio"):
            try:
                audio_data = chunk.choices[0].delta.audio["data"]
                wav_bytes = base64.b64decode(audio_data)
                audio_np = np.frombuffer(wav_bytes, dtype=np.int16)
                stream.write(audio_np.tobytes())
            except Exception as e:
                print(chunk.choices[0].delta.audio["transcript"])

time.sleep(0.8)
stream.stop_stream()
stream.close()
p.terminate()
```

## Node.js <span id="h4_19340510" />

Install dependencies first:

<table><thead><tr><th><strong>Platform</strong></th><th><strong>Installation</strong></th></tr></thead><tbody><tr><td>macOS</td><td><code>brew install portaudio && npm install speaker</code></td></tr><tr><td>Ubuntu / Debian</td><td><code>sudo apt-get install libasound2-dev && npm install speaker</code></td></tr><tr><td>Windows</td><td><code>npm install speaker</code></td></tr></tbody></table>

```javascript expandable
import OpenAI from "openai";
import Speaker from "speaker";

const client = new OpenAI({
    apiKey: process.env.DASHSCOPE_API_KEY,
    // The following URL is for the Singapore region. When calling, replace {WorkspaceId} with your actual workspace ID. URLs vary by region.
    baseURL: "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1",
});

const 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",
                },
            },
        ],
    },
];

const completion = await client.chat.completions.create({
    model: "qwen3-livetranslate-flash",
    messages: messages,
    modalities: ["text", "audio"],
    audio: { voice: "Cherry", format: "wav" },
    stream: true,
    stream_options: { include_usage: true },
    translation_options: { source_lang: "zh", target_lang: "en" },
});

// Stream audio to speaker in real time
const speaker = new Speaker({
    sampleRate: 24000,
    channels: 1,
    bitDepth: 16,
    signed: true,
});

for await (const chunk of completion) {
    if (Array.isArray(chunk.choices) && chunk.choices.length > 0) {
        if (chunk.choices[0].delta.audio?.data) {
            const pcmBuffer = Buffer.from(chunk.choices[0].delta.audio.data, "base64");
            speaker.write(pcmBuffer);
        }
    } else {
        console.log(chunk.usage);
    }
}

speaker.on("finish", () => console.log("Playback complete"));
speaker.end();
```

## Billing <span id="e02a82e668y2c" />

<Tabs>
  <Tab title="Audio">
    Each second of input or output audio consumes 12.5 tokens. Audio shorter than 1 second is billed as 1 second.
  </Tab>

  <Tab title="Video">
    Video token consumption has two components:

    - <strong>Audio tokens</strong>: 12.5 tokens per second of audio. Audio shorter than 1 second is billed as 1 second.
    - <strong>Video tokens</strong>: Calculated based on frame count and resolution. The formula is:

    ```
      video_tokens = ceil(frame_count / 2) x (height / 32) x (width / 32) + 2
    ```

    Where:

    - Frames are sampled at 2 FPS, clamped to the range \[4, 128].
    - Height and width are adjusted to multiples of 32 pixels and dynamically scaled to fit within the total pixel limit.

    <Accordion title="Details">
      ## Python script to calculate video tokens <span id="h3_collapse_video" />

      ```python expandable
      # Install: pip install opencv-python
      import math
      import cv2

      FRAME_FACTOR = 2
      IMAGE_FACTOR = 32
      MAX_RATIO = 200
      VIDEO_MIN_PIXELS = 128 * 32 * 32
      VIDEO_MAX_PIXELS = 768 * 32 * 32
      FPS = 2
      FPS_MIN_FRAMES = 4
      FPS_MAX_FRAMES = 128
      VIDEO_TOTAL_PIXELS = 16384 * 32 * 32

      def round_by_factor(number, factor):
          return round(number / factor) * factor

      def ceil_by_factor(number, factor):
          return math.ceil(number / factor) * factor

      def floor_by_factor(number, factor):
          return math.floor(number / factor) * factor

      def get_video(video_path):
          cap = cv2.VideoCapture(video_path)
          frame_width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
          frame_height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
          total_frames = int(cap.get(cv2.CAP_PROP_FRAME_COUNT))
          video_fps = cap.get(cv2.CAP_PROP_FPS)
          cap.release()
          return frame_height, frame_width, total_frames, video_fps

      def smart_nframes(total_frames, video_fps):
          min_frames = ceil_by_factor(FPS_MIN_FRAMES, FRAME_FACTOR)
          max_frames = floor_by_factor(min(FPS_MAX_FRAMES, total_frames), FRAME_FACTOR)
          duration = total_frames / video_fps if video_fps != 0 else 0
          if duration - int(duration) > (1 / FPS):
              total_frames = math.ceil(duration * video_fps)
          else:
              total_frames = math.ceil(int(duration) * video_fps)
          nframes = total_frames / video_fps * FPS
          nframes = int(min(min(max(nframes, min_frames), max_frames), total_frames))
          if not (FRAME_FACTOR <= nframes <= total_frames):
              raise ValueError(f"nframes should in interval [{FRAME_FACTOR}, {total_frames}], but got {nframes}.")
          return nframes

      def smart_resize(height, width, nframes, factor=IMAGE_FACTOR):
          min_pixels = VIDEO_MIN_PIXELS
          total_pixels = VIDEO_TOTAL_PIXELS
          max_pixels = max(min(VIDEO_MAX_PIXELS, total_pixels / nframes * FRAME_FACTOR), int(min_pixels * 1.05))
          if max(height, width) / min(height, width) > MAX_RATIO:
              raise ValueError(f"absolute aspect ratio must be smaller than {MAX_RATIO}, got {max(height, width) / min(height, width)}")
          h_bar = max(factor, round_by_factor(height, factor))
          w_bar = max(factor, round_by_factor(width, factor))
          if h_bar * w_bar > max_pixels:
              beta = math.sqrt((height * width) / max_pixels)
              h_bar = floor_by_factor(height / beta, factor)
              w_bar = floor_by_factor(width / beta, factor)
          elif h_bar * w_bar < min_pixels:
              beta = math.sqrt(min_pixels / (height * width))
              h_bar = ceil_by_factor(height * beta, factor)
              w_bar = ceil_by_factor(width * beta, factor)
          return h_bar, w_bar

      def video_token_calculate(video_path):
          height, width, total_frames, video_fps = get_video(video_path)
          nframes = smart_nframes(total_frames, video_fps)
          resized_height, resized_width = smart_resize(height, width, nframes)
          video_token = int(math.ceil(nframes / FPS) * resized_height / 32 * resized_width / 32)
          video_token += 2
          return video_token

      if __name__ == "__main__":
          video_path = "spring_mountain.mp4"  # Replace with your video path
          video_token = video_token_calculate(video_path)
          print("video_tokens:", video_token)
      ```
    </Accordion>
  </Tab>
</Tabs>

For token pricing, see [Model list](/en/model-studio/models).

## Model details <span id="d93c1edca9cmi" />

<table><thead><tr><th><strong>Model</strong></th><th><strong>Version</strong></th><th><strong>Context window</strong></th><th><strong>Max input</strong></th><th><strong>Max output</strong></th></tr></thead><tbody><tr><td>qwen3-livetranslate-flash</td><td>Stable</td><td>53,248 tokens</td><td>49,152 tokens</td><td>4,096 tokens</td></tr><tr><td>qwen3-livetranslate-flash-2025-12-01</td><td>Snapshot</td><td>53,248 tokens</td><td>49,152 tokens</td><td>4,096 tokens</td></tr></tbody></table>

> qwen3-livetranslate-flash currently has the same capabilities as qwen3-livetranslate-flash-2025-12-01.

## Supported languages <span id="4ffd192226f0s" />

Use these language codes for `source_lang` and `target_lang`. Some target languages support text output only.

<table><thead><tr><th><strong>Language code</strong></th><th><strong>Language</strong></th><th><strong>Supported output</strong></th></tr></thead><tbody><tr><td>en</td><td>English</td><td>Audio, text</td></tr><tr><td>zh</td><td>Chinese</td><td>Audio, text</td></tr><tr><td>ru</td><td>Russian</td><td>Audio, text</td></tr><tr><td>fr</td><td>French</td><td>Audio, text</td></tr><tr><td>de</td><td>German</td><td>Audio, text</td></tr><tr><td>pt</td><td>Portuguese</td><td>Audio, text</td></tr><tr><td>es</td><td>Spanish</td><td>Audio, text</td></tr><tr><td>it</td><td>Italian</td><td>Audio, text</td></tr><tr><td>id</td><td>Indonesian</td><td>Text</td></tr><tr><td>ko</td><td>Korean</td><td>Audio, text</td></tr><tr><td>ja</td><td>Japanese</td><td>Audio, text</td></tr><tr><td>vi</td><td>Vietnamese</td><td>Text</td></tr><tr><td>th</td><td>Thai</td><td>Text</td></tr><tr><td>ar</td><td>Arabic</td><td>Text</td></tr><tr><td>yue</td><td>Cantonese</td><td>Audio, text</td></tr><tr><td>hi</td><td>Hindi</td><td>Text</td></tr><tr><td>el</td><td>Greek</td><td>Text</td></tr><tr><td>tr</td><td>Turkish</td><td>Text</td></tr></tbody></table>

## Supported voices <span id="0a5bde7593gdk" />

Set the `voice` parameter in `audio` when output includes synthesized audio.

<table><thead><tr><th><strong>Voice name</strong></th><th><strong><code>voice</code> parameter</strong></th><th><strong>Description</strong></th><th><strong>Supported languages</strong></th></tr></thead><tbody><tr><td>Cherry</td><td>Cherry</td><td>A cheerful, friendly, and genuine young woman.</td><td>Chinese, English, French, German, Russian, Italian, Spanish, Portuguese, Japanese, Korean</td></tr><tr><td>Nofish</td><td>Nofish</td><td>A designer who has difficulty pronouncing retroflex consonants.</td><td>Chinese, English, French, German, Russian, Italian, Spanish, Portuguese, Japanese, Korean</td></tr><tr><td>Shanghai-Jada</td><td>Jada</td><td>A bustling and energetic Shanghai lady.</td><td>Chinese</td></tr><tr><td>Beijing-Dylan</td><td>Dylan</td><td>A young man who grew up in the hutongs of Beijing.</td><td>Chinese</td></tr><tr><td>Sichuan-Sunny</td><td>Sunny</td><td>A sweet girl from Sichuan.</td><td>Chinese</td></tr><tr><td>Tianjin-Peter</td><td>Peter</td><td>A voice in the style of a Tianjin crosstalk performer (the supporting role).</td><td>Chinese</td></tr><tr><td>Cantonese-Kiki</td><td>Kiki</td><td>A sweet best friend from Hong Kong.</td><td>Cantonese</td></tr><tr><td>Sichuan-Eric</td><td>Eric</td><td>A man from Chengdu, Sichuan, who is unconventional and stands out from the crowd.</td><td>Chinese</td></tr></tbody></table>

## FAQ <span id="01af93d910psq" />

## When I input a video file, what content is translated? <span id="81f32345fe0c8" />

The model translates the video's audio track. Visual information improves translation accuracy.

For example, if the audio says "This is a mask":

- When the video shows a medical mask, the model translates it as "This is a medical mask."
- When the video shows a masquerade mask, the model translates it as "This is a masquerade mask."

## API reference <span id="f768813250ms7" />

For full input and output parameter details, see [Audio and video translation - Qwen](/en/model-studio/qwen3-livetranslate-flash-api).
