全部產品
Search
文件中心

Alibaba Cloud Model Studio:即時語音/音視頻翻譯-千問

更新時間:Oct 11, 2026

qwen3.5-livetranslate-flash-realtime 是視覺增強型即時翻譯模型,支援 60 種語言互譯(其中 29 種支援音頻+文本輸出、31 種僅支援文本輸出),可同時處理音頻與映像輸入,適用於即時視頻流或本地視頻檔案,利用視覺上下文資訊提升翻譯準確性,並即時輸出高品質的翻譯文本與音頻。

線上體驗參見通過Function Compute一鍵部署。

功能特性

  • 多語言支援:支援 60 種語言互譯,其中 29 種支援音頻+文本輸出、31 種僅支援文本輸出,覆蓋中文、英語、法語、德語、俄語、日語、韓語、西班牙語、葡萄牙語、阿拉伯語等主流語種。
  • 視覺增強:利用視覺內容提升翻譯準確性。模型通過分析畫面中的口型、動作和文字,改善在嘈雜環境下或一詞多義情境中的翻譯效果。
  • 2.3 秒延遲:實現低至 2.3 秒的同傳延遲。
  • 即時說話人分離:支援在多人交替發言時區分不同說話人及其發言內容,讓聽眾清楚了解「誰說了什麼」。
  • 無損同傳:通過語義單元預測技術,解決跨語言語序問題。即時翻譯品質接近離線翻譯結果。
  • 音色自然:產生音色自然的擬人語音。模型能根據源語音內容,自適應調節語氣和情感。
  • 配置熱詞:通過熱詞提升特定詞彙的翻譯準確性。
  • 聲音複刻:支援複刻發言人音色用於翻譯播報,讓輸出聽起來像本人說外語。支援即時複刻和使用預先複刻的固定音色。

如何使用

1. 配置串連

透過 WebSocket 接入時,需要以下配置項:

支援透過 AOQ、WebRTC 和 WebSocket 協定接入。如果是用戶端對接,且更看重穩定的延遲、弱網下的互動能力、即時雙工的降噪與回聲消除,可優先考慮 AOQ,協議對比與選型請參見Realtime API 概述。

配置項說明

調用地址

華北2(北京)地區:wss://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api-ws/v1/realtime

新加坡地區:wss://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api-ws/v1/realtime

調用時請將{WorkspaceId}替換為真實的業務空間ID。

查詢參數

查詢參數為model,需指定為訪問的模型名。樣本:?model=qwen3.8-livetranslate-flash-realtime

訊息頭

使用 Bearer Token 鑒權:Authorization: Bearer DASHSCOPE_API_KEY

DASHSCOPE_API_KEY 是您在百鍊上申請的API-KEY。

可通過以下 Python 範例程式碼建立串連。

WebSocket 串連 Python範例程式碼

# pip install websocket-client
import json
import websocket
import os

API_KEY=os.getenv("DASHSCOPE_API_KEY")
API_URL = "wss://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api-ws/v1/realtime?model=qwen3.8-livetranslate-flash-realtime"

headers = [
    "Authorization: Bearer " + API_KEY
]

def on_open(ws):
    print(f"Connected to server: {API_URL}")
def on_message(ws, message):
    data = json.loads(message)
    print("Received event:", json.dumps(data, indent=2))
def on_error(ws, error):
    print("Error:", error)

ws = websocket.WebSocketApp(
    API_URL,
    header=headers,
    on_open=on_open,
    on_message=on_message,
    on_error=on_error
)

ws.run_forever()

2. 配置語種、輸出模態與音色

傳送 session.update,收到 session.updated 後再傳送音訊。

  • 目標語言:透過 session.translation.language 設定,預設為 en(英語),可選值見支援的語言。使用 qwen3.8-livetranslate-flash-realtime 時,來源語言由模型自動識別。

    說明使用 qwen3.5-livetranslate-flash-realtime 時,如需指定來源語言,需透過 session.input_audio_transcription.language 設定;省略時自動識別。

  • 輸出方式:使用 qwen3.8-livetranslate-flash-realtime 時,將 session.output_modalities 設為 ["text"] 可僅傳回譯文,設為 ["text", "audio"] 可同時傳回譯文和譯音(預設)。僅支援文字的目標語言必須使用 ["text"]。

    說明使用 qwen3.5-livetranslate-flash-realtime 時,輸出模態欄位為 session.modalities,可選值及預設值相同。

  • 原文識別:使用 qwen3.8-livetranslate-flash-realtime 時,原文識別始終開啟,不支援關閉。透過 conversation.item.input_audio_transcription.delta 接收增量,透過 conversation.item.input_audio_transcription.completed 接收完整結果。

    說明使用 qwen3.5-livetranslate-flash-realtime 時,原文識別預設開啟。如需調整,需透過 session.input_audio_transcription.model 設定:qwen3-asr-flash-realtime 表示開啟,null 表示關閉。增量透過 conversation.item.input_audio_transcription.text 傳回,完整結果透過 conversation.item.input_audio_transcription.completed 傳回。

  • 音訊與音色:使用 qwen3.8-livetranslate-flash-realtime 時,預設輸入為 16000 Hz PCM,輸出為 24000 Hz PCM,預設音色為 Tina。可透過 session.created 傳回的 session.audio.output.voice 查看音色。如需保留說話人的音色,參見聲音複刻。

    說明使用 qwen3.5-livetranslate-flash-realtime 時,透過 session.sample_rate、session.input_audio_format 和 session.output_audio_format 設定音訊,透過 session.voice 設定音色,預設音色同樣為 Tina。

  • 熱詞:透過 session.translation.corpus.phrases 指定品牌拼寫或固定譯法,詳見設定熱詞。

    說明建議熱詞不超過1000個。

{"type": "session.update", "session": {"output_modalities": ["text", "audio"], "translation": {"language": "en"}}}

3. 輸入音頻與圖片

用戶端通過 input_audio_buffer.append 和 input_image_buffer.append 事件發送 Base 64 編碼的音頻和圖片資料。音頻輸入是必需的;圖片輸入是可選的。

圖片可以來自本地檔案,或從視頻流中即時採集。

使用 qwen3.8-livetranslate-flash-realtime 時,預設採用 session.audio.input.turn_detection.type = speaker_detection,持續傳送音訊後,由服務端自動偵測語音起止並產生翻譯回應,無需逐句手動提交。配置方法與說話人標識的處理見區分發言人。

qwen3.5-livetranslate-flash-realtime:VAD 與 Manual 模式

模型判斷一段語音"說完了"的方式,取決於turn_detection參數配置的 VAD 模式或 Manual 模式:

4. 接收模型響應

使用 qwen3.8-livetranslate-flash-realtime 時,依輸出模態接收回應:

  • 原文:累加 conversation.item.input_audio_transcription.delta,透過 conversation.item.input_audio_transcription.completed 取得完整原文。
  • 譯文:僅文字使用 response.text.delta;文字和音訊使用 response.audio_transcript.delta。將同一訊息項目的 delta 按接收順序累加,不覆蓋先前內容。
  • 譯音:將 response.audio.delta 的 delta 欄位從 Base64 解碼,按順序播放或儲存。

response.done 表示本次翻譯回應結束,須檢查 response.status 確認是否成功;會話仍可繼續傳送音訊。

qwen3.5-livetranslate-flash-realtime:回應事件差異

  • 輸出源語言識別結果

    通過session.input_audio_transcription.model參數配置。設定為qwen3-asr-flash-realtime後,服務端會在翻譯的同時返回輸入音訊語音辨識結果(源語言原文)。

    啟用後,服務端會返回以下事件:

    • conversation.item.input_audio_transcription.text:流式返回識別結果。
    • conversation.item.input_audio_transcription.completed:識別完成後返回最終結果。
    • conversation.item.input_audio_transcription.failed:識別失敗時返回錯誤資訊。

翻譯響應基於流式語音同步產生,通常無需等待語音結束(參見上一節 VAD/Manual 模式說明)。模型的響應格式取決於配置的輸出模態。

重要即時語音翻譯模型使用 response.text.text 事件返回增量文本,與全雙工系統語音對話(Omni)模型的 response.text.delta 事件不同,兩者欄位結構和語義有差異,請勿混用。

5. 結束會話

音頻發送完畢後,用戶端必鬚髮送 session.finish 事件通知服務端,然後等待服務端返回 session.finished 事件後再關閉 WebSocket 串連。

重要如果不發送 session.finish,服務端無法得知音頻輸入已完成,會導致最後一段語音的識別和翻譯結果丟失,串連也可能長時間處於等待狀態。請務必在關閉串連前發送該事件。

支援的模型

推薦模型

模型名稱版本上下文長度最大輸入最大輸出
(Token數)
qwen3.8-livetranslate-flash-realtime

穩定版

53,248

49,152

4,096

qwen3.5-livetranslate-flash-realtime

當前能力等同 qwen3.5-livetranslate-flash-realtime-2026-05-19

穩定版

53,248

49,152

4,096

qwen3.5-livetranslate-flash-realtime-2026-05-19

快照版

快速開始

即時翻譯麥克風輸入

  1. 使用 Python 3.10 或更高版本,安裝 pyaudio:

    macOS

    brew install portaudio && pip install pyaudio
    

    Debian/Ubuntu

    sudo apt-get install python3-pyaudio
    

    CentOS

    sudo yum install -y portaudio portaudio-devel && pip install pyaudio
    

    Windows

    pip install pyaudio
    

    安裝 WebSocket 套件:pip install websocket-client。

  2. 設定以下環境變數,API Key 與業務空間需屬於連線位址所用的地區:

  3. 將下方程式碼儲存為 livetranslate_client.py,執行 python livetranslate_client.py,然後對著麥克風說話。

範例使用 qwen3.8-livetranslate-flash-realtime,將麥克風輸入翻譯為英語,即時列印譯文並播放譯音。輸入為 16000 Hz、單聲道、16 位元 PCM,播放的譯音為 24000 Hz、單聲道、16 位元 PCM。按 Ctrl+C 停止錄音後,範例傳送 session.finish,繼續接收並播放剩餘結果,收到 session.finished 後關閉連線。建議使用耳機,避免譯音再次進入麥克風。

import base64
import json
import os
import signal
import threading
import time

import pyaudio
import websocket

model = "qwen3.8-livetranslate-flash-realtime"
workspace_id = os.environ["DASHSCOPE_WORKSPACE_ID"]
api_key = os.environ["DASHSCOPE_API_KEY"]
url = (
    f"wss://{workspace_id}.ap-southeast-1.maas.aliyuncs.com"
    f"/api-ws/v1/realtime?model={model}"
)
stop_recording = False
send_errors = []
ws = None
audio = None
input_stream = None
output_stream = None
sender = None
previous_sigint_handler = None


def receive():
    event = json.loads(ws.recv())
    if event.get("type") == "error" or event.get("code"):
        raise RuntimeError(event)
    return event


def stop_input(signum, frame):
    global stop_recording
    stop_recording = True


def send_audio():
    try:
        while not stop_recording:
            chunk = input_stream.read(1600)
            ws.send(json.dumps({
                "type": "input_audio_buffer.append",
                "audio": base64.b64encode(chunk).decode("ascii"),
            }))
    except Exception as error:
        send_errors.append(error)
    finally:
        try:
            ws.send(json.dumps({"type": "session.finish"}))
        except Exception as error:
            send_errors.append(error)
            ws.close()


def receive_translation():
    while True:
        event = receive()
        event_type = event.get("type")
        if event_type in ("response.text.delta", "response.audio_transcript.delta"):
            print(event["delta"], end="", flush=True)
        elif event_type == "response.audio.delta":
            output_stream.write(base64.b64decode(event["delta"]))
        elif event_type == "response.done":
            if event["response"]["status"] != "completed":
                raise RuntimeError(event["response"])
            print()
        elif event_type == "session.finished":
            return


try:
    ws = websocket.create_connection(
        url, header={"Authorization": f"Bearer {api_key}"}, timeout=30
    )
    while receive().get("type") != "session.created":
        pass
    ws.send(json.dumps({
        "type": "session.update",
        "session": {
            "output_modalities": ["text", "audio"],
            "translation": {"language": "en"},
        },
    }))
    while receive().get("type") != "session.updated":
        pass
    audio = pyaudio.PyAudio()
    input_stream = audio.open(
        format=pyaudio.paInt16, channels=1, rate=16000,
        input=True, frames_per_buffer=1600,
    )
    output_stream = audio.open(
        format=pyaudio.paInt16, channels=1, rate=24000, output=True,
    )
    print("請開始說話;按 Ctrl+C 停止錄音並等待剩餘翻譯。")
    previous_sigint_handler = signal.signal(signal.SIGINT, stop_input)
    sender = threading.Thread(target=send_audio, daemon=True)
    sender.start()
    receive_translation()
    stop_recording = True
    sender.join()
    if send_errors:
        raise send_errors[0]
except Exception:
    if send_errors:
        raise send_errors[0]
    raise
finally:
    stop_recording = True
    if ws is not None:
        ws.close()
    if sender is not None:
        sender.join()
    for stream in (input_stream, output_stream):
        if stream is not None:
            stream.stop_stream()
            stream.close()
    if audio is not None:
        audio.terminate()
    if previous_sigint_handler is not None:
        signal.signal(signal.SIGINT, previous_sigint_handler)

配置熱詞

對於需要固定譯法或區分同音詞的翻譯場景,新增熱詞可以提升翻譯準確性。例如:

  • 固定譯法:阿里雲 slogan「計算,為了無法計算的價值。」約定的英文是「Computing, for the value beyond computation.」,需要保留措辭和語序。
  • 同音品牌名稱:Qoder 與普通詞 coder 發音相同。如果說的是產品 Qoder,譯文需要保留品牌拼寫。

以下是兩組測試的輸出對照,每組使用相同音訊,僅改變熱詞配置。

輸入音訊內容未配置熱詞配置熱詞
計算,為了無法計算的價值。Calculate. For a value that cannot be calculated.Computing, for the value beyond computation.
Qoder 是面向真實工作的 Agentic 平台。Coder is an agentic platform designed for real-world work.Qoder, is an agentic platform designed for real-world work.

配置方法

熱詞透過 session.translation.corpus.phrases 配置,以 key-value 形式將來源語言詞語或片語映射為目標譯法。

在快速開始的首次 session.update 請求中,將以下 translation 物件合入現有 session,保留會話已有的輸出模態、音色等設定。

{
  "event_id": "configure-hotwords",
  "type": "session.update",
  "session": {
    "translation": {
      "language": "en",
      "corpus": {
        "phrases": {
          "計算,為了無法計算的價值。": "Computing, for the value beyond computation.",
          "Qoder": "Qoder"
        }
      }
    }
  }
}

傳送音訊前完成配置,收到伺服器的 session.updated 後,再開始傳送 input_audio_buffer.append。

區分發言人

qwen3.8-livetranslate-flash-realtime 可識別不同發言人,透過 speaker_id 標識。根據該標識關聯原文與譯文後,可以按發言人顯示字幕。

保留預設 speaker_detection,或在 session.update 中明確設定。threshold 用於區分靜音與有效人聲,低於閾值的聲音會被過濾,不會輸入模型。該閾值固定為 0.5。

{"type": "session.update", "session": {"audio": {"input": {"turn_detection": {"type": "speaker_detection", "threshold": 0.5}}}}}
  1. 從 input_audio_buffer.speech_started 取得 speaker_id 和原文 item_id。
  2. 從 conversation.item.input_audio_transcription.delta 取得同一 item_id 的原文。
  3. 從譯文的 conversation.item.created 取得 item.id 和事件頂層的 previous_item_id,將譯文項目關聯到原文項目。
  4. 收到譯文增量後,以 item_id 找到原文和說話人,再更新字幕。

將以下變數與函式放在快速開始的麥克風範例中,位於 def receive_translation(): 之前。在該函式內,緊接 event = receive() 呼叫 handle_speaker_event(event),並將原本的 print(event["delta"], end="", flush=True) 替換為 pass,由下方片段統一輸出字幕。原文或譯文更新時會列印發言人標識、原文與譯文,方便按發言人顯示字幕。保留原有音訊與會話結束處理。

speaker_by_source = {}
source_by_translation = {}
source_text = {}
translation_text = {}


def show_subtitle(translation_id):
    source_id = source_by_translation.get(translation_id)
    if source_id not in speaker_by_source or translation_id not in translation_text:
        return
    print({
        "speaker_id": speaker_by_source[source_id],
        "source": source_text.get(source_id, ""),
        "translation": translation_text[translation_id],
    })


def handle_speaker_event(event):
    event_type = event.get("type")
    if event_type in ("response.text.delta", "response.audio_transcript.delta"):
        item_id = event["item_id"]
        translation_text[item_id] = translation_text.get(item_id, "") + event["delta"]
        show_subtitle(item_id)
        return
    if event_type == "conversation.item.created":
        item = event["item"]
        if any(part.get("type") == "input_audio" for part in item.get("content", [])):
            return
        source_id = event.get("previous_item_id")
        if item.get("role") == "assistant" and source_id is not None:
            source_by_translation[item["id"]] = source_id
            show_subtitle(item["id"])
        return
    if event_type == "input_audio_buffer.speech_started" and "speaker_id" in event:
        source_id = event["item_id"]
        speaker_by_source[source_id] = event["speaker_id"]
    elif event_type == "conversation.item.input_audio_transcription.delta":
        source_id = event["item_id"]
        source_text[source_id] = source_text.get(source_id, "") + event["delta"]
    elif event_type == "conversation.item.input_audio_transcription.completed":
        source_id = event["item_id"]
        source_text[source_id] = event["transcript"]
    else:
        return
    for translation_id, mapped_source in source_by_translation.items():
        if mapped_source == source_id:
            show_subtitle(translation_id)

定義見說話人標識和原文與譯文關聯。

利用映像提升翻譯準確率

千問即時翻譯系列模型支援圖像輸入,輔助音訊翻譯,適用於同音異義、低頻專有名詞識別情境。建議每秒傳送不超過2張圖片。

將以下樣本圖片下載到本地:口罩.png面具.png

複用快速開始的麥克風輸入與連線設定:

  1. 安裝圖像處理套件:pip install Pillow。
  2. 將 translation.language 改為 zh,執行範例時對著麥克風說 What is mask?。
  3. 在麥克風範例的 def send_audio(): 之前加入下方圖片讀取程式碼,並用新的 send_audio() 替換原函式。片段使用已有的 input_stream、stop_recording、ws、send_errors 和匯入項目。
import io
from PIL import Image

IMAGE_PATH = "medical-mask.png"
# IMAGE_PATH = "masquerade-mask.png"
with Image.open(IMAGE_PATH) as image:
    buffer = io.BytesIO()
    image.convert("RGB").save(buffer, format="JPEG")
image_bytes = buffer.getvalue()
if len(image_bytes) > 500_000:
    raise ValueError("JPEG > 500 KB")
image_b64 = base64.b64encode(image_bytes).decode("ascii")


def send_audio():
    try:
        last_image_time = None
        while not stop_recording:
            chunk = input_stream.read(1600)
            ws.send(json.dumps({
                "type": "input_audio_buffer.append",
                "audio": base64.b64encode(chunk).decode("ascii"),
            }))
            now = time.monotonic()
            if last_image_time is None or now - last_image_time >= 0.5:
                ws.send(json.dumps({
                    "type": "input_image_buffer.append",
                    "image": image_b64,
                }))
                last_image_time = now
    except Exception as error:
        send_errors.append(error)
    finally:
        try:
            ws.send(json.dumps({"type": "session.finish"}))
        except Exception as error:
            send_errors.append(error)
            ws.close()

圖片與音訊交錯傳送,每 0.5 秒最多一張圖片。分別使用兩張圖片,比較 mask 是否譯成相應物品;按 Ctrl+C 停止錄音後,範例會請求結束會話並接收剩餘結果。

聲音複刻

模型支援發言人聲音複刻功能,支援使用預先複刻的固定音色,也支援在翻譯過程中即時複刻,讓翻譯播報聽起來像本人說外語。適用於跨語言演講、個人主播、視頻翻譯等需要保留個人音色的情境。

即時複刻:qwen3.8-livetranslate-flash-realtime 和 qwen3.5-livetranslate-flash-realtime 在翻譯過程中從輸入音訊複刻音色,不額外收取複刻費用;模型呼叫仍按 Token 用量計費。

預先建立音色:透過聲音複刻 API建立音色,按 $0.01/個計費,建立失敗不計費;免費額度的地區、次數與有效期限見該計費說明。使用已建立的音色翻譯時,仍按模型呼叫的 Token 用量計費。

在 session.update 中設定以下參數啟用:

  • session.enable_voice_clone:設定為 true,啟用聲音複刻。

  • session.voice_clone_options.frequency:控制聲音複刻時機,取值如下:

    • never:使用預先建立的固定音色,本次翻譯不重新提取音色。將 session.voice 設為自己的複刻音色 ID。
    • once:在會話開始時從輸入音訊提取一次音色,本次會話後續翻譯複用該音色。「一次」指提取次數,並非只生成一次譯音。適合單人演講,session.voice 必須設為 default。
    • always:每次生成翻譯音訊前重新提取音色,讓譯音跟隨發言人變化。適合多人對話,session.voice 必須設為 default。
  • session.voice:指定輸出音色,取值取決於 frequency 的設定。

    • 設定為 default:搭配 frequency 為 once 或 always 使用,複刻輸入音訊音色,複刻完成前使用預設音色過渡。
    • 設定為使用者複刻的音色 ID(如 qwen-translate-vc-xxx-yyy-zzz):搭配 frequency 為 never 使用。需提前通過聲音複刻API準備音色,target_model 需指定為實際使用的翻譯模型。

當 frequency 為 once 或 always 時,voice 必須設定為 default,不可設定為其他預設音色,否則服務端會返回錯誤。

聲音複刻配置樣本

使用 qwen3.8-livetranslate-flash-realtime 時,將對應的 session.update 配置替換到快速開始的該模型範例中。

說明使用 qwen3.5-livetranslate-flash-realtime 時,將範例中的 session.output_modalities 替換為 session.modalities,其餘複刻參數相同。連線時需將 model 指定為該模型,並依接收模型回應中的對應說明處理回應事件。

使用預先複刻的音色(適合需要固定音色的情境):

{
    "type": "session.update",
    "session": {
        "output_modalities": ["text","audio"],
        "voice": "qwen-translate-vc-xxx-yyy-zzz",
        "translation": {
            "language": "en"
        },
        "enable_voice_clone": true,
        "voice_clone_options": {
            "frequency": "never"
        }
    }
}

在目前會話中複用同一音色(適合單人演講):

{
    "type": "session.update",
    "session": {
        "output_modalities": ["text","audio"],
        "voice": "default",
        "translation": {
            "language": "en"
        },
        "enable_voice_clone": true,
        "voice_clone_options": {
            "frequency": "once"
        }
    }
}

讓譯音跟隨發言人變化(適合多人對話):

{
    "type": "session.update",
    "session": {
        "output_modalities": ["text","audio"],
        "voice": "default",
        "translation": {
            "language": "en"
        },
        "enable_voice_clone": true,
        "voice_clone_options": {
            "frequency": "always"
        }
    }
}

通過Function Compute一鍵部署

控制台暫不支援體驗。可通過以下方式一鍵部署:

  1. 開啟我們寫好的Function Compute模板,填入 API Key, 單擊建立並部署預設環境即可線上體驗。

  2. 等待約一分鐘,在 環境詳情 > 環境資訊 中擷取訪問網域名稱,將訪問網域名稱的http改成https(例如https://qwen-livetranslate-flash-realtime-intl.fcv3.xxx.ap-southeast-1.fc.devsapp.net/),通過該連結與模型互動。

    重要此連結使用自我簽署憑證,僅用於臨時測試。首次訪問時,瀏覽器會顯示安全警告,這是預期行為,請勿在生產環境使用。如需繼續,請按瀏覽器提示操作(如點擊“進階” → “繼續前往(不安全)”)。

如需開通存取控制許可權,請跟隨頁面指引操作。

通過資源資訊-函數資源查看專案原始碼。

Function Compute與阿里雲百鍊均為新使用者提供免費額度,可以覆蓋簡單調試所需成本,額度耗盡後隨用隨付。只有在訪問的情況下會產生費用。

互動流程

使用 qwen3.8-livetranslate-flash-realtime 時,主要互動流程如下:

階段用戶端伺服器
建立連線位址與驗證session.created
設定翻譯session.updatesession.updated 或 error
輸入持續傳送 input_audio_buffer.append,按需傳送圖片說話人標識與原文識別事件
接收累加譯文、解碼譯音增量事件,response.done 表示本次回應結束
結束停止輸入、傳送 session.finish,繼續接收session.finished 後關閉連線,等待播放結束

qwen3.5-livetranslate-flash-realtime:互動流程

即時語音翻譯的互動流程遵循標準的 WebSocket 事件驅動模型。語音起止的判斷方式取決於 VAD 模式或 Manual 模式(參見3. 輸入音頻與圖片),下表以 VAD 模式(預設)為主線,並標註了 Manual 模式下不同的服務端事件。

生命週期用戶端事件服務端事件

會話初始化

session.update

會話配置

session.created

會話已建立

session.updated

會話配置已更新

使用者音頻輸入

input_audio_buffer.append

添加音頻到緩衝區

input_image_buffer.append

添加圖片到緩衝區

input_audio_buffer.commit

(僅 Manual 模式)提交音頻緩衝區

VAD 模式:

input_audio_buffer.speech_started

檢測到語音開始

input_audio_buffer.speech_stopped

檢測到語音結束,服務端自動認可音頻緩衝區

Manual 模式:

input_audio_buffer.committed

用戶端發送 input_audio_buffer.commit 後返回,確認音頻緩衝區已提交

服務端音訊輸出

無

response.created

服務端開始產生響應

response.output_item.added

響應時有新的輸出內容

conversation.item.created

對話中建立新的訊息項

response.content_part.added

新的輸出內容添加到assistant message

response.text.text

僅文本模態下增量產生的翻譯文本

response.audio_transcript.text

音頻+文本模態下增量產生的譯文

response.audio.delta

模型增量產生的音頻

response.text.done

僅文本模態下翻譯文本完成

response.audio_transcript.done

音頻+文本模態下譯文產生完成

response.audio.done

音頻產生完成

response.content_part.done

Assistant message 的文本或音頻內容流式輸出完成

response.output_item.done

Assistant message 的整個輸出項串流完成

response.done

響應完成

會話結束

session.finish

通知服務端音頻發送完畢

session.finished

服務端完成處理,會話結束

重要音頻發送結束後,必鬚髮送 session.finish 事件並等待 session.finished 響應後再中斷連線。如果直接關閉 WebSocket 而不發送 session.finish,服務端無法得知音頻輸入已結束,將導致最後一段語音的識別和翻譯結果丟失。

API 參考

計費說明

  • Qwen3.8-LiveTranslate-Flash-Realtime / Qwen3.5-LiveTranslate-Flash-Realtime
    • 音頻:輸入每秒音頻消耗 7 Token,輸出每秒音頻消耗 12.5 Token。
    • 圖片:每輸入 32*32 像素消耗 0.5 Token。
    • 文本:啟用源語言語音辨識功能後,服務除返回翻譯結果外,還會返回輸入音訊語音辨識文本(即源語言原文),該識別文本將按輸出文本的 Token 標準計費。 Token 費用請參見選擇模型。

即時複刻:qwen3.8-livetranslate-flash-realtime 和 qwen3.5-livetranslate-flash-realtime 在翻譯過程中從輸入音訊複刻音色,不額外收取複刻費用;模型呼叫仍按 Token 用量計費。

預先建立音色:透過聲音複刻 API建立音色,按 $0.01/個計費,建立失敗不計費;免費額度的地區、次數與有效期限見該計費說明。使用已建立的音色翻譯時,仍按模型呼叫的 Token 用量計費。

限流說明

模型的限流規則請參見限流。

支援的語種

下表中的語種代碼可用於指定源語種與目標語種。

部分目標語種僅支援輸出文本,不支援輸出音頻。

語種代碼

語種

支援的輸出模態

zh

中文

音頻+文本

en

英語

音頻+文本

ar

阿拉伯語

音頻+文本

de

德語

音頻+文本

fr

法語

音頻+文本

es

西班牙語

音頻+文本

pt

葡萄牙語

音頻+文本

id

印尼語

音頻+文本

it

意大利語

音頻+文本

ko

韓語

音頻+文本

ru

俄語

音頻+文本

th

泰語

音頻+文本

vi

越南語

音頻+文本

ja

日語

音頻+文本

tr

土耳其語

音頻+文本

hi

印地語

音頻+文本

ms

馬來語

音頻+文本

nl

荷蘭語

音頻+文本

ur

烏爾都語

音頻+文本

nb

挪威語

音頻+文本

sv

瑞典語

音頻+文本

da

丹麥語

音頻+文本

he

希伯來語

音頻+文本

fi

芬蘭語

音頻+文本

pl

波蘭語

音頻+文本

is

冰島語

音頻+文本

cs

捷克語

音頻+文本

fil

菲律賓語

音頻+文本

fa

波斯語

音頻+文本

yue

粵語

文本

el

希臘語

文本

af

南非荷蘭語

文本

ast

阿斯圖里亞斯語

文本

be

白俄羅斯語

文本

bg

保加利亞語

文本

bn

孟加拉語

文本

bs

波斯尼亞語

文本

ca

加泰羅尼亞語

文本

ceb

宿務語

文本

et

愛沙尼亞語

文本

gl

加利西亞語

文本

gu

古吉拉特語

文本

hr

克羅地亞語

文本

hu

匈牙利語

文本

jv

爪哇語

文本

kk

哈薩克語

文本

kn

卡納達語

文本

ky

柯爾克孜語

文本

lv

拉脫維亞語

文本

mk

馬其頓語

文本

ml

馬拉雅拉姆語

文本

mr

馬拉地語

文本

pa

旁遮普語

文本

ro

羅馬尼亞語

文本

sk

斯洛伐克語

文本

sl

斯洛文尼亞語

文本

sw

斯瓦希裡語

文本

tg

塔吉克語

文本

az

阿塞拜疆語

文本

uk

烏克蘭語

文本

支援的音色

即時翻譯支援的音色與voice參數取值參見音色列表。