Qwen-Audio-3.0-Realtime用のiOS SDKを使用して、オーディオ入力とオーディオまたはテキスト出力を備えたリアルタイム音声会話を構築します。
ユーザーガイド:モデルの紹介と選択のアドバイスについては、リアルタイム音声会話を参照してください。
クイックスタート
-
API キーの取得: API キーの取得と設定。
-
SDKをダウンロードしてサンプルコードを実行します:
- 最新のSDKパッケージをダウンロードします。
- ZIP パッケージを抽出し、
nuisdk.xcframeworkをプロジェクトに追加します。 - Build Phases > Link Binary With Libraries で、
nuisdk.xcframeworkを追加します。 - General > Frameworks, Libraries, and Embedded Contentで、
nuisdk.xcframeworkをEmbed & Signに設定します。 - Xcodeでプロジェクトを開きます。サンプルコードは
DashQwenAudioChatViewController.mにあります。APIキーを置き換えて、機能を試してください。
呼び出し手順
- SDKを初期化します。
- ユースケースに合わせてパラメータを設定します。nui_initializeの
parameters引数を使用して接続および制御パラメータを設定し、nui_set_paramsを使用して音声会話パラメータを設定します。 - nui_dialog_start を呼び出して対話を開始します。
- onNuiAudioStateChangedで、音声状態に基づいて録音デバイスを開始します。
- onNuiNeedAudioDataで録音データを継続的に供給するか、nui_update_audio_dataを呼び出して録音データをアクティブにプッシュします。
- onNuiAssistEventCallbackで、モデルから返される音声を受信し続けます。
- イベントをリッスンし、onNuiEventCallback でイベント情報を取得します。
- nui_dialog_cancelを呼び出して会話を停止し、
EVENT_TRANSCRIBER_COMPLETEをリッスンして終了したことを確認します。 - 対話機能が不要になったら、nui_release を呼び出して SDK リソースをリリースします。
リクエストパラメータ
接続および制御パラメータ
nui_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は主にログのトレースとトラブルシューティングに使用されます。 |
|
| いいえ | 音声データをアクティブにプッシュするかどうかです。デフォルト: |
|
| いいえ | デバイス上リソースファイルの保存パスです。このパラメータは、 |
|
| いいえ | ログファイルの保存パスです。このパラメータは、 |
|
| いいえ |
|
|
| いいえ | バイト単位の最大ログファイルサイズです。このパラメータは、 |
|
| いいえ |
|
音声会話パラメータ
nui_set_params の 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
NeoNui
nui_initialize
音声会話SDKインスタンスを初期化します。SDKはシングルトンです。nui_releaseを呼び出す前に、再度初期化しないでください。
メソッドシグネチャ-(NuiResultCode) nui_initialize:(const char *)parameters
logLevel:(NuiSdkLogLevel)level
saveLog:(BOOL)save_log;
パラメータの説明
パラメータ | 型 | 説明 |
|---|---|---|
|
| 認証、接続、およびデバッグパラメータを含む JSON 文字列。接続および制御パラメータを参照してください。 |
|
| SDK 独自のログの出力レベル。 |
| BOOL | ローカルにログを保存するかどうか。 |
nui_set_params
音声会話パラメータをJSON形式で設定します。nui_dialog_startの前にこのメソッドを呼び出します。
メソッドシグネチャ-(NuiResultCode) nui_set_params:(const char *)params;
パラメータの説明
パラメータ | 型 | 説明 |
|---|---|---|
|
|
nui_dialog_start
会話を開始します。
メソッドシグネチャ-(NuiResultCode) nui_dialog_start:(NuiVadMode)vad_mode
dialogParam:(const char *)dialog_params;
パラメータ
| パラメータ | 型 | 説明 |
|---|---|---|
|
| VADモード。 |
|
| 接続および制御パラメータの |
nui_dialog_cancel
対話を終了するか、現在のインタラクションをすぐにキャンセルします。
メソッドシグネチャ-(NuiResultCode) nui_dialog_cancel:(BOOL)force;
パラメータの説明
パラメータ | 型 | 説明 |
|---|---|---|
|
| 強制的に終了して最終結果を破棄するかどうか。
|
nui_dialog_action
インタラクション中に会話アクションコマンドを送信し、会話コンテキストなどのランタイム動作を更新します。
メソッドシグネチャ- (NuiResultCode) nui_dialog_action:(const char *)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"
}
}
nui_update_audio_data
audio_update_manuallyが"true"に設定されている場合、録音データはonNuiNeedAudioDataを通じて供給されなくなります。代わりに、このメソッドを使用してアクティブにプッシュしてください。
-(NuiResultCode) nui_update_audio_data:(const char *)data
Len:(int)length
FirstPack:(BOOL)first_pack;
パラメータの説明
パラメータ | 型 | 説明 |
|---|---|---|
|
| プッシュするオーディオデータ。 |
|
| 音声データの長さ (バイト単位)。 |
|
| このパラメータを使用する必要はありません。 |
nui_push_reference_data
audio_update_manuallyが"true"に設定されており、デバイス上の音響エコーキャンセル(AEC)が有効になっている場合、このメソッドを使用してプレーヤーで再生されるオーディオを参照信号としてプッシュします。
-(NuiResultCode) nui_push_reference_data:(const char *)data
Len:(int)length
FirstPack:(BOOL)first_pack;
パラメータの説明
パラメータ | 型 | 説明 |
|---|---|---|
|
| プッシュするオーディオデータ。 |
|
| 音声データの長さ (バイト単位)。 |
|
| このパラメータを使用する必要はありません。 |
nui_release
すべての内部SDKリソースを解放し、実行中のすべてのタスクを強制終了します。このメソッドを呼び出すと、SDKインスタンスは使用できなくなります。再度使用するには、nui_initializeを呼び出して再初期化する必要があります。
メソッドシグネチャ-(NuiResultCode) nui_release;
nui_get_version
現在の SDK バージョンを取得します。このメソッドは nui_initialize が呼び出された後にのみ値を返します。
-(const char*) nui_get_version;
戻り値
現在の SDK バージョン。
nui_get_all_response
現在のイベントコールバックの完全な情報を取得します。
メソッドシグネチャ-(const char*) nui_get_all_response;
戻り値
JSON 文字列としての完全なイベント情報。
NeoNuiSdkDelegate: コールバックリスナー
onNuiEventCallback: イベント情報のリッスン
メソッドシグネチャ-(void) onNuiEventCallback:(NuiCallbackEvent)nuiEvent
dialog:(long)dialog
kwsResult:(const char *)wuw
asrResult:(const char *)asr_result
ifFinish:(BOOL)finish
retCode:(int)code;
パラメータの説明
パラメータ | 型 | 説明 |
|---|---|---|
| コールバックイベント。 | |
|
| セッション ID。このパラメータを使用する必要はありません。 |
|
| 音声ウェイクアップ。このパラメータを使用する必要はありません。 |
|
| 音声認識結果。 |
|
| 現在の認識ラウンドが終了したかどうか。 |
|
|
|
onNuiAudioStateChanged: オーディオ状態のリッスン
SDKは、このコールバックを使用して、録音の開始または停止のタイミングを通知します。
メソッドシグネチャ-(void) onNuiAudioStateChanged:(NuiAudioState)state;
NuiAudioState の状態
パラメータ | 説明 |
|---|---|
| インタラクションが開始されました。録音デバイスを開いて録音を開始できます。 |
| インタラクションが停止しました。録音を停止できます。 |
| SDK インスタンスがリリースされました。録音デバイスを完全に閉じることができます。 |
onNuiNeedAudioData: オーディオデータの供給
会話開始後、このコールバックは継続的にトリガーされます。このコールバックで音声データを供給します。audio_update_manuallyが"true"に設定されている場合、このコールバックを使用する必要はありません。
-(int) onNuiNeedAudioData:(char *)audioData length:(int)len;
パラメータの説明
パラメータ | 型 | 説明 |
|---|---|---|
|
| 供給する音声データ。 |
|
| 供給された音声データのサイズ (バイト単位)。 |
onNuiAssistEventCallback: 補助データと情報を受信する
SDK から補助イベントおよび関連データを受信します。
メソッドシグネチャ-(void) onNuiAssistEventCallback:(NuiCallbackEvent)nuiEvent
info:(char*)info
infoLen:(int)info_len
buffer:(char*)buffer
len:(int)len;
パラメータの説明
パラメータ | 型 | 説明 |
|---|---|---|
|
| コールバックイベント。 |
|
| このパラメータを使用する必要はありません。 |
|
| このパラメータを使用する必要はありません。 |
|
| モデルから返されたTTSオーディオなどの補助データ。 |
|
| 補助データの長さ (バイト単位)。 |
onNuiLogTrackCallback: トラッキングログをリッスンする
このコールバックは SDK の詳細な内部ログを受信し、問題の特定とデバッグを支援します。
-(void) onNuiLogTrackCallback:(NuiSdkLogLevel)level
logMessage:(const char *)log;
NuiCallbackEvent: イベントタイプ
| イベント | 説明 |
|---|---|
| タスクが正常に開始されました。 |
| タスク開始直後にトリガーされます。これは、発話の開始が検出されたことを意味するものではありません。 |
| 発話の終わりが検出されました。 |
| 中間音声認識結果。 |
| 音声会話中にエラーが発生しました。 |
| 2秒連続でオーディオデータが受信されなかった場合にトリガーされます。 |
| 文の終わりが検出され、完全な認識結果が返されました。 |
| 音声会話が終了しました。 |
| 音声出力の増分テキスト転記イベントです。転記セグメントはストリーミングモードで返されます。 |
| オーディオ出力のトランスクリプトが完了しました。 |
| Function Callingの結果などのその他のイベント情報。 |
| モデルがTTSオーディオの返送を開始しました。 |
| モデルから返されたTTSオーディオ。 |
| モデルがTTSオーディオの返送を完了しました。 |
| AECによって処理されたオーディオデータ。 |