DashScope Python SDK を使用して、リアルタイム音声・動画翻訳(Qwen-LiveTranslate-Realtime)モデルを呼び出す方法を説明します。
前提条件
- SDK をインストールします。DashScope SDK のバージョンが 1.25.6 以降であることを確認してください。
- API キーを取得します。
リクエストパラメーター
-
OmniRealtimeConversationクラスのコンストラクターで、以下のパラメーターを設定します。サンプルコードの表示
パラメーター タイプ 必須 説明 modelstrはい 使用するモデル名。 qwen3.5-livetranslate-flash-realtime(推奨) に設定します。callbackOmniRealtimeCallbackはい サーバーサイドのイベントを処理するためのコールバックインスタンス。 urlstrはい リアルタイム音声翻訳のサービスエンドポイント: - 中国 (北京):
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 に置き換えてください。 - 中国 (北京):
-
OmniRealtimeConversationクラスのupdate_sessionメソッドを使用して、以下のパラメーターを設定します。サンプルコードの表示
パラメーター
タイプ
必須
説明
output_modalitiesList[MultiModality]いいえ
翻訳結果の出力フォーマット。
デフォルト:
[MultiModality.TEXT, MultiModality.AUDIO]有効値:
[MultiModality.TEXT]:テキストのみを出力[MultiModality.TEXT, MultiModality.AUDIO]:テキストと音声を出力
voicestrいいえ
音声出力のボイス。
デフォルト:
Qwen3.5-LiveTranslate-Flash-Realtime:
Tina
有効値: サポートされているボイス
input_audio_transcription_modelstrいいえ
このパラメーターを
qwen3-asr-flash-realtimeに設定すると、ソース言語の音声認識結果を受信できます。translation_paramsTranslationParamsいいえ
翻訳設定 (ターゲット言語とホットワード)。
enable_turn_detectionboolいいえ
音声アクティビティ検出 (VAD) を有効にするかどうか。
デフォルト値:
True。 サーバーが音声の開始/終了を自動検出し、翻訳をトリガーする VAD モードを有効にします。Falseに設定すると手動モードに切り替わり、クライアントはcommitメソッドを使って手動で音声を送信します。パラメーターの詳細な説明については、クライアントイベントドキュメントのturn_detectionの説明をご参照ください。 -
TranslationParamsクラスのコンストラクターで、以下のパラメーターを設定します。サンプルコードの表示
パラメーター
タイプ
必須
説明
languagestrいいえ
翻訳のターゲット言語。
デフォルト:
en有効値: サポートされている言語
corpusTranslationParams.Corpusいいえ
特定の用語の翻訳精度を向上させるためのホットワードマッピング。
corpus.phrasesdictいいえ
キーがソース用語で、値がターゲット翻訳であるホットワードマッピングテーブル。
例:
{'Inteligencia Artificial': 'Artificial Intelligence'}
主要なインターフェイス
OmniRealtimeConversation クラス
インポート: from dashscope.audio.qwen_omni import OmniRealtimeConversation
| メソッドシグネチャ | サーバーサイドのレスポンスイベント (コールバック経由で送信) | 説明 |
|---|---|---|
サーバーサイドイベントセッション作成済みサーバーサイドイベント セッション設定更新済み | サーバーに接続します。 | |
サーバーサイドイベントセッション設定更新済み | セッション設定を更新します。接続後すぐに呼び出します。このメソッドを呼び出さない場合、デフォルト設定が適用されます。 | |
session.finishedサーバーが音声翻訳を完了し、セッションを終了します | セッションを終了します。サーバーは最終的な翻訳処理を完了します。 | |
| None | Base64 エンコードされた音声チャンクをサーバーに送信します。音声検出と翻訳は自動的に行われます。 | |
サーバーサイドイベント入力音声バッファーコミット済み | 手動モードでは、append_audio メソッドを使って以前にサーバーバッファーに追加された音声を送信します。サーバーは受信後、自動的に翻訳レスポンスの生成を開始します。VAD モードでは、サーバーが自動的にコミットするため、このメソッドを呼び出す必要はありません。 | |
サーバーサイドイベント入力音声バッファークリア済み | 現在のサーバーバッファー内のコミットされていない音声データをクリアします。 | |
| None | タスクを停止し、接続を閉じます。 | |
| None | セッション ID を取得します。 | |
| None | 最後のレスポンス ID を取得します。 |
コールバックインターフェイス (OmniRealtimeCallback)
コールバック経由でサーバーのイベントとデータを受信します。
このクラスを継承し、そのメソッドを実装してサーバーからのイベントを処理します。
インポート: from dashscope.audio.qwen_omni import OmniRealtimeCallback
| メソッドシグネチャ | パラメーター | 説明 |
|---|---|---|
| None | WebSocket 接続が開いたときに呼び出されます。 | |
| message: サーバーサイドイベント | サーバーがイベントを送信したときに呼び出されます。 | |
| close_status_code:ステータスコード。close_msg:WebSocket 接続が閉じられたときのログメッセージ。 | WebSocket 接続が閉じたときに呼び出されます。 |
dashscope.Client():例外発生後のイベント受信
DashScope SDK 2.x の dashscope.Client() を使用する場合は、セッションの events() または recv_event() でイベントを受信します。詳しい使い方は Python SDK 2.x のイベント反復処理を参照してください。
DashScopeError をキャッチした時点で、現在の events() イテレーターは終了しています。外側の try/except で例外をキャッチするだけでは、イベント受信は再開されません。
WebSocket 接続が引き続き使用できる場合は、リクエストを修正して events() を再度呼び出すか、recv_event() でイベントを 1 件ずつ受信します。接続が閉じている場合は、先に再接続して新しいセッションを設定してから、受信を再開します。
エラーの原因を調べるには、例外の body からサーバーが返した元のエラーイベントを取得します。
完全なサンプルコード
この例では、マイクの音声を録音し、リアルタイムで翻訳します。
マイクからのリアルタイム翻訳のサンプルコード
マイクからのリアルタイム翻訳のサンプルコード