Qwen-Audio-3.0-Realtime 用の Android SDK を使用して、音声入力と音声またはテキスト出力を備えたリアルタイム音声対話を構築します。
ユーザーガイド:モデルの紹介と選択のアドバイスについては、リアルタイム音声会話を参照してください。
クイックスタート
-
SDKをダウンロードしてサンプルコードを実行します:
- 最新のSDKパッケージをダウンロードします。
- ZIPパッケージを抽出します。
app/libsからAAR SDKを取得し、プロジェクトの依存関係に追加します。Android C++統合の場合、ZIPパッケージ内のandroid_libsとandroid_includeを使用して、動的ライブラリとヘッダーファイルを取得します。 - Android Studioでプロジェクトを開きます。サンプルコードは
DashQwenAudioChatActivity.javaにあります。APIキーを置き換えて、機能を試してください。
呼び出し手順
- SDKを初期化します。
- ユースケースに合わせてパラメータを設定します。initializeの
parameters引数を使用して接続および制御パラメータを設定し、setParamsを使用して音声会話パラメータを設定します。 - startDialog を呼び出して会話を開始します。
- onNuiAudioStateChangedで、音声状態に基づいて録音デバイスを開始します。
- onNuiNeedAudioDataで録音データを継続的に供給するか、updateAudioを呼び出して録音データをアクティブにプッシュします。
- onNuiAssistEventCallbackで、モデルから返される音声を受信し続けます。
- イベントをリッスンし、onNuiEventCallback でイベント情報を取得します。
- stopDialogを呼び出して会話を停止し、
EVENT_TRANSCRIBER_COMPLETEをリッスンして終了したことを確認します。 - 会話機能が不要になったら、releaseを呼び出してSDKリソースを解放します。
リクエストパラメータ
接続および制御パラメータ
initialize の parameters 引数にJSON文字列を渡します。
例:以下のJSON文字列には、すべてのパラメータがリストされているわけではありません。ユースケースに応じて必要に応じてパラメータを追加してください。
{
"url": "wss://dashscope.aliyuncs.com/api-ws/v1/inference",
"apikey": "st-****",
"device_id": "my_device_id",
"service_mode": "1"
}
パラメータ
| パラメータ | 型 | 必須 | 説明 |
|---|---|---|---|
|
| はい | サービスエンドポイント:
{WorkspaceId} 実際の ワークスペースID. |
|
| はい | API キー。 |
|
| はい | ランタイムモード。リアルタイム音声会話の場合、このパラメータを |
|
| はい | エンドユーザーを識別する一意の文字列です。アプリ内ユーザーIDまたはクライアント生成のデバイス識別子を使用できます。このIDは主にログのトレースとトラブルシューティングに使用されます。 |
|
| いいえ | 音声データをアクティブにプッシュするかどうかです。デフォルト: |
|
| いいえ | デバイス上リソースファイルの保存パスです。このパラメータは、 |
|
| いいえ | ログファイルの保存パスです。このパラメータは、 |
|
| いいえ |
|
|
| いいえ | バイト単位の最大ログファイルサイズです。このパラメータは、 |
|
| いいえ |
|
|
| いいえ | 高度なデバイス上AEC設定です。このオブジェクトは、 |
|
| いいえ | デバイス上AECを有効にするかどうかです。 |
|
| いいえ | デバイス上AECモジュールによって処理された音声を保存するかどうかです。 |
|
| いいえ |
|
|
| いいえ | 高度なデバイス上VAD設定です。このオブジェクトは、 |
|
| いいえ | デバイス上VADを有効にするかどうかです。 |
|
| いいえ | デバイス上VADモジュールによって処理された音声を保存するかどうかです。 |
音声会話パラメータ
setParams の params 引数にJSON文字列を渡します。
例:以下のJSON文字列には、すべてのパラメータがリストされているわけではありません。ユースケースに応じて必要に応じてパラメータを追加してください。
{
"service_type": 4,
"nls_config": {
"model": "qwen-audio-3.1-realtime-plus",
"sr_format": "pcm"
}
}
パラメータ
| トップレベルパラメータ | 型 | 必須 | 説明 |
|---|---|---|---|
|
| はい | 音声サービスタイプ。リアルタイム音声会話の場合、このパラメータを |
|
| はい | モデルの選択や会話の動作を含む、コアとなる音声会話の設定。 |
|
| はい | モデル名です。 |
|
| はい | 入力オーディオ形式。 |
|
| いいえ | 出力モダリティの配列を含む文字列です。有効な値:
|
|
| いいえ | TTS音声です。デフォルトは、3.1 Plusの場合は 3.1 Plusは、 |
|
| いいえ | 強化された感情表現を有効にするかどうかです。有効にすると、応答音声の感情の変化がより顕著になります。デフォルト: |
|
| いいえ | セッション全体におけるモデルの役割、応答スタイル、および動作の好みを定義するシステム指示です。 |
|
| いいえ | リクエストで許可される過去の質問と回答のターンの最大数です。有効な値:1~50。デフォルト: |
|
| いいえ | Function Callingツール定義の配列を含む文字列です。このパラメータを設定すると、モデルはユーザー入力に基づいてツールを呼び出すかどうかを決定します。各定義は |
|
| いいえ | ターン検出用のJSONオブジェクトを含む文字列です。省略した場合、セッションはプッシュトゥートークモードを使用し、音声がコミットされ、推論が手動でトリガーされます。設定されている場合、デュプレックス会話モードが有効になります。 |
|
| いいえ | VADタイプです。 |
|
| いいえ | VAD感度です。このパラメータは |
|
| いいえ | 発話後のモデル応答がトリガーされるまでの最小無音期間(ミリ秒単位)です。このパラメータは |
|
| いいえ | ターゲットスピーカー用の公開アクセス可能な事前録音済み音声URLの配列を含む文字列です。このパラメータは |
主要API
NativeNui
initialize
音声会話SDKインスタンスを初期化します。SDKはシングルトンです。releaseを呼び出す前に、複数回初期化しないでください。
このメソッドはブロックされるため、非UIスレッドで呼び出してください。
メソッドシグネチャpublic synchronized int initialize(final INativeNuiCallback callback,
String parameters,
final Constants.LogLevel level,
final boolean save_log)
パラメータ
パラメータ | 型 | 説明 |
|---|---|---|
| イベントおよびデータコールバックインターフェースの実装。 | |
|
| 認証、接続、およびデバッグパラメータを含むJSON文字列です。接続および制御パラメータを参照してください。 |
|
| SDK独自のログの出力レベルを制御します。 |
|
| ローカルログを保存するかどうかです。 |
setParams
JSON形式で音声会話パラメータを設定します。startDialogの前にこのメソッドを呼び出します。
メソッドシグネチャpublic synchronized int setParams(String params)
パラメータ
パラメータ | 型 | 説明 |
|---|---|---|
|
|
startDialog
会話を開始します。
メソッドシグネチャpublic synchronized int startDialog(VadMode vad_mode, String dialog_params)
パラメータ
| パラメータ | 型 | 説明 |
|---|---|---|
|
| VADモード。 |
|
| 接続および制御パラメータの |
stopDialog
会話を終了します。このメソッドを呼び出すと、サーバーは最終的な会話結果を返し、タスクを終了します。
メソッドシグネチャpublic synchronized int stopDialog();
cancelDialog
会話を即座に終了します。このメソッドを呼び出すと、サーバーが最終的な会話結果を返すのを待たずに、タスクがすぐに終了します。
メソッドシグネチャpublic synchronized int cancelDialog();
updateAction
インタラクション中に会話アクションコマンドを送信し、会話コンテキストなどのランタイム動作を更新します。
メソッドシグネチャpublic synchronized int updateAction(String params);
パラメータ
| パラメータ | 型 | 説明 |
|---|---|---|
|
| 会話コンテキストなどのランタイムの動作を更新するために使用されるJSON文字列。 |
|
|
|
|
| ランタイムコマンドです。有効な値:
|
|
| 関数呼び出しリクエストの更新。 |
|
| イベントタイプです。このパラメータは、 |
|
|
|
|
|
|
context.item パラメータ:
| パラメータ | 型 | 説明 |
|---|---|---|
|
| オプションの一意な会話アイテムIDです。省略した場合、サーバーが生成します。指定されたIDが既に存在する場合はエラーが返されます。 |
|
| 必須のアイテムタイプです。有効な値:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
context.response パラメータ:
| パラメータ | 型 | 説明 |
|---|---|---|
|
| 出力モダリティです。 |
|
| この推論のTTS音声をオーバーライドします。 |
例:
{
"type": "action",
"command": "function_call",
"context": {
"item": {
"call_id": "call_xxxx",
"output": "{\"city\":\"Hangzhou\",\"condition\":\"sunny\",\"temperature\":18}",
"type": "function_call_output"
},
"type": "conversation.item.create"
}
}
{
"type": "action",
"command": "function_call",
"context": {
"response": {
"modalities": ["text", "audio"]
},
"type": "response.create"
}
}
updateAudio
audio_update_manuallyが"true"に設定されている場合、onNuiNeedAudioDataを通じてデータを供給する代わりに、このメソッドを呼び出して録音データをアクティブにプッシュします。
public synchronized int updateAudio(byte[] data, int len,
boolean first_pack);
パラメータ
パラメータ | 型 | 説明 |
|---|---|---|
|
| プッシュするオーディオデータ。 |
|
| プッシュするオーディオデータのバイト数。 |
|
| このパラメータは無視してください。 |
updateRefAudio
audio_update_manuallyが"true"に設定されており、デバイス上AECが有効になっている場合、このメソッドを呼び出して、プレーヤーで再生される音声を参照信号としてプッシュします。
public synchronized int updateRefAudio(byte[] data, int len,
boolean first_pack);
パラメータ
パラメータ | 型 | 説明 |
|---|---|---|
|
| プッシュするオーディオデータ。 |
|
| プッシュするオーディオデータのバイト数。 |
|
| このパラメータは無視してください。 |
release
SDKのすべての内部リソースを解放します。このメソッドを呼び出すと、SDKインスタンスは使用できなくなります。再度使用するには、initializeを呼び出して再初期化する必要があります。
メソッドシグネチャpublic synchronized int release();
GetVersion
現在のSDKバージョン情報を取得します。
メソッドシグネチャpublic synchronized String GetVersion();
戻り値
現在のSDKバージョン情報。
INativeNuiCallback: リスナーコールバック
onNuiEventCallback: イベント情報のリッスン
メソッドシグネチャvoid onNuiEventCallback(NuiEvent event, final int resultCode, final int arg2, KwsResult kwsResult, AsrResult asrResult);
パラメータ
パラメータ | 型 | 説明 |
|---|---|---|
| コールバックイベント。 | |
|
|
|
|
| 予約済みパラメータ。 |
|
| 音声認識結果。 |
|
| 音声ウェイクアップ機能。このパラメータを使用する必要はありません。 |
onNuiAudioStateChanged: オーディオ状態のリッスン
SDKは、このコールバックを使用して、録音の開始または停止のタイミングを通知します。
メソッドシグネチャvoid onNuiAudioStateChanged(AudioState state);
AudioStateの状態
状態 | 説明 |
|---|---|
| インタラクションが開始されました。録音デバイスを開いて録音を開始できます。 |
| インタラクションが停止しました。録音を停止できます。 |
| SDKインスタンスがリリースされました。録音デバイスを完全に閉じることができます。 |
onNuiNeedAudioData: オーディオデータの供給
会話開始後、このコールバックは継続的にトリガーされます。このコールバックで音声データを供給します。audio_update_manuallyが"true"に設定されている場合、このコールバックを使用する必要はありません。
int onNuiNeedAudioData(byte[] buffer, int len);
パラメータ
パラメータ | 型 | 説明 |
|---|---|---|
|
| 格納するオーディオデータ。 |
|
| 格納するオーディオデータのバイト数。 |
実際に格納されたバイト数。
onNuiAssistEventCallback:補助イベントとデータの受信
このコールバックは、SDKから補助イベントおよび関連データを受信します。
メソッドシグネチャvoid onNuiAssistEventCallback_(int event, byte[] info, int info_len,
byte[] data);
パラメータ
パラメータ | 型 | 説明 |
|---|---|---|
|
|
|
|
| このパラメータは無視してください。 |
|
| このパラメータは無視してください。 |
|
| モデルから返されたTTSオーディオなどの補助データ。 |
onNuiLogTrackCallback: トレースログのリッスン
このコールバックは、トラブルシューティングとデバッグに役立つSDKからの詳細な内部ログを受信します。
default void onNuiLogTrackCallback(Constants.LogLevel level, String log)
NuiEvent: イベントタイプ
| イベント | 説明 |
|---|---|
| タスクが正常に開始されました。 |
| タスク開始直後にトリガーされます。これは、発話の開始が検出されたことを意味するものではありません。 |
| 発話の終わりが検出されました。 |
| 中間音声認識結果。 |
| 音声会話中にエラーが発生しました。 |
| 2秒連続でオーディオデータが受信されなかった場合にトリガーされます。 |
| 文の終わりが検出され、完全な認識結果が返されました。 |
| 音声会話が終了しました。 |
| 音声出力の増分テキスト転記イベントです。転記セグメントはストリーミングモードで返されます。 |
| オーディオ出力のトランスクリプトが完了しました。 |
| Function Callingの結果などのその他のイベント情報。 |
| モデルがTTSオーディオの返送を開始しました。 |
| モデルから返されたTTSオーディオ。 |
| モデルがTTSオーディオの返送を完了しました。 |
| AECによって処理されたオーディオデータ。 |