qwen3-livetranslate-flash は、OpenAI 互換のチャット補完エンドポイントを通じて音声および動画を翻訳します。すべてのリクエストはストリーミングされます。
注: DashScope インターフェイスはサポートされていません。
サポートされるモデル
-
qwen3-livetranslate-flash -
qwen3-livetranslate-flash-2025-12-01
前提条件
開始する前に、以下の手順を完了してください。
-
OpenAI SDK のインストール(Python または Node.js 向け)
エンドポイント
| リージョン | SDK base_url |
HTTP エンドポイント |
|---|---|---|
| シンガポール | https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1 |
POST https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1/chat/completions |
| 北京 | https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/compatible-mode/v1 |
POST https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/compatible-mode/v1/chat/completions |
Model Studio では、シンガポールリージョン向けにワークスペース専用ドメインがリリースされました:https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com。この新しい専用ドメインは、推論リクエストに対して優れたパフォーマンスと高い安定性を提供します。https://dashscope-intl.aliyuncs.com から新しいドメインへの移行を推奨します。
{WorkspaceId} はご利用のワークスペース ID です。これは Model Studio コンソールの ワークスペース詳細 ページで確認できます。既存のドメインは引き続き完全に機能します。
クイックスタート
以下の例では、音声ファイルを翻訳し、ストリーミングにより翻訳テキストとオーディオの両方を返します。中国 (北京) リージョンを使用する場合は、base_url を置き換えてください。
Python
import os
from openai import OpenAI
client = OpenAI(
api_key=os.getenv("DASHSCOPE_API_KEY"),
# 以下はシンガポールリージョンの URL です。{WorkspaceId} を実際のワークスペース ID に置き換えてください。URL はリージョンによって異なります。
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,
// 以下はシンガポールリージョンの URL です。{WorkspaceId} を実際のワークスペース ID に置き換えてください。URL はリージョンによって異なります。
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
## 以下はシンガポールリージョンの URL です。{WorkspaceId} を実際のワークスペース ID に置き換えてください。URL はリージョンによって異なります。
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_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"
},
}
],
},
]
その他のパラメーターはすべて同じです。
リクエストボディ
必須パラメーター
| パラメーター | タイプ | 説明 |
|---|---|---|
model |
string | モデル名。有効な値:qwen3-livetranslate-flash、qwen3-livetranslate-flash-2025-12-01。 |
messages |
array | メッセージの配列。ユーザーからのメッセージは 1 つだけサポートされます。 |
stream |
boolean | true である必要があります。デフォルトは false ですが、ストリーミング出力のみがサポートされているため、この値を true に設定する必要があります。 |
translation_options |
object | 翻訳構成。詳細については、「翻訳オプション」をご参照ください。これは標準的な OpenAI パラメーターではありません。Python SDK では extra_body 内で渡します。Node.js または HTTP の場合は、トップレベルで渡します。 |
オプションパラメーター
| パラメーター | タイプ | デフォルト | 説明 |
|---|---|---|---|
modalities |
array | ["text"] |
出力モダリティ。["text", "audio"] を設定するとテキストとオーディオの両方が返され、["text"] を設定するとテキストのみが返されます。 |
audio |
object | - | 出力オーディオの構成。modalities に "audio" が含まれる場合に必須です。詳細については、「オーディオ出力オプション」をご参照ください。 |
stream_options |
object | - | ストリーミング構成。詳細については、「ストリームオプション」をご参照ください。 |
max_tokens |
integer | モデルの最大値 | 生成するトークンの最大数。この制限に達するか、生成が完了すると停止します。 |
seed |
integer | - | 再現性のための乱数シード。同一のリクエストに対して同一のシードを指定すると、同一の出力が得られます。範囲:[0, 2^31-1]。 |
speech_rate |
float | 1.0 | 出力オーディオの再生速度を制御します。1.0 が通常速度、1.0 未満が低速、1.0 より大きいと高速になります。範囲:[0.5, 2.0]。 |
サンプリングパラメーター
翻訳精度を確保するため、これらのパラメーターはデフォルト値のままにしてください。
| パラメーター | タイプ | デフォルト | 範囲 | 備考 |
|---|---|---|---|---|
temperature |
float | 0.000001 | [0, 2) | 出力の多様性を制御します。 |
top_p |
float | 0.8 | (0, 1.0] | ヌクレウスサンプリングのしきい値。 |
presence_penalty |
float | 0 | [-2.0, 2.0] | 正の値を設定すると、繰り返しを抑制します。 |
top_k |
integer | 1 | >= 0 | 候補セットのサイズ。None または 100 を超える値を指定すると、top_k は無効化され、top_p のみが有効になります。標準的な OpenAI パラメーターではありません。Python SDK では extra_body を使用します。 |
repetition_penalty |
float | 1.05 | > 0 | 繰り返しシーケンスにペナルティを課します。標準的な OpenAI パラメーターではありません。Python SDK では extra_body を使用します。 |
メッセージオブジェクト
messages 配列には、role が user に設定されたオブジェクトが 1 つだけ含まれている必要があります。
content 配列のアイテムのプロパティ:
| フィールド | タイプ | 必須 | 説明 |
|---|---|---|---|
type |
string | はい | input_audio、動画入力の場合は video_url。 |
input_audio |
object | type が input_audio |
音声入力。以下を参照してください。 |
video_url |
object | type が video_url |
動画入力。以下を参照してください。 |
input_audio オブジェクト:
| フィールド | タイプ | 必須 | 説明 |
|---|---|---|---|
data |
string | はい | 音声ファイルの URL または Base64 データ URL。ローカルファイルの場合は、「Base64 エンコードされたローカルファイルの入力」をご参照ください。 |
format |
string | はい | 音声フォーマット(例:mp3、wav)。 |
video_url オブジェクト:
| フィールド | タイプ | 必須 | 説明 |
|---|---|---|---|
url |
string | はい | 動画ファイルの公開 URL または Base64 データ URL。ローカルファイルの場合は、「Base64 エンコードされたローカルファイルの入力」をご参照ください。 |
翻訳オプション
| フィールド | タイプ | 必須 | 説明 |
|---|---|---|---|
source_lang |
string | いいえ | ソース言語の英語フルネーム。「サポートされる言語」をご参照ください。省略した場合、言語は自動検出されます。 |
target_lang |
string | はい | ターゲット言語の英語フルネーム。「サポートされる言語」をご参照ください。 |
注:translation_optionsは標準的な OpenAI パラメーターではありません。Python SDK ではextra_body内で渡します。Node.js または HTTP の場合は、リクエストボディのトップレベルで渡します。
extra_body={"translation_options": {"source_lang": "zh", "target_lang": "en"}}
オーディオ出力オプション
modalities が ["text", "audio"] の場合に必須です。
| フィールド | タイプ | 必須 | 説明 |
|---|---|---|---|
voice |
string | はい | 出力オーディオの音声。「サポートされる音声」をご参照ください。 |
format |
string | はい | 出力オーディオフォーマット。wav のみがサポートされています。 |
ストリームオプション
| フィールド | タイプ | デフォルト | 説明 |
|---|---|---|---|
include_usage |
boolean | false |
true の場合、最終チャンクにトークン使用量の詳細が含まれます。 |
応答
API は一連のストリーミングチャンクを返します。各チャンクは chat.completion.chunk オブジェクトとして返されます。チャンクは、テキスト、オーディオ、トークン使用量の 3 種類に分類されます。
テキストチャンク
choices[0].delta.content に増分的な翻訳テキストが含まれます。
{
"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"
}
オーディオチャンク
choices[0].delta.audio.data に増分的な Base64 エンコードされたオーディオが含まれます。
{
"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"
}
トークン使用量チャンク
include_usage が true の場合、最終チャンクとして返されます。choices 配列は空となり、usage にトークンの内訳が含まれます。
{
"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
}
}
}
注: 動画入力の場合、prompt_tokens_details.audio_tokensには動画から抽出されたオーディオトークンが含まれます。video_tokensには動画固有のトークン数が報告されます。
応答フィールド
| フィールド | タイプ | 説明 |
|---|---|---|
id |
string | リクエスト識別子。すべてのチャンクで同一です。 |
choices |
array | 生成されたコンテンツ。最終的な使用量チャンクでは空です。 |
choices[].delta.content |
string | 増分的な翻訳テキスト。オーディオチャンクでは null です。 |
choices[].delta.audio |
object | 増分的なオーディオデータ。テキストチャンクでは null です。 |
choices[].delta.audio.data |
string | Base64 エンコードされたオーディオセグメント。 |
choices[].delta.audio.id |
string | 出力オーディオの一意な識別子。 |
choices[].delta.audio.expires_at |
integer | リクエストが作成されたタイムスタンプ。 |
choices[].delta.role |
string | メッセージロール。最初のチャンクでのみ存在します。 |
choices[].finish_reason |
string | stop、max_tokens によって切り捨てられた場合は length、処理中の場合は null です。 |
choices[].index |
integer | 常に 0 です。 |
created |
integer | リクエストの UNIX タイムスタンプ。すべてのチャンクで同一です。 |
model |
string | モデル名。 |
object |
string | 常に chat.completion.chunk です。 |
usage |
object | include_usage が true の場合に、最終チャンクでのみ存在します。 |
usage.prompt_tokens |
integer | 入力トークンの合計数。 |
usage.completion_tokens |
integer | 出力トークンの合計数。 |
usage.total_tokens |
integer | prompt_tokens と completion_tokens の合計。 |
usage.completion_tokens_details.audio_tokens |
integer | 出力オーディオトークン。 |
usage.completion_tokens_details.text_tokens |
integer | 出力テキストトークン。 |
usage.prompt_tokens_details.audio_tokens |
integer | 入力オーディオトークン。動画入力の場合、動画から抽出されたオーディオが含まれます。 |
usage.prompt_tokens_details.text_tokens |
integer | 入力テキストトークン。常に 0 です。 |
usage.prompt_tokens_details.video_tokens |
integer | 入力動画トークン。動画入力の場合にのみ存在します。 |
null 固定フィールド
OpenAI との互換性のために応答に含まれていますが、常に null を返すフィールドは以下のとおりです。
reasoning_content、function_call、refusal、tool_calls、logprobs、service_tier、system_fingerprint
注意事項
-
ストリーミングのみ。
streamをtrueに設定してください。非ストリーミング呼び出しはサポートされていません。 -
単一メッセージ。
messages配列にはユーザーからのメッセージを 1 つだけ受け付けます。 -
非標準パラメーター。
translation_options、top_k、およびrepetition_penaltyは標準的な OpenAI API には含まれていません。Python SDK ではextra_bodyで渡します。Node.js/HTTP の場合は、トップレベルに含めてください。 -
サンプリングのデフォルト値。
temperature、top_p、top_k、presence_penalty、およびrepetition_penaltyのデフォルト値は翻訳精度のために最適化されています。これらの値を変更すると、品質が低下する可能性があります。 -
出力オーディオフォーマット。
wavのみがサポートされています。 -
自動言語検出。
source_langを省略すると、入力言語が自動検出されます。