Skip to main content

Qwen-Audio-Realtime HarmonyOS SDK

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

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

クイックスタート

  1. APIキーを取得して設定します。
  2. SDKをダウンロードしてサンプルコードを実行します:
    • 最新のSDKパッケージをダウンロードします。
    • .tar.gz SDK パッケージを抽出します。entry/libs から HAR SDK を取得し、プロジェクトの依存関係に追加します。C++ 統合の場合、パッケージ内の native/libs と native/include を使用して動的ライブラリとヘッダーファイルを取得します。
    • DevEco Studio でプロジェクトを開きます。サンプルコードは DashQwenAudioChatPage.ets にあります。API キーを置き換えて機能を試してください。

呼び出し手順

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

音声デバイス管理

AudioRecord と AudioTrack を使用する Android とは異なり、HarmonyOS は @kit.AudioKit を通じて音声のキャプチャと再生を提供し、録音には AudioCapturer を、再生には AudioRenderer を使用します。サンプルプロジェクトでは、再利用のために AudioRecorder.ets と AudioPlayer.ets ユーティリティクラスが提供されています。

録音 (AudioCapturer)

  • 作成: audio.createAudioCapturer(capturerOptions) を非同期に呼び出します。サンプルでは 16 kHz、16 ビット、モノラル音声 (SAMPLE_RATE_16000、CHANNEL_1、SAMPLE_FORMAT_S16LE、および ENCODING_TYPE_RAW) を使用します。
  • 音声ソース (audio.SourceType):
    • SOURCE_TYPE_MIC: 生のマイク音声。SDK 内部の AEC が有効な場合にこのソースを使用し、updateAudio を呼び出してデータを SDK に送信します。
    • SOURCE_TYPE_VOICE_COMMUNICATION: システムがすでにエコーキャンセルを実行した通話音声。SDK 内部の AEC が無効な場合にこのソースを使用し、onNuiNeedAudioData を通じて音声を供給します。
  • データイベント: capturer.on('readData', (buffer: ArrayBuffer) => void) を呼び出して、録音された音声を継続的に取得します。
  • 状態イベント: capturer.on('stateChange', (state: audio.AudioState) => void) を呼び出します。STATE_RUNNING は録音が開始されたことを示し、STATE_STOPPED は停止したことを示します。
  • 制御: start() を呼び出して開始し、stop() を呼び出して停止し、release() を呼び出してレコーダーをリリースします。
import { audio } from '@kit.AudioKit';

const audioStreamInfo: audio.AudioStreamInfo = {
  samplingRate: audio.AudioSamplingRate.SAMPLE_RATE_16000,
  channels: audio.AudioChannel.CHANNEL_1,
  sampleFormat: audio.AudioSampleFormat.SAMPLE_FORMAT_S16LE,
  encodingType: audio.AudioEncodingType.ENCODING_TYPE_RAW
};
const audioCapturerInfo: audio.AudioCapturerInfo = {
  source: audio.SourceType.SOURCE_TYPE_MIC,
  capturerFlags: 0
};
const options: audio.AudioCapturerOptions = { streamInfo: audioStreamInfo, capturerInfo: audioCapturerInfo };

audio.createAudioCapturer(options).then((capturer) => {
  capturer.on('readData', (buffer: ArrayBuffer) => {
    // Send the recorded audio to the SDK.
    nuiInstance.updateAudio(buffer, false);
  });
  capturer.start();
});
注: HarmonyOS は AudioCapturer を非同期に作成します。作成が完了した後にのみ start() を呼び出してください。STATE_OPEN でレコーダーを作成してすぐに開始しないでください。最初に作成し、次に STATE_OPEN コールバックから start() を呼び出します。サンプルでは doInit 中にレコーダーを作成し、onNuiAudioStateChanged 中に開始します。

再生 (AudioRenderer)

  • 作成: audio.createAudioRenderer(rendererOptions) を非同期に呼び出します。
  • サンプルレート: DashScope Realtime によって返される合成応答音声は 24 kHz です。このレートを AudioPlayer コンストラクタに渡します。
  • データイベント: renderer.on('writeData', (data: ArrayBuffer): audio.AudioDataCallbackResult => ...) を呼び出して再生用の音声を供給します。バッファを満たした後は AudioDataCallbackResult.VALID を返し、データが利用できない場合は INVALID を返します。
  • 状態イベント: renderer.on('stateChange', (state: audio.AudioState) => void) を呼び出して、再生の開始および終了イベントをリッスンします。
  • 制御: start() を呼び出して開始し、stop() を呼び出して停止し、pause() を呼び出して再生を一時停止します。一時停止するとバッファリングされたデータが保持されます。
import { audio } from '@kit.AudioKit';

const audioStreamInfo: audio.AudioStreamInfo = {
  samplingRate: audio.AudioSamplingRate.SAMPLE_RATE_24000,
  channels: audio.AudioChannel.CHANNEL_1,
  sampleFormat: audio.AudioSampleFormat.SAMPLE_FORMAT_S16LE,
  encodingType: audio.AudioEncodingType.ENCODING_TYPE_RAW
};
const audioRendererInfo: audio.AudioRendererInfo = {
  usage: audio.StreamUsage.STREAM_USAGE_VOICE_ASSISTANT,
  rendererFlags: 0
};
const options: audio.AudioRendererOptions = { streamInfo: audioStreamInfo, rendererInfo: audioRendererInfo };

audio.createAudioRenderer(options, (err, renderer) => {
  renderer.on('writeData', (data: ArrayBuffer): audio.AudioDataCallbackResult => {
    // Fill data with model response audio from the queue and return VALID or INVALID.
    return audio.AudioDataCallbackResult.VALID;
  });
  renderer.start();
});
AEC 参照信号: SDK 内部の AEC が有効な場合、nuiInstance.pushReferenceData(data, false) を呼び出してプレーヤーの出力音声を参照信号として SDK に送信します。これは Android の updateRefAudio に相当します。

権限の宣言

音声を録音する前に、module.json5 でマイクの権限を宣言します。
{
  "requestPermissions": [
    { "name": "ohos.permission.MICROPHONE" }
  ]
}

リクエストパラメータ

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

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いいえログファイルの保存パスです。このパラメータは、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とinitializeに渡されるlevelの両方以上の場合にのみ返されます。たとえば、log_track_levelが2(INFO)でlevelが3(WARNING)の場合、WARNING以上のレベルのログ(3以上の値)のみが返されます。
aec_paramsobjectいいえ高度なデバイス上AEC設定です。このオブジェクトは、audio_update_manuallyが"true"の場合にのみ有効になります。
aec_params.enable_aecbooleanいいえデバイス上AECを有効にするかどうかです。audio_update_manuallyが"true"であり、SDKがデバイス上AECをサポートしている場合、AECはデフォルトで有効になります。
aec_params.save_audiobooleanいいえデバイス上AECモジュールによって処理された音声を保存するかどうかです。save_wavが"true"であり、debug_pathが設定されている場合、この機能はデフォルトで有効になり、音声はdebug_pathの下に保存されます。
aec_params.enable_aec_data_callbackbooleanいいえonNuiAssistEventCallbackのEVENT_AEC_DATAを通じてAEC処理済みの音声を返すかどうかです。デフォルト:false。
vad_paramsobjectいいえ高度なデバイス上VAD設定です。このオブジェクトは、audio_update_manuallyが"true"の場合にのみ有効になります。
vad_params.enable_vadbooleanいいえデバイス上VADを有効にするかどうかです。audio_update_manuallyが"true"であり、SDKがデバイス上VADをサポートしている場合、VADはデフォルトで有効になります。
vad_params.save_audiobooleanいいえデバイス上VADモジュールによって処理された音声を保存するかどうかです。save_wavが"true"であり、debug_pathが設定されている場合、この機能はデフォルトで有効になり、音声はdebug_pathの下に保存されます。

音声会話パラメータ

setParams の 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_emotionbooleanいいえ強化された感情表現を有効にするかどうかです。有効にすると、応答音声の感情の変化がより顕著になります。デフォルト:true。有効な値:trueおよびfalse。
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

NativeNui

initialize

音声対話 SDK インスタンスを初期化します。SDK はシングルトンパターンを使用します。release を呼び出す前に再度初期化しないでください。 このメソッドはブロックされる可能性があります。非 UI スレッドで呼び出してください。 メソッドシグネチャ
public initialize(
  callback: INativeNuiCallback,
  parameters: string,
  level: number,
  save_log: boolean = false
): number
パラメータ
パラメータ型説明
callbackINativeNuiCallbackイベントおよびデータコールバックインターフェースの実装。
parametersstring認証、接続、およびデバッグパラメータを含む JSON 文字列。接続および制御パラメータを参照してください。
levelnumberSDK独自のログの出力レベルを制御します。
save_logbooleanログをローカルに保存するかどうか。true に設定した場合、接続および制御パラメータの debug_path を使用してパスを指定します。max_log_file_size を使用してファイルサイズを設定することもできます。

setParams

音声対話パラメータ を JSON 形式で設定します。startDialog の前にこのメソッドを呼び出してください。 メソッドシグネチャ
public setParams(params: string): number
パラメータ
パラメータ型説明
paramsstring音声会話パラメータ。

startDialog

会話を開始します。 メソッドシグネチャ
public startDialog(vad_mode: Constants.VadMode, dialog_params: string): number
パラメータ
パラメータ型説明
vad_modeConstants.VadModeVADモード。Constants.VadMode.TYPE_P2T に固定されています。
dialog_paramsstring接続および制御パラメータのapikeyが一時的なAPIキーである場合、有効期限が切れた後にここで更新します。
JSON形式:
{
  "apikey": "st-****"
}

stopDialog

会話を終了します。このメソッドを呼び出すと、サーバーは最終的な会話結果を返し、タスクを終了します。 メソッドシグネチャ
public stopDialog(): number

cancelDialog

対話をすぐに終了します。このメソッドを呼び出した後、サーバーが最終的な対話結果を返すのを待たずにタスクが終了します。 メソッドシグネチャ
public cancelDialog(): number

dialogAction

インタラクション中に会話アクションコマンドを送信し、会話コンテキストなどのランタイム動作を更新します。 メソッドシグネチャ
public dialogAction(params: string): number
パラメータ
パラメータ型説明
paramsstring会話コンテキストなどのランタイムの動作を更新するために使用される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"
  }
}

updateAudio

audio_update_manually が "true" に設定されている場合、録音データは onNuiNeedAudioData を通じて供給されなくなります。代わりにこのメソッドを使用してデータをアクティブにプッシュしてください。 メソッドシグネチャ
public updateAudio(data: ArrayBuffer, first_pack: boolean): number
パラメータ
パラメータ型説明
dataArrayBufferプッシュする音声データ (PCM)。
first_packbooleanこれが最初の音声パケットかどうか。SDK は data.byteLength からバイト数を計算します。

pushReferenceData (Android の updateRefAudio に相当)

audio_update_manually が "true" に設定されており、デバイス上の AEC が有効な場合、このメソッドを使用してプレーヤーで再生された音声を参照信号としてプッシュします。 メソッドシグネチャ
public pushReferenceData(data: ArrayBuffer, first_pack: boolean): number
パラメータ
パラメータ型説明
dataArrayBufferプッシュする音声データ (PCM)。
first_packbooleanこれが最初の音声パケットかどうか。SDK は data.byteLength からバイト数を計算します。

release

すべての内部 SDK リソースをリリースします。この呼び出しの後、SDK インスタンスは使用できなくなります。SDK を再度使用するには、initialize を呼び出して再初期化します。 メソッドシグネチャ
public release(): number

GetVersion

現在の SDK バージョンに関する情報を返します。 メソッドシグネチャ
public GetVersion(): string
戻り値 現在の SDK バージョンに関する情報。

INativeNuiCallback: リスナーコールバック

onNuiEventCallback: イベント情報のリッスン

メソッドシグネチャ
onNuiEventCallback: (
  event: Constants.NuiEvent,
  resultCode: number,
  arg2: number,
  kwsResult: KwsResult,
  asrResult: AsrResult
) => void;
パラメータ
パラメータ型説明
eventConstants.NuiEventコールバックイベント。
resultCodenumberEVENT_ASR_ERROR イベントが発生した場合にのみ有効です。
arg2number予約済みパラメータ。
asrResultAsrResult音声認識結果。
kwsResultKwsResult音声ウェイクアップ結果。このパラメータを使用する必要はありません。

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

SDK はこのコールバックを使用して、録音の開始または停止のタイミングをアプリケーションに通知します。 メソッドシグネチャ
onNuiAudioStateChanged: (state: Constants.AudioState) => void
AudioState の値
状態説明
STATE_OPENインタラクションが開始されました。録音デバイスを開いて録音を開始できます。
STATE_PAUSEインタラクションが停止しました。録音を停止できます。
STATE_CLOSESDK インスタンスがリリースされました。録音デバイスを完全に閉じることができます。

onNuiAudioRMSChanged: 録音音量をリッスンする

録音音量をリッスンします。これは UI に表示できます。 メソッドシグネチャ
onNuiAudioRMSChanged: (val: number) => number
パラメータ
パラメータ型説明
valnumber録音音量。

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

対話の開始後、このコールバックは継続的にトリガーされます。このコールバックで処理する音声データを供給します。audio_update_manually が "true" に設定されている場合、このコールバックを使用する必要はありません。 メソッドシグネチャ
onNuiNeedAudioData: (buffer: ArrayBuffer) => number
パラメータ
パラメータ型説明
bufferArrayBuffer供給する音声データ。SDK は要求されたバイト数として buffer.byteLength を使用します。
戻り値 実際に供給されたバイト数。

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

SDK 内部の補助イベントおよび関連データを受信します。 メソッドシグネチャ
onNuiAssistEventCallback?: (
  event: Constants.NuiEvent,
  info: string,
  infoLen: number,
  data: ArrayBuffer
) => void;
パラメータ
パラメータ型説明
eventConstants.NuiEventNuiEvent イベント。
infostring追加情報。通常は JSON 文字列です。
infoLennumber追加情報の長さ。
dataArrayBufferモデルから返される TTS 音声などの追加バイナリデータ。
注: このコールバックは HarmonyOS ではオプション (?) です。情報が必要ない場合は省略してください。

onNuiLogTrackCallback: トレースログのリッスン

トラブルシューティングとデバッグのために、SDK 内部の詳細なログを受信します。
onNuiLogTrackCallback: (level: Constants.LogLevel, log: string) => void

NuiEvent: イベントタイプ

HarmonyOS SDK では、イベントタイプは Constants.NuiEvent 列挙型によって定義されます。次の表に、リアルタイム音声対話に関連するイベントを示します。
イベント説明
EVENT_TRANSCRIBER_STARTEDタスクが正常に開始されました。
EVENT_VAD_STARTタスク開始直後にトリガーされます。これは、発話の開始が検出されたことを意味するものではありません。
EVENT_VAD_END発話の終わりが検出されました。
EVENT_ASR_PARTIAL_RESULT中間音声認識結果。
EVENT_ASR_RESULT完全な音声認識結果。
EVENT_ASR_ERROR音声会話中にエラーが発生しました。
EVENT_MIC_ERROR2秒連続でオーディオデータが受信されなかった場合にトリガーされます。
EVENT_SENTENCE_START文の開始が検出されました。
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_RESULT_TRANSLATED中間翻訳結果。
EVENT_RESULT_TRANSLATED_END翻訳結果の出力が完了しました。
EVENT_AEC_DATAAECによって処理されたオーディオデータ。