WebSocket を介して音声を Qwen-ASR-Realtime にストリーミングし、DashScope Python SDK を使ってリアルタイムの文字起こし結果を受信します。
サポートされているモデル、機能、および完全なサンプルコードの概要については、「リアルタイム音声認識」をご参照ください。
前提条件
作業を開始する前に、以下の項目が準備済みであることを確認してください。
-
DashScope SDK 1.25.6 以降
-
インタラクションフロー の理解
Alibaba Cloud Model Studio は、中国 (北京) リージョンおよびシンガポールリージョン向けにワークスペース専用ドメインをリリースしました。この新しい専用ドメインは、推論リクエストに対して優れたパフォーマンスと高い安定性を提供します。新しいドメインへの移行を推奨します。
中国 (北京):
dashscope.aliyuncs.comから{WorkspaceId}.cn-beijing.maas.aliyuncs.comへシンガポール:
dashscope-intl.aliyuncs.comから{WorkspaceId}.ap-southeast-1.maas.aliyuncs.comへ
{WorkspaceId} は、実際の ワークスペース ID に置き換えてください。既存のドメインは引き続き完全に機能します。
リクエストパラメーター
OmniRealtimeConversation コンストラクター
以下のパラメーターを使用して OmniRealtimeConversation インスタンスを作成します。
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
model |
str |
はい | モデル を指定します。 |
callback |
OmniRealtimeCallback |
はい | サーバー側イベントを処理するコールバックオブジェクトです。 |
url |
str |
はい | WebSocket エンドポイントです。 中国 (北京): 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 に置き換えてください。 |
セッション構成
接続後、update_session を呼び出してセッションパラメーターを構成します。
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
output_modalities |
List[MultiModality] |
はい | 出力モダリティです。固定値:[MultiModality.TEXT]。 |
enable_turn_detection |
bool |
いいえ | サーバー側の音声アクティビティ検出 (VAD) を有効にします。デフォルト:True。False の場合、認識をトリガーするために commit() を手動で呼び出す必要があります。 |
turn_detection_type |
str |
いいえ | サーバー側 VAD のタイプです。固定値:server_vad。 |
turn_detection_threshold |
float |
いいえ | VAD の感度しきい値です。デフォルト:0.2。推奨値:0.0。有効範囲:[-1, 1]。値が低いほど感度が高くなり(バックグラウンドノイズでもトリガーされる可能性あり)、値が高いほどノイズ環境での誤トリガーが少なくなります。 |
turn_detection_silence_duration_ms |
int |
いいえ | 文の終了を示すサイレンス持続時間 (ミリ秒) です。デフォルト:800。推奨値:400。有効範囲:[200, 6000]。値が小さい (例:300 ms) ほど応答が速くなりますが、自然なポーズが分割される可能性があります。値が大きい (例:1200 ms) ほど長文のポーズを適切に処理できますが、レイテンシが高くなります。 |
transcription_params |
TranscriptionParams |
いいえ | 音声認識の構成です。「TranscriptionParams」をご参照ください。 |
TranscriptionParams
TranscriptionParams コンストラクターを使用して音声認識設定を構成します。
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
language |
str |
いいえ | 音声のソース言語です。サポートされる値:zh (中国語:普通話、四川語、閩南語、呉語)、yue (広東語)、en (英語)、ja (日本語)、ko (韓国語)、de (ドイツ語)、fr (フランス語)、es (スペイン語)、pt (ポルトガル語)、it (イタリア語)、ru (ロシア語)、ar (アラビア語)、hi (ヒンディー語)、id (インドネシア語)、th (タイ語)、tr (トルコ語)、uk (ウクライナ語)、vi (ベトナム語)、cs (チェコ語)、da (デンマーク語)、fi (フィンランド語)、fil (フィリピン語)、is (アイスランド語)、ms (マレー語)、no (ノルウェー語)、pl (ポーランド語)、sv (スウェーデン語) |
sample_rate |
int |
いいえ | 音声のサンプリングレート (Hz) です。デフォルト:16000。サポートされる値:16000、8000。8000 を使用すると、サーバーが認識前に 16,000 Hz にアップサンプリングするため、わずかなレイテンシが発生する可能性があります。電話録音など 8 kHz ソース音声の場合のみ、8000 を使用してください。 |
input_audio_format |
str |
いいえ | 音声フォーマットです。デフォルト:pcm。サポートされる値:pcm、opus。 |
corpus_text |
str |
いいえ | コンテキストバイアシング用の背景テキスト、エンティティ語彙、またはその他のリファレンス情報。最大:10,000 トークン。詳細については、「コンテキストバイアシング」をご参照ください。 |
主要インターフェイス
OmniRealtimeConversation クラス
from dashscope.audio.qwen_omni import OmniRealtimeConversation
| メソッド | サーバー応答イベント | 説明 |
|---|---|---|
connect() |
session.created、session.updated |
サーバーへの WebSocket 接続を開きます。 |
update_session(...) |
session.updated |
connect() 後に呼び出してセッションを構成します。省略した場合はデフォルト値が適用されます。パラメーターの詳細については、「セッション構成」をご参照ください。 |
append_audio(audio_b64: str) |
なし | Base64 エンコードされた音声チャンクをサーバーの入力バッファーに送信します。enable_turn_detection=True の場合、サーバーが音声境界を検出し自動的にコミットします。enable_turn_detection=False の場合、クライアントがコミットタイミングを制御します (1 イベントあたり最大 15 MiB)。チャンクサイズを小さくすると VAD の応答性が向上します。 |
commit() |
input_audio_buffer.committed |
バッファリングされた音声を認識のためにコミットします。バッファーが空の場合、エラーを返します。enable_turn_detection=True の場合は無効になります。 |
end_session(timeout: int = 20) |
session.finished |
サーバーが最終認識を完了した後にセッションを終了します。VAD モード (デフォルト) の場合、すべての音声送信後に呼び出します。マニュアルモード の場合、commit() 後に呼び出します。非同期バリアント:end_session_async()。 |
close() |
なし | タスクを終了し、接続を閉じます。 |
get_session_id() |
なし | 現在のセッション ID を返します。 |
get_last_response_id() |
なし | 最新の応答 ID を返します。 |
OmniRealtimeCallback インターフェイス
OmniRealtimeCallback をサブクラス化し、そのメソッドを実装してサーバーイベントを処理します。
from dashscope.audio.qwen_omni import OmniRealtimeCallback
| メソッド | パラメーター | 説明 |
|---|---|---|
on_open() |
なし | WebSocket 接続が確立されたときに呼び出されます。 |
on_event(message: dict) |
message: サーバーイベント |
サーバーイベントを受信したときに呼び出されます。 |
on_close(close_status_code, close_msg) |
close_status_code: 状態コード;close_msg: ログメッセージ |
WebSocket 接続が閉じられたときに呼び出されます。 |