DashScope Java SDK を使用して Qwen-ASR-Realtime を呼び出します。
ユーザーガイド: モデルの概要、機能、および完全なサンプルコードについては、「リアルタイム音声認識 - Qwen」をご参照ください。
前提条件
-
DashScope SDK 2.22.5 以降 (SDK のインストール)
-
クライアントとサーバー間のインタラクションフローを理解していること
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 に置き換えてください。既存のドメインは引き続き完全に機能します。
インタラクションモード
Qwen-ASR-Realtime は、音声処理のタイミングを決定するための 2 つのモードをサポートしています。
|
モード |
|
動作方法 |
|
VAD モード (デフォルト) |
|
サーバー側で音声区間検出 (VAD) を使用して発話区間を検出し、音声バッファーを認識処理にコミットするタイミングを決定します。 |
|
マニュアルモード |
|
クライアントが |
リクエストパラメーター
接続パラメーター (OmniRealtimeParam)
これらのパラメーターは、OmniRealtimeParam クラスのチェーンメソッドを使用して設定します。
|
パラメーター |
型 |
必須 |
説明 |
|
|
|
はい |
使用するモデル。例: |
|
|
|
はい |
サービスエンドポイント。中国 (北京): |
|
|
|
いいえ |
API キー。 |
セッション構成 (OmniRealtimeConfig)
これらのパラメーターは、OmniRealtimeConfig クラスのチェーンメソッドを使用して設定します。
|
パラメーター |
型 |
必須 |
説明 |
|
|
|
はい |
出力モダリティ。固定値: |
|
|
|
いいえ |
サーバー側 VAD を有効にします。無効にした場合、認識処理を手動でトリガーするために |
|
|
|
いいえ |
VAD タイプ。固定値: |
|
|
|
いいえ |
VAD 感度しきい値。推奨値: デフォルト: 値を下げると感度が高まりますが(バックグラウンドノイズでトリガーされる可能性あり)、値を上げると感度が低下し、ノイズ環境での誤トリガーを回避しやすくなります。 |
|
|
|
いいえ |
発話終了を示す無音持続時間(ミリ秒単位)。推奨値: デフォルト: 短い持続時間(例:300 ms)は応答を高速化しますが、自然なポーズを分割する可能性があります。長い持続時間(例:1200 ms)はポーズをより適切に処理できますが、レイテンシーが増加します。 |
|
|
|
いいえ |
音声認識設定。詳細については、「文字起こしパラメーター」をご参照ください。 |
文字起こしパラメーター (OmniRealtimeTranscriptionParam)
これらのパラメーターは、OmniRealtimeTranscriptionParam クラスのセッターメソッドを使用して設定します。
|
パラメーター |
型 |
必須 |
説明 |
|
|
|
いいえ |
音声ソースの言語。サポートされている言語については、「サポートされている言語」をご参照ください。 |
|
|
|
いいえ |
音声サンプリングレート(Hz 単位)。有効値: デフォルト:
|
|
|
|
いいえ |
音声エンコード形式。有効値: |
|
|
|
いいえ |
コンテキストバイアシング用のコンテキストテキスト。認識精度を向上させるために、背景テキスト、エンティティ語彙、または参照資料を提供します。最大:10,000 トークン。 |
主要インターフェイス
OmniRealtimeConversation
インポート:com.alibaba.dashscope.audio.omni.OmniRealtimeConversation
このクラスは WebSocket のライフサイクル(サーバーへの接続、音声送信、セッション終了)を管理します。
会話の作成
OmniRealtimeConversation conversation =
new OmniRealtimeConversation(param, callback);
指定された接続パラメーターおよびコールバックハンドラーを使用して、新しい会話インスタンスを作成します。
サーバーへの接続
conversation.connect();
WebSocket 接続を開きます。サーバーは session.created イベントおよび session.updated イベントで応答します。
スロー:NoApiKeyException、InterruptedException。
セッションの構成
conversation.updateSession(config);
接続確立後にセッション構成を更新します。サーバーは session.updated イベントで応答します。呼び出されない場合、サーバーはデフォルト設定を使用します。
音声データの送信
conversation.appendAudio(audioBase64);
Base64 エンコードされた音声セグメントをサーバー側の音声バッファーに追加します。
-
VAD モード (
enableTurnDetection=true):サーバーが発話区間を検出し、バッファーを処理するタイミングを決定します。 -
マニュアルモード (
enableTurnDetection=false):音声はバッファーに蓄積され、認識処理をトリガーするためにcommit()を呼び出すまで待機します。各イベントには最大 15 MiB の音声データを含めることができます。
音声バッファーのコミット
conversation.commit();
バッファー内の音声を認識処理に送信します。サーバーは input_audio_buffer.committed イベントで応答します。
このメソッドはマニュアルモード (enableTurnDetection=false) のみで使用可能です。音声バッファーが空の場合、エラーが発生します。
セッションの終了
conversation.endSession(); // 同期
// または
conversation.endSessionAsync(); // 非同期
サーバーに残りの音声の処理を完了させ、セッションを終了するよう通知します。サーバーは session.finished イベントで応答します。
呼び出しタイミング:
-
VAD モード:音声の送信を完了した後。
-
マニュアルモード:
commit()を呼び出した後。
接続のクローズ
conversation.close();
タスクを停止し、WebSocket 接続を即座に閉じます。
セッション ID および応答 ID の取得
String sessionId = conversation.getSessionId();
String responseId = conversation.getResponseId();
-
getSessionId()は、現在のタスクのセッション ID を返します。 -
getResponseId()は、最新のサーバー応答の応答 ID を返します。
OmniRealtimeCallback
インポート:com.alibaba.dashscope.audio.omni.OmniRealtimeCallback
このクラスを継承し、コールバックメソッドを実装することで、サーバーイベントを処理します。
|
メソッド |
パラメーター |
トリガー条件 |
|
|
なし |
WebSocket 接続が確立されました。 |
|
|
|
サーバーイベントを受信したとき。 |
|
|
|
WebSocket 接続が閉じられました。 |