すべてのプロダクト
Search
ドキュメントセンター

Alibaba Cloud Model Studio:リアルタイム音声・動画翻訳 - Qwen

最終更新日:Jan 23, 2026

qwen3-livetranslate-flash-realtime は、中国語、英語、ロシア語、フランス語など 18 言語間の翻訳をサポートする視覚拡張リアルタイム翻訳モデルです。このモデルは、リアルタイムのビデオストリームまたはローカルビデオファイルから音声と画像の入力を同時に処理し、視覚的なコンテキストを使用して翻訳の精度を向上させ、高品質の翻訳テキストと音声をリアルタイムで出力します。

オンラインデモについては、「Function Compute を利用したワンクリックデプロイメント」をご参照ください。

利用方法

1. 接続の構成

qwen3-livetranslate-flash-realtime は、WebSocket プロトコルを使用して接続します。接続には以下の設定項目が必要です:

設定項目

説明

エンドポイント

中国本土:wss://dashscope.aliyuncs.com/api-ws/v1/realtime

国際:wss://dashscope-intl.aliyuncs.com/api-ws/v1/realtime

クエリパラメーター

クエリパラメーターは model です。アクセスしたいモデルの名前に設定します。例:?model=qwen3-livetranslate-flash-realtime

メッセージヘッダー

Bearer トークンを使用して認証します:Authorization: Bearer DASHSCOPE_API_KEY

DASHSCOPE_API_KEY は、Alibaba Cloud Model Studio からリクエストした API キーです。

以下の Python サンプルコードを使用して接続を確立します。

WebSocket 接続 Python サンプルコード

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

API_KEY=os.getenv("DASHSCOPE_API_KEY")
API_URL = "wss://dashscope-intl.aliyuncs.com/api-ws/v1/realtime?model=qwen3-livetranslate-flash-realtime"

headers = [
    "Authorization: Bearer " + API_KEY
]

def on_open(ws):
    print(f"サーバーに接続しました: {API_URL}")
def on_message(ws, message):
    data = json.loads(message)
    print("受信したイベント:", json.dumps(data, indent=2))
def on_error(ws, error):
    print("エラー:", 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.input_audio_transcription.language パラメーターを使用します。

      デフォルト値は en (英語) です。
    • ターゲット言語:session.translation.language パラメーターを使用します。

      デフォルト値は en (英語) です。

    詳細については、「サポート言語」をご参照ください。

  • ソース言語の認識結果の出力

    session.input_audio_transcription.model パラメーターを使用します。パラメーターを qwen3-asr-flash-realtime に設定すると、サーバーは翻訳に加えて、入力音声の音声認識結果 (元のソース言語のテキスト) を返します。

    この機能を有効にすると、サーバーは以下のイベントを返します:

    • conversation.item.input_audio_transcription.text:認識結果をストリームとして返します。

    • conversation.item.input_audio_transcription.completed:認識完了後の最終結果を返します。

  • 出力モダリティ

    session.modalities パラメーターを使用します。サポートされている値は ["text"] (テキストのみ) と ["text","audio"] (テキストと音声) です。

  • 音色

    session.voice パラメーターを使用します。詳細については、「サポートされている音声」をご参照ください。

3. 音声と画像の入力

クライアントは、input_audio_buffer.append および input_image_buffer.append イベントを使用して、Base64 エンコードされた音声および画像データを送信します。音声入力は必須です。画像入力はオプションです。

画像はローカルファイルから、またはビデオストリームからリアルタイムでキャプチャできます。
サーバーは音声の開始と終了を自動的に検出し、モデルの応答をトリガーします。

4. モデル応答の受信

サーバーが音声の終了を検出すると、モデルが応答します。応答形式は、設定された出力モダリティによって異なります。

  • テキストのみの出力

    サーバーは、response.text.done イベントで完全な翻訳テキストを返します。

  • テキストと音声の出力

サポートされているモデル

qwen3-livetranslate-flash-realtime は、多言語対応のリアルタイム音声・動画翻訳モデルです。18 言語を認識し、リアルタイムで 10 言語の音声に翻訳できます。

主な特徴:

  • 多言語サポート:中国語、英語、フランス語、ドイツ語、ロシア語、日本語、韓国語などの 18 言語、および標準中国語、広東語、四川語を含む 6 つの中国語方言をサポートします。

  • 視覚拡張:視覚コンテンツを使用して翻訳の精度を向上させます。モデルは、唇の動き、動作、画面上のテキストを分析して、騒がしい環境や複数の意味を持つ単語の翻訳を強化します。

  • 3 秒の遅延:最低 3 秒の同時通訳遅延を実現します。

  • ロスレス同時通訳:セマンティックユニット予測技術を使用して、言語間の語順の問題を解決します。リアルタイム翻訳の品質は、オフライン翻訳の品質に近いです。

  • 自然な音声:自然で人間らしい音声を生成します。モデルは、ソース音声に基づいてトーンと感情を自動的に調整します。

モデル名

バージョン

コンテキストウィンドウ

最大入力

最大出力

(トークン)

qwen3-livetranslate-flash-realtime

現在の機能は qwen3-livetranslate-flash-realtime-2025-09-22 と同等です

安定版

53,248

49,152

4,096

qwen3-livetranslate-flash-realtime-2025-09-22

スナップショット

クイックスタート

  1. 環境の準備

    Python のバージョンは 3.10 以降である必要があります。

    まず、pyaudio をインストールします。

    macOS

    brew install portaudio && pip install pyaudio

    Debian/Ubuntu

    sudo apt-get install python3-pyaudio
    
    or
    
    pip install pyaudio

    CentOS

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

    Windows

    pip install pyaudio

    インストールが完了したら、pip を使用して必要な WebSocket 依存関係をインストールします:

    pip install websocket-client==1.8.0 websockets
  2. クライアントの作成

    ローカルに新しい Python ファイルを作成し、livetranslate_client.py という名前を付けて、次のコードをファイルにコピーします:

    クライアントコード - livetranslate_client.py

    import os
    import time
    import base64
    import asyncio
    import json
    import websockets
    import pyaudio
    import queue
    import threading
    import traceback
    
    class LiveTranslateClient:
        def __init__(self, api_key: str, target_language: str = "en", voice: str | None = "Cherry", *, audio_enabled: bool = True):
            if not api_key:
                raise ValueError("API キーは空にできません。")
                
            self.api_key = api_key
            self.target_language = target_language
            self.audio_enabled = audio_enabled
            self.voice = voice if audio_enabled else "Cherry"
            self.ws = None
            self.api_url = "wss://dashscope-intl.aliyuncs.com/api-ws/v1/realtime?model=qwen3-livetranslate-flash-realtime"
            
            # 音声入力の設定 (マイクから)
            self.input_rate = 16000
            self.input_chunk = 1600
            self.input_format = pyaudio.paInt16
            self.input_channels = 1
            
            # 音声出力の設定 (再生用)
            self.output_rate = 24000
            self.output_chunk = 2400
            self.output_format = pyaudio.paInt16
            self.output_channels = 1
            
            # 状態管理
            self.is_connected = False
            self.audio_player_thread = None
            self.audio_playback_queue = queue.Queue()
            self.pyaudio_instance = pyaudio.PyAudio()
    
        async def connect(self):
            """翻訳サービスへの WebSocket 接続を確立します。"""
            headers = {"Authorization": f"Bearer {self.api_key}"}
            try:
                self.ws = await websockets.connect(self.api_url, additional_headers=headers)
                self.is_connected = True
                print(f"サーバーへの接続に成功しました: {self.api_url}")
                await self.configure_session()
            except Exception as e:
                print(f"接続に失敗しました: {e}")
                self.is_connected = False
                raise
    
        async def configure_session(self):
            """翻訳セッションを設定し、ターゲット言語、音声、その他のパラメーターを設定します。"""
            config = {
                "event_id": f"event_{int(time.time() * 1000)}",
                "type": "session.update",
                "session": {
                    # 'modalities' は出力タイプを制御します。
                    # ["text", "audio"]: 翻訳されたテキストと合成された音声の両方を返します (推奨)。
                    # ["text"]: 翻訳されたテキストのみを返します。
                    "modalities": ["text", "audio"] if self.audio_enabled else ["text"],
                    **({"voice": self.voice} if self.audio_enabled and self.voice else {}),
                    "input_audio_format": "pcm16",
                    "output_audio_format": "pcm16",
                    # 'input_audio_transcription' はソース言語の認識を設定します。
                    # 'model' を 'qwen3-asr-flash-realtime' に設定すると、ソース言語の認識結果も出力されます。
                    # "input_audio_transcription": {
                    #     "model": "qwen3-asr-flash-realtime",
                    #     "language": "zh"  # ソース言語、デフォルトは 'en'
                    # },
                    "translation": {
                        "language": self.target_language
                    }
                }
            }
            print(f"セッション構成を送信中: {json.dumps(config, indent=2, ensure_ascii=False)}")
            await self.ws.send(json.dumps(config))
    
        async def send_audio_chunk(self, audio_data: bytes):
            """音声データブロックをエンコードしてサーバーに送信します。"""
            if not self.is_connected:
                return
                
            event = {
                "event_id": f"event_{int(time.time() * 1000)}",
                "type": "input_audio_buffer.append",
                "audio": base64.b64encode(audio_data).decode()
            }
            await self.ws.send(json.dumps(event))
    
        async def send_image_frame(self, image_bytes: bytes, *, event_id: str | None = None):
            # 画像データをサーバーに送信します
            if not self.is_connected:
                return
    
            if not image_bytes:
                raise ValueError("image_bytes は空にできません")
    
            # Base64 にエンコードします
            image_b64 = base64.b64encode(image_bytes).decode()
    
            event = {
                "event_id": event_id or f"event_{int(time.time() * 1000)}",
                "type": "input_image_buffer.append",
                "image": image_b64,
            }
    
            await self.ws.send(json.dumps(event))
    
        def _audio_player_task(self):
            stream = self.pyaudio_instance.open(
                format=self.output_format,
                channels=self.output_channels,
                rate=self.output_rate,
                output=True,
                frames_per_buffer=self.output_chunk,
            )
            try:
                while self.is_connected or not self.audio_playback_queue.empty():
                    try:
                        audio_chunk = self.audio_playback_queue.get(timeout=0.1)
                        if audio_chunk is None: # 終了シグナル
                            break
                        stream.write(audio_chunk)
                        self.audio_playback_queue.task_done()
                    except queue.Empty:
                        continue
            finally:
                stream.stop_stream()
                stream.close()
    
        def start_audio_player(self):
            """音声プレーヤースレッドを開始します (音声出力が有効な場合のみ)。"""
            if not self.audio_enabled:
                return
            if self.audio_player_thread is None or not self.audio_player_thread.is_alive():
                self.audio_player_thread = threading.Thread(target=self._audio_player_task, daemon=True)
                self.audio_player_thread.start()
    
        async def handle_server_messages(self, on_text_received):
            """サーバーからのメッセージを処理するループ。"""
            try:
                async for message in self.ws:
                    event = json.loads(message)
                    event_type = event.get("type")
                    if event_type == "response.audio.delta" and self.audio_enabled:
                        audio_b64 = event.get("delta", "")
                        if audio_b64:
                            audio_data = base64.b64decode(audio_b64)
                            self.audio_playback_queue.put(audio_data)
    
                    elif event_type == "response.done":
                        print("\n[INFO] 1ラウンドの応答が完了しました。")
                        usage = event.get("response", {}).get("usage", {})
                        if usage:
                            print(f"[INFO] トークン使用量: {json.dumps(usage, indent=2, ensure_ascii=False)}")
                    # ソース言語の認識結果を処理します (input_audio_transcription.model の有効化が必要)
                    # elif event_type == "conversation.item.input_audio_transcription.text":
                    #     stash = event.get("stash", "")  # 未確定の認識テキスト
                    #     print(f"[認識中] {stash}")
                    # elif event_type == "conversation.item.input_audio_transcription.completed":
                    #     transcript = event.get("transcript", "")  # 完全な認識結果
                    #     print(f"[ソース言語] {transcript}")
                    elif event_type == "response.audio_transcript.done":
                        print("\n[INFO] テキスト翻訳が完了しました。")
                        text = event.get("transcript", "")
                        if text:
                            print(f"[INFO] 翻訳されたテキスト: {text}")
                    elif event_type == "response.text.done":
                        print("\n[INFO] テキスト翻訳が完了しました。")
                        text = event.get("text", "")
                        if text:
                            print(f"[INFO] 翻訳されたテキスト: {text}")
    
            except websockets.exceptions.ConnectionClosed as e:
                print(f"[WARNING] 接続が閉じられました: {e}")
                self.is_connected = False
            except Exception as e:
                print(f"[ERROR] メッセージ処理中に不明なエラーが発生しました: {e}")
                traceback.print_exc()
                self.is_connected = False
    
        async def start_microphone_streaming(self):
            """マイクから音声をキャプチャし、サーバーにストリーミングします。"""
            stream = self.pyaudio_instance.open(
                format=self.input_format,
                channels=self.input_channels,
                rate=self.input_rate,
                input=True,
                frames_per_buffer=self.input_chunk
            )
            print("マイクがオンです。話し始めてください...")
            try:
                while self.is_connected:
                    audio_chunk = await asyncio.get_event_loop().run_in_executor(
                        None, stream.read, self.input_chunk
                    )
                    await self.send_audio_chunk(audio_chunk)
            finally:
                stream.stop_stream()
                stream.close()
    
        async def close(self):
            """接続を正常に閉じ、リソースを解放します。"""
            self.is_connected = False
            if self.ws:
                await self.ws.close()
                print("WebSocket 接続が閉じられました。")
            
            if self.audio_player_thread:
                self.audio_playback_queue.put(None) # 終了シグナルを送信
                self.audio_player_thread.join(timeout=1)
                print("音声プレーヤースレッドが停止しました。")
                
            self.pyaudio_instance.terminate()
            print("PyAudio インスタンスが解放されました。")
  3. モデルとの対話

    livetranslate_client.py と同じフォルダに、別の Python ファイルを作成し、main.py という名前を付けて、次のコードをファイルにコピーします:

    main.py

    import os
    import asyncio
    from livetranslate_client import LiveTranslateClient
    
    def print_banner():
        print("=" * 60)
        print("  Powered by Qwen qwen3-livetranslate-flash-realtime")
        print("=" * 60 + "\n")
    
    def get_user_config():
        """ユーザー設定の取得"""
        print("モードを選択してください:")
        print("1. 音声 + テキスト [デフォルト] | 2. テキストのみ")
        mode_choice = input("選択肢を入力してください (音声 + テキストの場合は Enter を押してください): ").strip()
        audio_enabled = (mode_choice != "2")
    
        if audio_enabled:
            lang_map = {
                "1": "en", "2": "zh", "3": "ru", "4": "fr", "5": "de", "6": "pt",
                "7": "es", "8": "it", "9": "ko", "10": "ja", "11": "yue"
            }
            print("翻訳先の言語を選択してください (音声 + テキストモード):")
            print("1. 英語 | 2. 中国語 | 3. ロシア語 | 4. フランス語 | 5. ドイツ語 | 6. ポルトガル語 | 7. スペイン語 | 8. イタリア語 | 9. 韓国語 | 10. 日本語 | 11. 広東語")
        else:
            lang_map = {
                "1": "en", "2": "zh", "3": "ru", "4": "fr", "5": "de", "6": "pt", "7": "es", "8": "it",
                "9": "id", "10": "ko", "11": "ja", "12": "vi", "13": "th", "14": "ar",
                "15": "yue", "16": "hi", "17": "el", "18": "tr"
            }
            print("翻訳先の言語を選択してください (テキストのみモード):")
            print("1. 英語 | 2. 中国語 | 3. ロシア語 | 4. フランス語 | 5. ドイツ語 | 6. ポルトガル語 | 7. スペイン語 | 8. イタリア語 | 9. インドネシア語 | 10. 韓国語 | 11. 日本語 | 12. ベトナム語 | 13. タイ語 | 14. アラビア語 | 15. 広東語 | 16. ヒンディー語 | 17. ギリシャ語 | 18. トルコ語")
    
        choice = input("選択肢を入力してください (デフォルトは最初のオプションです): ").strip()
        target_language = lang_map.get(choice, next(iter(lang_map.values())))
    
        voice = None
        if audio_enabled:
            print("\n音声合成の音声を選択してください:")
            voice_map = {"1": "Cherry", "2": "Nofish", "3": "Sunny", "4": "Jada", "5": "Dylan", "6": "Peter", "7": "Eric", "8": "Kiki"}
            print("1. Cherry (女性) [デフォルト] | 2. Nofish (男性) | 3. Sunny (四川女性) | 4. Jada (上海女性) | 5. Dylan (北京男性) | 6. Peter (天津男性) | 7. Eric (四川男性) | 8. Kiki (広東女性)")
            voice_choice = input("選択肢を入力してください (Cherry の場合は Enter を押してください): ").strip()
            voice = voice_map.get(voice_choice, "Cherry")
        return target_language, voice, audio_enabled
    
    async def main():
        """メインプログラムのエントリーポイント"""
        print_banner()
        
        api_key = os.environ.get("DASHSCOPE_API_KEY")
        if not api_key:
            print("[ERROR] DASHSCOPE_API_KEY 環境変数を設定してください。")
            print("  例: export DASHSCOPE_API_KEY='your_api_key_here'")
            return
            
        target_language, voice, audio_enabled = get_user_config()
        print("\n設定が完了しました:")
        print(f"  - ターゲット言語: {target_language}")
        if audio_enabled:
            print(f"  - 合成音声: {voice}")
        else:
            print("  - 出力モード: テキストのみ")
        
        client = LiveTranslateClient(api_key=api_key, target_language=target_language, voice=voice, audio_enabled=audio_enabled)
        
        # コールバック関数を定義します
        def on_translation_text(text):
            print(text, end="", flush=True)
    
        try:
            print("翻訳サービスに接続しています...")
            await client.connect()
            
            # モードに基づいて音声再生を開始します
            client.start_audio_player()
            
            print("\n" + "-" * 60)
            print("接続に成功しました!マイクに向かって話してください。")
            print("プログラムはあなたの音声をリアルタイムで翻訳し、結果を再生します。Ctrl+C を押して終了します。")
            print("-" * 60 + "\n")
    
            # メッセージ処理とマイク録音を同時に実行します
            message_handler = asyncio.create_task(client.handle_server_messages(on_translation_text))
            tasks = [message_handler]
            # 音声出力が有効かどうかにかかわらず、翻訳のためにマイクから音声をキャプチャする必要があります
            microphone_streamer = asyncio.create_task(client.start_microphone_streaming())
            tasks.append(microphone_streamer)
    
            await asyncio.gather(*tasks)
    
        except KeyboardInterrupt:
            print("\n\nユーザーが中断しました。終了しています...")
        except Exception as e:
            print(f"\n重大なエラーが発生しました: {e}")
        finally:
            print("\nリソースをクリーンアップしています...")
            await client.close()
            print("プログラムが終了しました。")
    
    if __name__ == "__main__":
        asyncio.run(main())

    main.py を実行し、翻訳したい文章をマイクに向かって話します。モデルは翻訳された音声とテキストをリアルタイムで出力します。システムはあなたの発話を自動的に検出し、音声をサーバーに送信するため、手動での操作は不要です。

画像を利用した翻訳精度の向上

qwen3-livetranslate-flash-realtime は、音声翻訳を補助するために画像入力を受け入れることができます。これは、同音異義語を含むシナリオや、一般的でない固有名詞を認識する場合に役立ちます。1 秒あたり最大 2 枚の画像を送信できます。

次のサンプル画像をローカルコンピューターにダウンロードします:face_mask.png および mask.png

次のコードを livetranslate_client.py と同じフォルダにダウンロードして実行します。マイクに向かって "What is mask?" と話します。医療用マスクの画像を入力すると、モデルはこのフレーズを「医療用マスクとは何ですか?」と翻訳します。仮面舞踏会のマスクの画像を入力すると、モデルはこのフレーズを「仮面舞踏会のマスクとは何ですか?」と翻訳します。

import os
import time
import json
import asyncio
import contextlib
import functools

from livetranslate_client import LiveTranslateClient

IMAGE_PATH = "mask_medical.png"
# IMAGE_PATH = "mask_masquerade.png"

def print_banner():
    print("=" * 60)
    print("  Powered by Qwen qwen3-livetranslate-flash-realtime - シングルターン対話例 (mask)")
    print("=" * 60 + "\n")

async def stream_microphone_once(client: LiveTranslateClient, image_bytes: bytes):
    pa = client.pyaudio_instance
    stream = pa.open(
        format=client.input_format,
        channels=client.input_channels,
        rate=client.input_rate,
        input=True,
        frames_per_buffer=client.input_chunk,
    )
    print(f"[INFO] 録音を開始しました。話してください...")
    loop = asyncio.get_event_loop()
    last_img_time = 0.0
    frame_interval = 0.5  # 2 fps
    try:
        while client.is_connected:
            data = await loop.run_in_executor(None, stream.read, client.input_chunk)
            await client.send_audio_chunk(data)

            # 0.5 秒ごとに画像フレームを追加します
            now = time.time()
            if now - last_img_time >= frame_interval:
                await client.send_image_frame(image_bytes)
                last_img_time = now
    finally:
        stream.stop_stream()
        stream.close()

async def main():
    print_banner()
    api_key = os.environ.get("DASHSCOPE_API_KEY")
    if not api_key:
        print("[ERROR] まず、DASHSCOPE_API_KEY 環境変数に API KEY を設定してください。")
        return

    client = LiveTranslateClient(api_key=api_key, target_language="zh", voice="Cherry", audio_enabled=True)

    def on_text(text: str):
        print(text, end="", flush=True)

    try:
        await client.connect()
        client.start_audio_player()
        message_task = asyncio.create_task(client.handle_server_messages(on_text))
        with open(IMAGE_PATH, "rb") as f:
            img_bytes = f.read()
        await stream_microphone_once(client, img_bytes)
        await asyncio.sleep(15)
    finally:
        await client.close()
        if not message_task.done():
            message_task.cancel()
            with contextlib.suppress(asyncio.CancelledError):
                await message_task

if __name__ == "__main__":
    asyncio.run(main())

Function Compute を利用したワンクリックデプロイメント

現在、コンソールはこのデモをサポートしていません。次のようにワンクリックでデプロイできます:

  1. Function Compute テンプレートを開き、API キーを入力し、[デフォルト環境の作成とデプロイ] をクリックしてオンラインで試します。

  2. 約 1 分待ちます。[環境詳細] > [環境コンテキスト] で、エンドポイントを取得します。エンドポイントの httphttps に変更し (例:https://qwen-livetranslate-flash-realtime-intl.fcv3.xxx.ap-southeast-1.fc.devsapp.net/)、そのリンクを使用してモデルと対話します。

    重要

    このリンクは自己署名証明書を使用しており、一時的なテスト専用です。最初にアクセスすると、ブラウザにセキュリティ警告が表示されますが、これは想定内の動作です。本番環境では使用しないでください。続行するには、ブラウザの指示に従い、「詳細設定」→「(安全でないサイト) に進む」などをクリックしてください。

Resource Access Management (RAM) の権限を有効にするには、画面の指示に従ってください。
プロジェクトのソースコードは、[リソース情報] > [関数リソース] で確認できます。
Function ComputeAlibaba Cloud Model Studio はどちらも新規ユーザー向けの無料クォータを提供しています。このクォータは、簡単なテストの費用をカバーできます。無料クォータを使い切った後は、従量課金制で請求されます。料金は、サービスにアクセスした場合にのみ発生します。

対話フロー

リアルタイム音声翻訳の対話フローは、標準の WebSocket イベント駆動モデルに従います。サーバーは音声の開始と終了を自動的に検出し、応答します。

ライフサイクル

クライアントイベント

サーバーイベント

セッションの初期化

session.update

セッション構成

session.created

セッションが作成されました

session.updated

セッション構成が更新されました

ユーザーの音声入力

input_audio_buffer.append

バッファーに音声を追加

input_image_buffer.append

バッファーに画像を追加

なし

サーバーの音声出力

なし

response.created

サーバーが応答の生成を開始

response.output_item.added

応答に新しい出力コンテンツ

response.content_part.added

アシスタントメッセージに新しい出力コンテンツが追加されました

response.audio_transcript.text

増分的に生成されたトランスクリプトテキスト

response.audio.delta

モデルから増分的に生成された音声

response.audio_transcript.done

テキストの文字起こしが完了しました

response.audio.done

音声生成が完了しました

response.content_part.done

アシスタントメッセージのテキストまたは音声コンテンツのストリーミングが完了しました

response.output_item.done

アシスタントメッセージの出力アイテム全体のストリーミングが完了しました

response.done

応答が完了しました

API リファレンス

詳細については、「リアルタイム音声・動画翻訳 (Qwen-Livetranslate)」をご参照ください。

課金

  • 音声:音声入力または出力 1 秒ごとに 12.5 トークンを消費します。

  • 画像:入力の 28×28 ピクセルごとに 0.5 トークンを消費します。

  • テキスト:ソース言語の音声認識機能を有効にすると、サービスは翻訳結果に加えて、入力音声の音声認識テキスト (元のソース言語のテキスト) を返します。この認識テキストは、出力テキストの標準トークンレートに基づいて課金されます。

トークンの価格については、「モデルリスト」をご参照ください。

サポート言語

ソース言語とターゲット言語を指定するには、次の言語コードを使用します。

一部のターゲット言語はテキスト出力のみをサポートし、音声出力はサポートしていません。

言語コード

言語

サポートされている出力モダリティ

en

英語

音声 + テキスト

zh

中国語

音声 + テキスト

ru

ロシア語

音声 + テキスト

fr

フランス語

音声 + テキスト

de

ドイツ語

音声 + テキスト

pt

ポルトガル語

音声 + テキスト

es

スペイン語

音声 + テキスト

it

イタリア語

音声 + テキスト

id

インドネシア語

テキスト

ko

韓国語

音声 + テキスト

ja

日本語

音声 + テキスト

vi

ベトナム語

テキスト

th

タイ語

テキスト

ar

アラビア語

テキスト

yue

広東語

音声 + テキスト

hi

ヒンディー語

テキスト

el

ギリシャ語

テキスト

tr

トルコ語

テキスト

サポートされている音声

名前

voice パラメーター

音色の効果

説明

サポート言語

QianYue

Cherry

明るく、前向きで、自然な性格のフレンドリーな若い女性。

中国語、英語、フランス語、ドイツ語、ロシア語、イタリア語、スペイン語、ポルトガル語、日本語、韓国語

魚を食べない。

Nofish

そり舌音を発音できないデザイナー。

中国語、英語、フランス語、ドイツ語、ロシア語、イタリア語、スペイン語、ポルトガル語、日本語、韓国語

上海 - Jada

Jada

活発でエネルギッシュな上海の女性。

中国語

北京 - Dylan

Dylan

北京の胡同で育った若者。

中国語

四川 - Sunny

Sunny

あなたの心を動かす四川出身の可愛い女の子。

中国語

Peter Li、天津

Peter

天津漫才:脇役の芸術。

中国語

広東語 - Kiki

Kiki

香港出身の可愛い親友。

広東語

Chengchuan、四川

Eric

四川省成都出身の非凡な男性。

中国語