Skip to main content

Qwen-Audio-Realtime iOS SDK

Qwen-Audio-Realtime のリアルタイム音声対話用 iOS SDK を使用して、リアルタイム音声入力と音声またはテキスト出力を実装できます。

接続と認証は、WebSocket アクセスをご覧ください。イベントフィールドと JSON の例は、クライアントイベントとサーバーイベントをご覧ください。 ユーザーガイド:モデルの紹介と選択のアドバイスについては、リアルタイム音声会話を参照してください。

クイックスタート

  1. API キーの取得: API キーの取得と設定。
  2. 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キーを置き換えて、機能を試してください。

呼び出し手順

  1. SDKを初期化します。
  2. ユースケースに合わせてパラメータを設定します。nui_initializeのparameters引数を使用して接続および制御パラメータを設定し、nui_set_paramsを使用して音声会話パラメータを設定します。
  3. nui_dialog_start を呼び出して対話を開始します。
  4. onNuiAudioStateChangedで、音声状態に基づいて録音デバイスを開始します。
  5. onNuiNeedAudioDataで録音データを継続的に供給するか、nui_update_audio_dataを呼び出して録音データをアクティブにプッシュします。
  6. onNuiAssistEventCallbackで、モデルから返される音声を受信し続けます。
  7. イベントをリッスンし、onNuiEventCallback でイベント情報を取得します。
  8. nui_dialog_cancelを呼び出して会話を停止し、EVENT_TRANSCRIBER_COMPLETEをリッスンして終了したことを確認します。
  9. 対話機能が不要になったら、nui_release を呼び出して SDK リソースをリリースします。

リクエストパラメータ

接続および制御パラメータ

nui_initialize の parameters 引数に JSON 文字列を渡します。 例:以下のJSON文字列には、すべてのパラメータがリストされているわけではありません。ユースケースに応じて必要に応じてパラメータを追加してください。 サンプルは qwen-audio-3.1-realtime-plus を使用します。モデルを変更する場合は、URL の model と音声対話パラメーターの nls_config.model の両方を変更してください。
{
    "url": "wss://dashscope.aliyuncs.com/api-ws/v1/realtime?model=qwen-audio-3.1-realtime-plus",
  "apikey": "st-****",
  "device_id": "my_device_id",
  "service_mode": "1"
}
パラメータ
パラメータ型必須説明
urlStringはいサービスエンドポイント:
  • wss://dashscope.aliyuncs.com/api-ws/v1/realtime?model=<model_name>
  • 中国(北京):wss://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api-ws/v1/realtime?model=<model_name>
  • シンガポール: wss://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api-ws/v1/realtime?model=<model_name>
置き換え {WorkspaceId} 実際の ワークスペースID.
apikeyStringはいAPI キー。
service_modeStringはいランタイムモード。リアルタイム音声会話の場合、このパラメータを "1" に設定します。
device_idStringはいエンドユーザーを識別する一意の文字列です。アプリ内ユーザーIDまたはクライアント生成のデバイス識別子を使用できます。このIDは主にログのトレースとトラブルシューティングに使用されます。
audio_update_manuallyStringいいえ音声データをアクティブにプッシュするかどうかです。デフォルト:"false"。"true"に設定されており、SDKがAECやVADなどのデバイス上音声機能をサポートしている場合、それらの機能はデフォルトで有効になります。
workspaceStringいいえデバイス上リソースファイルの保存パスです。このパラメータは、audio_update_manuallyが"true"であり、AECやVADなどのデバイス上音声機能が有効になっている場合に必須です。
debug_pathStringいいえログファイルの保存パスです。このパラメータは、nui_initializeでsave_logがtrueの場合にのみ有効になります。この場合、パスは必須です。SDKはローカルに最大2つのログファイルを保持します。
save_wavStringいいえdebug_pathの下にデバッグ音声を保存するかどうかです。デフォルト:"false"。有効な値は"true"および"false"です。このパラメータは、save_logがtrueであり、かつdebug_pathも設定されている場合にのみ有効になります。
max_log_file_sizeintいいえバイト単位の最大ログファイルサイズです。このパラメータは、save_logがtrueの場合にのみ有効になります。デフォルト:104857600(100 × 1024 × 1024バイト、または100 MiB)。
log_track_levelintいいえonNuiLogTrackCallbackを通じて送信されるログのフィルターレベルです。デフォルト:2。有効な値:0(VERBOSE)、1(DEBUG)、2(INFO)、3(WARNING)、4(ERROR)、および5(NONE)。ログは、そのレベルがlog_track_levelとnui_initializeに渡されるlevelの両方以上の場合にのみ返されます。たとえば、log_track_levelが2(INFO)でlevelが3(WARNING)の場合、WARNING以上のレベルのログ(3以上の値)のみが返されます。

音声会話パラメータ

nui_set_params の params 引数に JSON 文字列を渡します。 例:以下のJSON文字列には、すべてのパラメータがリストされているわけではありません。ユースケースに応じて必要に応じてパラメータを追加してください。
{
  "service_type": 4,
  "nls_config": {
    "model": "qwen-audio-3.1-realtime-plus",
    "sr_format": "pcm"
  }
}
パラメータ
トップレベルパラメータ型必須説明
service_typeintはい音声サービスタイプ。リアルタイム音声会話の場合、このパラメータを 4 に設定します。
nls_configobjectはいモデルの選択や会話の動作を含む、コアとなる音声会話の設定。
nls_config.modelstringはいモデル名です。qwen-audio-3.1-realtime-plus、qwen-audio-3.0-realtime-plus、およびqwen-audio-3.0-realtime-flashモデルシリーズをサポートします。
nls_config.sr_formatstringはい入力オーディオ形式。pcm のみがサポートされています。デフォルトの形式は 16 kHz、16 ビット、モノラルPCMです。
nls_config.modalitiesstringいいえ出力モダリティの配列を含む文字列です。有効な値:
  • ["text"]: テキストのみを返します。
  • ["audio", "text"] (デフォルト): オーディオとテキストの両方を返します。
nls_config.voicestringいいえTTS音声です。デフォルトは、3.1 Plusの場合はlonganqian_v3.1、3.0 Plus/Flashの場合はlonganqianです。このパラメータは、最初のsession.updateでのみ設定でき、それ以降の値は無視されます。システム音声:longanqian、longanlingxin、longanlingxi、longanxiaoxin、およびlonganlufeng。音声クローンAPIを通じて作成されたクローンvoice_idを指定することもできます。音声設定を参照してください。3.1 Plusは、longanqian_v3.1、longanhuan_v3.1、longanlingxin_v3.1、longanfengyue_v3.1、xunanchuan_v3.1、beth_v3.1、betty_v3.1、cally_v3.1もサポートしています。
nls_config.enable_speech_emotionBOOLいいえ強化された感情表現を有効にするかどうかです。有効にすると、応答音声の感情の変化がより顕著になります。デフォルト:YES。有効な値:YESおよびNO。
nls_config.instructionsstringいいえセッション全体におけるモデルの役割、応答スタイル、および動作の好みを定義するシステム指示です。
nls_config.max_history_turnsintいいえリクエストで許可される過去の質問と回答のターンの最大数です。有効な値:1~50。デフォルト:20。
nls_config.toolsstringいいえFunction Callingツール定義の配列を含む文字列です。このパラメータを設定すると、モデルはユーザー入力に基づいてツールを呼び出すかどうかを決定します。各定義はtype(必須、functionに固定)と、name(必須)、description(オプション)、およびparameters(オプション)を含むfunctionオブジェクトを使用します。関数に引数がない場合は、parametersを省略します。
例:
[
  {
    "type": "function",
    "function": {
      "name": "get_weather",
      "description": "Queries weather information for a specified city.",
      "parameters": {
        "type": "object",
        "properties": {
          "city": {
            "type": "string",
            "description": "City"
          }
        },
        "required": [
          "city"
        ]
      }
    }
  }
]
nls_config.turn_detectionstringいいえターン検出用のJSONオブジェクトを含む文字列です。省略した場合、セッションはプッシュトゥートークモードを使用し、音声がコミットされ、推論が手動でトリガーされます。設定されている場合、デュプレックス会話モードが有効になります。
nls_config.turn_detection.typestringいいえVADタイプです。server_vad(デフォルト)は音響特徴から発話境界を検出し、自動的に推論をトリガーします。smart_turnは音響信号と意味信号を組み合わせており、フィラー音などの意味内容を持たない音はターンを開始したり、モデルの再生を中断したりしません。
nls_config.turn_detection.thresholdfloatいいえVAD感度です。このパラメータはserver_vadにのみ適用され、smart_turnには影響しません。値が低いほど、VADは静かな音や背景ノイズに対して敏感になり、値が高いほど、より明瞭で大きな音声が求められます。有効な範囲:[-1.0, 1.0]。デフォルト:0.5。
nls_config.turn_detection.silence_duration_msintいいえ発話後のモデル応答がトリガーされるまでの最小無音期間(ミリ秒単位)です。このパラメータはserver_vadにのみ適用され、smart_turnには影響しません。値が低いほどレイテンシは短縮されますが、短い一時停止でトリガーされる可能性があります。有効な範囲:[200, 6000]。デフォルト:800。会話での推奨値:400~800。
nls_config.turn_detection.voiceprint_audio_urlsstringいいえターゲットスピーカー用の公開アクセス可能な事前録音済み音声URLの配列を含む文字列です。このパラメータはsmart_turnにのみ適用されます。デュプレックス会話では、モデルがターゲットスピーカーに集中し、他のスピーカーや背景ノイズを無視するのに役立ちます。最大5つのURLがサポートされています。音声は16 kHz PCMまたはWAVである必要があります。

主要API

NeoNui

nui_initialize

音声会話SDKインスタンスを初期化します。SDKはシングルトンです。nui_releaseを呼び出す前に、再度初期化しないでください。 メソッドシグネチャ
-(NuiResultCode) nui_initialize:(const char *)parameters
                       logLevel:(NuiSdkLogLevel)level
                        saveLog:(BOOL)save_log;
パラメータの説明

パラメータ

型

説明

parameters

char*

認証、接続、およびデバッグパラメータを含む JSON 文字列。接続および制御パラメータを参照してください。

level

NuiSdkLogLevel

SDK 独自のログの出力レベル。

save_log

BOOL

ローカルにログを保存するかどうか。YESに設定した場合、接続および制御パラメータのdebug_pathでパスを指定し、必要に応じてmax_log_file_sizeでファイルサイズを設定します。

nui_set_params

音声会話パラメータをJSON形式で設定します。nui_dialog_startの前にこのメソッドを呼び出します。 メソッドシグネチャ
-(NuiResultCode) nui_set_params:(const char *)params;
パラメータの説明

パラメータ

型

説明

params

char*

音声会話パラメータ。

nui_dialog_start

会話を開始します。 メソッドシグネチャ
-(NuiResultCode) nui_dialog_start:(NuiVadMode)vad_mode
                      dialogParam:(const char *)dialog_params;
パラメータ
パラメータ型説明
vad_modeNuiVadModeVADモード。MODE_P2T に固定されています。
dialog_paramschar*接続および制御パラメータのapikeyが一時的なAPIキーである場合、有効期限が切れた後にここで更新します。
JSON形式:
{
  "apikey": "st-****"
}

nui_dialog_cancel

対話を終了するか、現在のインタラクションをすぐにキャンセルします。 メソッドシグネチャ
-(NuiResultCode) nui_dialog_cancel:(BOOL)force;
パラメータの説明

パラメータ

型

説明

force

BOOL

強制的に終了して最終結果を破棄するかどうか。

  • YES: サーバーが最終的な対話結果を返すのを待たずに、タスクをすぐに終了します。

  • NO: タスクを終了しますが、完全な結果が返されるのを待ちます。

nui_dialog_action

インタラクション中に会話アクションコマンドを送信し、会話コンテキストなどのランタイム動作を更新します。 メソッドシグネチャ
- (NuiResultCode) nui_dialog_action:(const char *)params;
パラメータ
パラメータ型説明
paramschar*会話コンテキストなどのランタイムの動作を更新するために使用されるJSON文字列。
params.typeString"action" に設定します。
params.commandStringランタイムコマンドです。有効な値:
  • function_call: 関数呼び出しリクエストを更新します。
  • play_start: オンデバイスAECが使用されている場合、オーディオの再生が開始されたことをSDKに通知します。
  • play_over: オンデバイスAECが使用されている場合、オーディオの再生が終了したことをSDKに通知します。
params.contextString関数呼び出しリクエストの更新。command が "function_call" の場合に使用されます。
params.context.typeStringイベントタイプです。このパラメータは、commandが"function_call"の場合に必須です。conversation.item.createは、過去のコンテキスト、補足テキスト、またはツール結果の会話アイテムを挿入します。conversation.item.createを送信した後、response.createを使用して別の推論をトリガーします。
params.context.itemobjectparams.context.type が conversation.item.create の場合に必須。作成する会話アイテム。
params.context.responseobjectparams.context.typeがresponse.createの場合はオプションです。この推論のセッションデフォルトを上書きします。省略した場合、現在のセッション設定が使用されます。
context.item パラメータ:
パラメータ型説明
idStringオプションの一意な会話アイテムIDです。省略した場合、サーバーが生成します。指定されたIDが既に存在する場合はエラーが返されます。
typeString必須のアイテムタイプです。有効な値:
  • message: 通常のメッセージ。
  • function_call:関数呼び出しリクエストです。このタイプは通常、サーバーによって生成されます。クライアントはこれを使用して過去のコンテキストを追加することもできます。
  • function_call_output:ツール実行結果です。function_callを受信した後、クライアントはツールを実行し、このタイプを使用して結果を書き戻します。
roleStringmessage に必須。有効な値: system、user、および assistant。
contentarraymessageに必須です。各アイテムにはtypeと関連するデータフィールドが含まれます。systemはtextを持つinput_textをサポートし、userはtextを持つinput_textおよびBase64エンコードされたaudioを持つinput_audioをサポートし、assistantはtextを持つoutput_textをサポートします。
call_idStringfunction_callおよびfunction_call_outputに必須です。関数呼び出しリクエストとその結果を関連付ける一意のIDです。
nameStringfunction_call に必須。呼び出す関数の名前。
argumentsStringfunction_call に必須。JSON文字列としての関数の引数。
outputStringfunction_call_output に必須。JSON文字列としてのツール実行結果。
context.response パラメータ:
パラメータ型説明
modalitiesarray出力モダリティです。["text"]はテキストのみを返します。["audio", "text"](デフォルト)は音声とテキストの両方を返します。
voicestringこの推論の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;
パラメータの説明

パラメータ

型

説明

data

const char *

プッシュするオーディオデータ。

length

int

音声データの長さ (バイト単位)。

first_pack

BOOL

このパラメータを使用する必要はありません。

nui_push_reference_data

audio_update_manuallyが"true"に設定されており、デバイス上の音響エコーキャンセル(AEC)が有効になっている場合、このメソッドを使用してプレーヤーで再生されるオーディオを参照信号としてプッシュします。 メソッドシグネチャ
-(NuiResultCode) nui_push_reference_data:(const char *)data
                                     Len:(int)length
                               FirstPack:(BOOL)first_pack;
パラメータの説明

パラメータ

型

説明

data

const char *

プッシュするオーディオデータ。

length

int

音声データの長さ (バイト単位)。

first_pack

BOOL

このパラメータを使用する必要はありません。

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;
パラメータの説明

パラメータ

型

説明

nuiEvent

NuiCallbackEvent

コールバックイベント。

dialog

long

セッション ID。このパラメータを使用する必要はありません。

wuw

char*

音声ウェイクアップ。このパラメータを使用する必要はありません。

asr_result

char*

音声認識結果。

finish

BOOL

現在の認識ラウンドが終了したかどうか。

code

int

EVENT_ASR_ERROR イベントが発生した場合にのみ有効です。

onNuiAudioStateChanged: オーディオ状態のリッスン

SDKは、このコールバックを使用して、録音の開始または停止のタイミングを通知します。 メソッドシグネチャ
-(void) onNuiAudioStateChanged:(NuiAudioState)state;
NuiAudioState の状態

パラメータ

説明

STATE_OPEN

インタラクションが開始されました。録音デバイスを開いて録音を開始できます。

STATE_PAUSE

インタラクションが停止しました。録音を停止できます。

STATE_CLOSE

SDK インスタンスがリリースされました。録音デバイスを完全に閉じることができます。

onNuiNeedAudioData: オーディオデータの供給

会話開始後、このコールバックは継続的にトリガーされます。このコールバックで音声データを供給します。audio_update_manuallyが"true"に設定されている場合、このコールバックを使用する必要はありません。 メソッドシグネチャ
-(int) onNuiNeedAudioData:(char *)audioData length:(int)len;
パラメータの説明

パラメータ

型

説明

audioData

char *

供給する音声データ。

len

int

供給された音声データのサイズ (バイト単位)。

onNuiAssistEventCallback: 補助データと情報を受信する

SDK から補助イベントおよび関連データを受信します。 メソッドシグネチャ
-(void) onNuiAssistEventCallback:(NuiCallbackEvent)nuiEvent
                            info:(char*)info
                         infoLen:(int)info_len
                          buffer:(char*)buffer
                             len:(int)len;
パラメータの説明

パラメータ

型

説明

nuiEvent

NuiCallbackEvent

コールバックイベント。

info

char *

このパラメータを使用する必要はありません。

info_len

int

このパラメータを使用する必要はありません。

buffer

char *

モデルから返されたTTSオーディオなどの補助データ。

len

int

補助データの長さ (バイト単位)。

onNuiLogTrackCallback: トラッキングログをリッスンする

このコールバックは SDK の詳細な内部ログを受信し、問題の特定とデバッグを支援します。
-(void) onNuiLogTrackCallback:(NuiSdkLogLevel)level
                   logMessage:(const char *)log;

NuiCallbackEvent: イベントタイプ

イベント説明
EVENT_TRANSCRIBER_STARTEDタスクが正常に開始されました。
EVENT_VAD_STARTタスク開始直後にトリガーされます。これは、発話の開始が検出されたことを意味するものではありません。
EVENT_VAD_END発話の終わりが検出されました。
EVENT_ASR_PARTIAL_RESULT中間音声認識結果。
EVENT_ASR_ERROR音声会話中にエラーが発生しました。
EVENT_MIC_ERROR2秒連続でオーディオデータが受信されなかった場合にトリガーされます。
EVENT_SENTENCE_END文の終わりが検出され、完全な認識結果が返されました。
EVENT_TRANSCRIBER_COMPLETE音声会話が終了しました。
EVENT_AUDIO_TRANSCRIPTION音声出力の増分テキスト転記イベントです。転記セグメントはストリーミングモードで返されます。
EVENT_AUDIO_TRANSCRIPTION_COMPLETEDオーディオ出力のトランスクリプトが完了しました。
EVENT_OTHER_RESULTFunction Callingの結果などのその他のイベント情報。
EVENT_ASR_TTS_STARTモデルがTTSオーディオの返送を開始しました。
EVENT_ASR_TTS_DATAモデルから返されたTTSオーディオ。
EVENT_ASR_TTS_COMPLETEモデルがTTSオーディオの返送を完了しました。
EVENT_AEC_DATAAECによって処理されたオーディオデータ。