Skip to main content
語音轉語音

音視頻檔案翻譯-千問

千問3-LiveTranslate-Flash 是音視頻翻譯模型,支援 18 種語言(包括中文、英文、俄文、法文等)互譯,可結合視覺上下文提升翻譯準確性,並輸出文本與語音。

工作方式

  1. 設定語種:參考支援的語種,在 translation_options 參數中設定源語種 (source_lang) 和目標語種 (target_lang)。
    省略 source_lang將啟用自動檢測,但指定語種能提升翻譯準確率。
  2. 輸入待翻譯檔案messages 數組中有且僅有一條 roleuser 的訊息,content欄位需傳入待翻譯音頻/視頻的 URL 或 Base64 資料。
  3. 控制輸出模態:通過 modalities 參數控制輸出模態:
    • ["text"]:僅輸出文本;
    • ["text","audio"]:輸出文本和 Base 64 編碼的音頻。
      若輸出音頻,需在audio參數中設定音色(voice)。參考支援的音色
以下為使用 OpenAI Python SDK 的核心代碼:
# 匯入依賴與建立用戶端...
completion = client.chat.completions.create(
    model="qwen3-livetranslate-flash",    # 選擇模型
    # messages 僅包含一條 user 訊息,content 為待翻譯檔案
    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"
          }
        }
      ]
    }
  ],
    # translation_options 非 OpenAI 標準參數,需通過 extra_body 傳入
    extra_body={"translation_options": {"source_lang": "zh", "target_lang": "en"}},
    # 樣本:輸出文本和音頻
    modalities = ["text","audio"],
    audio={"voice": "Cherry", "format": "wav"}
)
使用限制
  • 單輪翻譯:模型專為翻譯任務設計,不支援多輪對話。
  • 無 System Message:不支援通過 system 角色設定全域行為。
  • 調用方式:僅支援相容 OpenAI 協議的流式輸出。
響應解析 chunk為流式響應對象:
  • 文本:讀取 chunk.choices[0].delta.content
  • 音頻:讀取 chunk.choices[0].delta.audio["data"],模型輸出音訊採樣率是 24kHz。

支援的模型

模型名稱版本上下文長度最大輸入最大輸出
(Token數)
qwen3-livetranslate-flash
當前能力等同於qwen3-livetranslate-flash-2025-12-01
穩定版53,24849,1524,096
qwen3-livetranslate-flash-2025-12-01快照版

如何使用

qwen3-livetranslate-flash 模型支援音頻或視頻輸入,並輸出文本與音頻。 請確保已擷取API Key配置API Key到環境變數。若通過OpenAI SDK調用,需安裝SDK 以下樣本使用音頻輸入。如需輸入視頻,請取消對應代碼的注釋。
import os
from openai import OpenAI

client = OpenAI(
    # 若沒有配置環境變數,請用阿里雲百鍊API Key將下行替換為:api_key="sk-xxx",
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    # 以下為新加坡地區URL,調用時請將{WorkspaceId}替換為真實的業務空間ID,各地區的URL不同。
    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",
                },
            }
        ],
    }
]

# ----------------視頻輸入(需取消注釋)----------------
# 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},
    extra_body={"translation_options": {"source_lang": "zh", "target_lang": "en"}},
)

for chunk in completion:
    print(chunk)
此樣本使用公網檔案 URL。若使用本地檔案,請參見輸入 Base 64 編碼的本地檔案中的音頻與視頻部分。

解析 Base64 音頻資料

模型以流式 Base 64 編碼格式輸出音頻。可採用以下兩種方式處理資料:
  • 拼接解碼:拼接所有返回的 Base64 片段,待產生結束後統一解碼,儲存為音頻檔案。
  • 即時播放:即時解碼每個 Base64 片段並直接播放。
# Installation instructions for pyaudio:
# APPLE Mac OS X
#   brew install portaudio
#   pip install pyaudio
# Debian/Ubuntu
#   sudo apt-get install python-pyaudio python3-pyaudio
#   or
#   pip install pyaudio
# CentOS
#   sudo yum install -y portaudio portaudio-devel && pip install pyaudio
# Microsoft Windows
#   python -m pip install pyaudio

import os
from openai import OpenAI
import base64
import numpy as np
import soundfile as sf

# 初始化OpenAI用戶端
client = OpenAI(
    # 若沒有配置環境變數,請用阿里雲百鍊API Key將下行替換為:api_key="sk-xxx",
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    # 以下為華北2(北京)地區的URL。請將 {WorkspaceId} 替換為您的百鍊業務空間ID,各地區的URL不同。
    base_url="https://{WorkspaceId}.cn-beijing.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"}},
)

# 方式1: 待產生結束後再進行解碼
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("audio_assistant_py.wav", audio_np, samplerate=24000)

# 方式2: 邊產生邊解碼(使用方式2請將方式1的代碼進行注釋)
# # 初始化 PyAudio
# import pyaudio
# import time
# 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_string = chunk.choices[0].delta.audio["data"]
#                 wav_bytes = base64.b64decode(audio_string)
#                 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()

計費說明

  • 音頻
  • 視頻
輸入或輸出每秒音頻均消耗 12.5 Token。
Token 費用請參見選擇模型

API 參考

qwen3-livetranslate-flash 模型的輸入輸出參數請參見音視頻翻譯-通義千問

支援的語種

下表中的語種代碼可用於指定源語種與目標語種。
部分目標語種僅支援輸出文本,不支援輸出音頻。

語種代碼

語種

支援的輸出模態

en

英語

音頻、文本

zh

中文

音頻、文本

ru

俄語

音頻、文本

fr

法語

音頻、文本

de

德語

音頻、文本

pt

葡萄牙語

音頻、文本

es

西班牙語

音頻、文本

it

意大利語

音頻、文本

id

印尼語

文本

ko

韓語

音頻、文本

ja

日語

音頻、文本

vi

越南語

文本

th

泰語

文本

ar

阿拉伯語

文本

yue

粵語

音頻、文本

hi

印地語

文本

el

希臘語

文本

tr

土耳其語

文本

支援的音色

音色名voice參數音色效果描述支援的語種
芊悅Cherry陽光積極、親切自然小姐姐。中文、英語、法語、德語、俄語、意大利語、西班牙語、葡萄牙語、日語、韓語
不吃魚Nofish不會翹舌音的設計師。中文、英語、法語、德語、俄語、意大利語、西班牙語、葡萄牙語、日語、韓語
上海-阿珍Jada風風火火的滬上阿姐。中文
北京-曉東Dylan北京胡同裡長大的少年。中文
四川-晴兒Sunny甜到你心裡的川妹子。中文
天津-李彼得Peter天津相聲,專業捧人。中文
粵語-阿清Kiki甜美的港妹閨蜜。粵語
四川-程川Eric一個跳脫市井的四川成都男子。中文

常見問題

Q:傳入的視訊檔案時,翻譯的是什麼內容?

A:翻譯視頻中的音頻內容,視覺資訊用於輔助上下文理解,以提升準確率。 樣本 當音頻內容為This is a mask時:
  • 若畫面顯示口罩,會翻譯為“這是一個口罩”;
  • 若畫面顯示面具,會翻譯為“這是一個面具”。
Token Plan
模型體驗
用量統計與效能監控
資產中心
服務支援