Skip to main content
Qwen-Audio-Realtime

SDK HarmonyOS percakapan suara waktu nyata Qwen-Audio-3.0-Realtime

Gunakan HarmonyOS SDK untuk Qwen-Audio-3.0-Realtime guna membangun percakapan suara waktu nyata dengan input audio dan output audio atau teks.

Panduan pengguna: Untuk pengenalan model dan saran pemilihan, lihat Percakapan suara real-time.

Mulai cepat

  1. Dapatkan dan konfigurasikan API key.
  2. Unduh SDK dan jalankan kode contoh:
    • Unduh paket SDK terbaru.
    • Ekstrak paket SDK .tar.gz. Dapatkan HAR SDK dari entry/libs dan tambahkan ke dependensi proyek Anda. Untuk integrasi C++, gunakan native/libs dan native/include dalam paket untuk mendapatkan pustaka dinamis dan file header.
    • Buka proyek di DevEco Studio. Kode contoh ada di DashQwenAudioChatPage.ets. Ganti API key untuk mencoba fitur ini.

Prosedur pemanggilan

  1. Inisialisasi SDK.
  2. Atur parameter untuk kasus penggunaan Anda. Gunakan argumen parameters dari initialize untuk mengatur parameter koneksi dan kontrol, dan gunakan setParams untuk mengatur parameter percakapan suara.
  3. Panggil startDialog untuk memulai percakapan.
  4. Di onNuiAudioStateChanged, mulai perangkat perekaman berdasarkan status audio.
  5. Sediakan data perekaman secara terus-menerus di onNuiNeedAudioData, atau panggil updateAudio untuk mendorong data perekaman secara aktif.
  6. Terima secara terus-menerus audio yang dikembalikan oleh model di onNuiAssistEventCallback.
  7. Dengarkan event dan dapatkan informasi event di onNuiEventCallback.
  8. Panggil stopDialog untuk menghentikan percakapan, dan dengarkan EVENT_TRANSCRIBER_COMPLETE untuk mengonfirmasi bahwa percakapan telah berakhir.
  9. Saat fitur percakapan tidak lagi diperlukan, panggil release untuk melepaskan sumber daya SDK.

Manajemen perangkat audio

Tidak seperti Android, yang menggunakan AudioRecord dan AudioTrack, HarmonyOS menyediakan penangkapan dan pemutaran audio melalui @kit.AudioKit, menggunakan AudioCapturer untuk perekaman dan AudioRenderer untuk pemutaran. Proyek contoh menyediakan kelas utilitas AudioRecorder.ets dan AudioPlayer.ets untuk digunakan kembali.

Perekaman (AudioCapturer)

  • Buat: Panggil audio.createAudioCapturer(capturerOptions) secara asinkron. Contoh menggunakan audio mono 16 kHz, 16-bit (SAMPLE_RATE_16000, CHANNEL_1, SAMPLE_FORMAT_S16LE, dan ENCODING_TYPE_RAW).
  • Sumber audio (audio.SourceType):
    • SOURCE_TYPE_MIC: Audio mikrofon mentah. Gunakan sumber ini ketika AEC internal SDK diaktifkan, dan kirim data ke SDK dengan memanggil updateAudio.
    • SOURCE_TYPE_VOICE_COMMUNICATION: Audio panggilan yang telah dilakukan pembatalan gema oleh sistem. Gunakan sumber ini ketika AEC internal SDK dinonaktifkan, dan sediakan audio melalui onNuiNeedAudioData.
  • Event data: Panggil capturer.on('readData', (buffer: ArrayBuffer) => void) untuk mendapatkan audio yang direkam secara terus-menerus.
  • Event status: Panggil capturer.on('stateChange', (state: audio.AudioState) => void). STATE_RUNNING menunjukkan bahwa perekaman telah dimulai, dan STATE_STOPPED menunjukkan bahwa perekaman telah berhenti.
  • Kontrol: Panggil start() untuk memulai, stop() untuk menghentikan, dan release() untuk melepaskan perekam.
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();
});
Catatan: HarmonyOS membuat AudioCapturer secara asinkron. Panggil start() hanya setelah pembuatan selesai. Jangan membuat dan langsung memulai perekam di STATE_OPEN. Buat terlebih dahulu, lalu panggil start() dari callback STATE_OPEN. Contoh membuat perekam selama doInit dan memulainya selama onNuiAudioStateChanged.

Pemutaran (AudioRenderer)

  • Buat: Panggil audio.createAudioRenderer(rendererOptions) secara asinkron.
  • Laju sampel: Audio respons yang disintesis yang dikembalikan oleh DashScope Realtime adalah 24 kHz. Berikan laju ini ke konstruktor AudioPlayer.
  • Event data: Panggil renderer.on('writeData', (data: ArrayBuffer): audio.AudioDataCallbackResult => ...) untuk menyediakan audio untuk pemutaran. Kembalikan AudioDataCallbackResult.VALID setelah mengisi buffer atau INVALID ketika tidak ada data yang tersedia.
  • Event status: Panggil renderer.on('stateChange', (state: audio.AudioState) => void) untuk mendengarkan event mulai dan akhir pemutaran.
  • Kontrol: Panggil start() untuk memulai, stop() untuk menghentikan, dan pause() untuk menjeda pemutaran. Menjeda akan mempertahankan data yang di-buffer.
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();
});
Sinyal referensi AEC: Ketika AEC internal SDK diaktifkan, kirim audio output pemutar ke SDK sebagai sinyal referensi dengan memanggil nuiInstance.pushReferenceData(data, false), yang sesuai dengan updateRefAudio di Android.

Deklarasi izin

Deklarasikan izin mikrofon di module.json5 sebelum merekam audio:
{
  "requestPermissions": [
    { "name": "ohos.permission.MICROPHONE" }
  ]
}

Parameter permintaan

Parameter koneksi dan kontrol

Berikan string JSON pada argumen parameters dari initialize. Contoh: String JSON berikut tidak mencantumkan setiap parameter. Tambahkan parameter sesuai kebutuhan untuk kasus penggunaan Anda.
{
  "url": "wss://dashscope.aliyuncs.com/api-ws/v1/inference",
  "apikey": "st-****",
  "device_id": "my_device_id",
  "service_mode": "1"
}
Parameter
ParameterTipeWajibDeskripsi
urlStringYaEndpoint layanan:
  • wss://dashscope.aliyuncs.com/api-ws/v1/realtime?model=<model_name>
  • Tiongkok (Beijing): wss://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api-ws/v1/realtime?model=<model_name>
  • Singapura: wss://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api-ws/v1/realtime?model=<model_name>
Ganti {WorkspaceId} dengan ID Workspace.
apikeyStringYaAPI key.
service_modeStringYaMode runtime. Atur parameter ini ke "1" untuk percakapan suara real-time.
device_idStringYaString unik yang mengidentifikasi pengguna akhir. Anda dapat menggunakan ID pengguna dalam aplikasi atau pengidentifikasi perangkat yang dibuat klien. ID ini terutama digunakan untuk pelacakan log dan pemecahan masalah.
audio_update_manuallyStringTidakApakah akan mendorong data audio secara aktif. Default: "false". Jika diatur ke "true" dan SDK mendukung kemampuan audio on-device seperti AEC dan VAD, kemampuan tersebut diaktifkan secara default.
workspaceStringTidakJalur penyimpanan untuk file sumber daya on-device. Parameter ini wajib diisi jika audio_update_manually adalah "true" dan kemampuan audio on-device seperti AEC atau VAD diaktifkan.
debug_pathStringTidakJalur penyimpanan file log. Parameter ini hanya berlaku jika save_log adalah true di initialize. Dalam hal ini, jalur wajib diisi. SDK menyimpan paling banyak dua file log secara lokal.
save_wavStringTidakApakah akan menyimpan audio debug di bawah debug_path. Default: "false". Nilai yang valid adalah "true" dan "false". Parameter ini hanya berlaku jika save_log adalah true, dan debug_path juga harus diatur.
max_log_file_sizeintTidakUkuran file log maksimum dalam byte. Parameter ini hanya berlaku jika save_log adalah true. Default: 104857600 (100 × 1024 × 1024 byte, atau 100 MiB).
log_track_levelintTidakTingkat filter untuk log yang dikirim melalui onNuiLogTrackCallback. Default: 2. Nilai yang valid: 0 (VERBOSE), 1 (DEBUG), 2 (INFO), 3 (WARNING), 4 (ERROR), dan 5 (NONE). Log hanya dikembalikan jika tingkatnya lebih besar dari atau sama dengan log_track_level dan level yang diteruskan ke initialize. Misalnya, jika log_track_level adalah 2 (INFO) dan level adalah 3 (WARNING), hanya log WARNING dan tingkat lebih tinggi (nilai lebih besar dari atau sama dengan 3) yang dikembalikan.
aec_paramsobjectTidakKonfigurasi AEC on-device tingkat lanjut. Objek ini hanya berlaku jika audio_update_manually adalah "true".
aec_params.enable_aecbooleanTidakApakah akan mengaktifkan AEC on-device. Jika audio_update_manually adalah "true" dan SDK mendukung AEC on-device, AEC diaktifkan secara default.
aec_params.save_audiobooleanTidakApakah akan menyimpan audio yang diproses oleh modul AEC on-device. Jika save_wav adalah "true" dan debug_path diatur, fitur ini diaktifkan secara default dan audio disimpan di bawah debug_path.
aec_params.enable_aec_data_callbackbooleanTidakApakah akan mengembalikan audio yang diproses AEC melalui EVENT_AEC_DATA di onNuiAssistEventCallback. Default: false.
vad_paramsobjectTidakKonfigurasi VAD on-device tingkat lanjut. Objek ini hanya berlaku jika audio_update_manually adalah "true".
vad_params.enable_vadbooleanTidakApakah akan mengaktifkan VAD on-device. Jika audio_update_manually adalah "true" dan SDK mendukung VAD on-device, VAD diaktifkan secara default.
vad_params.save_audiobooleanTidakApakah akan menyimpan audio yang diproses oleh modul VAD on-device. Jika save_wav adalah "true" dan debug_path diatur, fitur ini diaktifkan secara default dan audio disimpan di bawah debug_path.

Parameter percakapan suara

Berikan string JSON pada argumen params dari setParams. Contoh: String JSON berikut tidak mencantumkan setiap parameter. Tambahkan parameter sesuai kebutuhan untuk kasus penggunaan Anda.
{
  "service_type": 4,
  "nls_config": {
    "model": "qwen-audio-3.1-realtime-plus",
    "sr_format": "pcm"
  }
}
Parameter
Parameter tingkat atasTipeWajibDeskripsi
service_typeintYaTipe layanan suara. Atur parameter ini ke 4 untuk percakapan suara real-time.
nls_configobjectYaKonfigurasi inti percakapan suara, termasuk pemilihan model dan perilaku percakapan.
nls_config.modelstringYaNama model. Mendukung seri model qwen-audio-3.1-realtime-plus, qwen-audio-3.0-realtime-plus, dan qwen-audio-3.0-realtime-flash.
nls_config.sr_formatstringYaFormat audio input. Hanya pcm yang didukung. Format defaultnya adalah PCM mono 16 kHz, 16-bit.
nls_config.modalitiesstringTidakString yang berisi array modalitas output. Nilai yang valid:
  • ["text"]: hanya mengembalikan teks.
  • ["audio", "text"] (default): mengembalikan audio dan teks.
nls_config.voicestringTidakSuara TTS. Defaultnya adalah longanqian_v3.1 untuk 3.1 Plus dan longanqian untuk 3.0 Plus/Flash. Parameter ini hanya dapat diatur pada session.update pertama; nilai berikutnya akan diabaikan. Suara sistem: longanqian, longanlingxin, longanlingxi, longanxiaoxin, dan longanlufeng. Anda juga dapat menentukan voice_id kloning yang dibuat melalui API kloning suara. Lihat Konfigurasi suara.3.1 Plus juga mendukung 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_emotionbooleanTidakApakah akan mengaktifkan ekspresi emosional yang ditingkatkan. Saat diaktifkan, suara respons memiliki variasi emosional yang lebih kentara. Default: true. Nilai yang valid: true dan false.
nls_config.instructionsstringTidakInstruksi sistem yang menentukan peran model, gaya respons, dan preferensi perilaku untuk seluruh sesi.
nls_config.max_history_turnsintTidakJumlah maksimum giliran tanya-jawab historis yang diizinkan dalam satu permintaan. Nilai yang valid: 1 hingga 50. Default: 20.
nls_config.toolsstringTidakString yang berisi array definisi alat Function Calling. Setelah Anda mengonfigurasi parameter ini, model memutuskan apakah akan memanggil alat berdasarkan input pengguna. Setiap definisi menggunakan type (wajib dan ditetapkan ke function) dan objek function yang berisi name (wajib), description (opsional), dan parameters (opsional). Jika fungsi tidak memiliki argumen, abaikan parameters.
Contoh:
[
  {
    "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_detectionstringTidakString yang berisi objek JSON untuk deteksi giliran. Jika diabaikan, sesi menggunakan mode push-to-talk, di mana audio dikirim dan inferensi dipicu secara manual. Jika diatur, mode percakapan dupleks diaktifkan.
nls_config.turn_detection.typestringTidakTipe VAD. server_vad (default) mendeteksi batasan ucapan dari fitur akustik dan secara otomatis memicu inferensi. smart_turn menggabungkan sinyal akustik dan semantik; suara tanpa konten semantik, seperti suara pengisi, tidak memulai giliran atau mengganggu pemutaran model.
nls_config.turn_detection.thresholdfloatTidakSensitivitas VAD. Parameter ini hanya berlaku untuk server_vad dan tidak berpengaruh pada smart_turn. Nilai yang lebih rendah membuat VAD lebih sensitif terhadap suara pelan dan kebisingan latar belakang; nilai yang lebih tinggi memerlukan ucapan yang lebih jelas dan lebih keras. Rentang yang valid: [-1.0, 1.0]. Default: 0.5.
nls_config.turn_detection.silence_duration_msintTidakDurasi hening minimum setelah ucapan, dalam milidetik, sebelum respons model dipicu. Parameter ini hanya berlaku untuk server_vad dan tidak berpengaruh pada smart_turn. Nilai yang lebih rendah mengurangi latensi tetapi dapat terpicu pada jeda singkat. Rentang yang valid: [200, 6000]. Default: 800. Direkomendasikan untuk percakapan: 400 hingga 800.
nls_config.turn_detection.voiceprint_audio_urlsstringTidakString yang berisi array URL audio prarekaman yang dapat diakses publik untuk pembicara target. Parameter ini hanya berlaku untuk smart_turn. Dalam percakapan dupleks, ini membantu model fokus pada pembicara target dan mengabaikan pembicara lain serta kebisingan latar belakang. Mendukung hingga lima URL. Audio harus berupa PCM atau WAV 16 kHz.

API Utama

NativeNui

initialize

Menginisialisasi instans SDK percakapan suara. SDK menggunakan pola singleton. Jangan menginisialisasinya lagi sebelum Anda memanggil release. Metode ini dapat memblokir. Panggil pada thread non-UI. Signature metode
public initialize(
  callback: INativeNuiCallback,
  parameters: string,
  level: number,
  save_log: boolean = false
): number
Parameter
ParameterTipeDeskripsi
callbackINativeNuiCallbackImplementasi antarmuka callback event dan data.
parametersstringString JSON yang berisi parameter autentikasi, koneksi, dan debugging. Lihat Parameter koneksi dan kontrol.
levelnumberMengontrol tingkat pencetakan log SDK itu sendiri.
save_logbooleanApakah akan menyimpan log secara lokal. Jika diatur ke true, tentukan path dengan menggunakan debug_path di parameter koneksi dan kontrol. Anda juga dapat mengatur ukuran file dengan menggunakan max_log_file_size.

setParams

Mengatur parameter percakapan suara dalam format JSON. Panggil metode ini sebelum startDialog. Signature metode
public setParams(params: string): number
Parameter
ParameterTipeDeskripsi
paramsstringParameter percakapan suara.

startDialog

Memulai percakapan. Signature metode
public startDialog(vad_mode: Constants.VadMode, dialog_params: string): number
Parameter
ParameterTipeDeskripsi
vad_modeConstants.VadModeMode VAD. Tetap pada Constants.VadMode.TYPE_P2T.
dialog_paramsstringJika apikey dalam parameter koneksi dan kontrol adalah API key sementara, perbarui di sini setelah kedaluwarsa.
Format JSON:
{
  "apikey": "st-****"
}

stopDialog

Mengakhiri percakapan. Setelah Anda memanggil metode ini, server akan mengembalikan hasil percakapan akhir dan mengakhiri tugas. Signature metode
public stopDialog(): number

cancelDialog

Mengakhiri percakapan segera. Setelah Anda memanggil metode ini, tugas berakhir tanpa menunggu server mengembalikan hasil percakapan akhir. Signature metode
public cancelDialog(): number

dialogAction

Mengirimkan perintah tindakan percakapan selama interaksi untuk memperbarui perilaku runtime seperti konteks percakapan. Signature metode
public dialogAction(params: string): number
Parameter
ParameterTipeDeskripsi
paramsstringString JSON yang digunakan untuk memperbarui perilaku runtime seperti konteks percakapan.
params.typeStringAtur ke "action".
params.commandStringPerintah runtime. Nilai yang valid:
  • function_call: memperbarui permintaan function call.
  • play_start: ketika AEC pada perangkat digunakan, memberi tahu SDK bahwa pemutaran audio telah dimulai.
  • play_over: ketika AEC pada perangkat digunakan, memberi tahu SDK bahwa pemutaran audio telah berakhir.
params.contextStringPembaruan permintaan function call. Digunakan ketika command adalah "function_call".
params.context.typeStringTipe event. Parameter ini wajib diisi jika command adalah "function_call". conversation.item.create menyisipkan item percakapan untuk konteks historis, teks tambahan, atau hasil alat. Setelah mengirim conversation.item.create, gunakan response.create untuk memicu inferensi lain.
params.context.itemobjectWajib ketika params.context.type adalah conversation.item.create. Item percakapan yang akan dibuat.
params.context.responseobjectOpsional jika params.context.type adalah response.create. Menimpa default sesi untuk inferensi ini. Jika diabaikan, konfigurasi sesi saat ini akan digunakan.
Parameter context.item:
ParameterTipeDeskripsi
idStringID item percakapan unik opsional. Jika diabaikan, server akan membuatnya. Error akan dikembalikan jika ID yang ditentukan sudah ada.
typeStringTipe item wajib. Nilai yang valid:
  • message: pesan reguler.
  • function_call: permintaan pemanggilan fungsi. Tipe ini biasanya dibuat oleh server. Klien juga dapat menggunakannya untuk menambahkan konteks historis.
  • function_call_output: hasil eksekusi alat. Setelah menerima function_call, klien menjalankan alat dan menggunakan tipe ini untuk menulis kembali hasilnya.
roleStringWajib untuk message. Nilai yang valid: system, user, dan assistant.
contentarrayWajib untuk message. Setiap item berisi type dan bidang data terkait. system mendukung input_text dengan text; user mendukung input_text dengan text dan input_audio dengan audio yang dienkode Base64; assistant mendukung output_text dengan text.
call_idStringWajib untuk function_call dan function_call_output. ID unik yang mengaitkan permintaan pemanggilan fungsi dengan hasilnya.
nameStringWajib untuk function_call. Nama fungsi yang akan dipanggil.
argumentsStringWajib untuk function_call. Argumen fungsi sebagai string JSON.
outputStringWajib untuk function_call_output. Hasil eksekusi tool sebagai string JSON.
Parameter context.response:
ParameterTipeDeskripsi
modalitiesarrayModalitas output. ["text"] hanya mengembalikan teks. ["audio", "text"] (default) mengembalikan audio dan teks.
voicestringMenimpa suara TTS untuk inferensi ini.
Contoh:
{
  "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

Ketika audio_update_manually diatur ke "true", data perekaman tidak lagi diberikan melalui onNuiNeedAudioData. Gunakan metode ini untuk secara aktif me-push data sebagai gantinya. Signature metode
public updateAudio(data: ArrayBuffer, first_pack: boolean): number
Parameter
ParameterTipeDeskripsi
dataArrayBufferData audio untuk di-push (PCM).
first_packbooleanApakah ini adalah paket audio pertama. SDK menghitung jumlah byte dari data.byteLength.

pushReferenceData (sesuai dengan updateRefAudio Android)

Ketika audio_update_manually diatur ke "true" dan AEC pada perangkat diaktifkan, gunakan metode ini untuk me-push audio yang diputar oleh pemutar sebagai sinyal referensi. Signature metode
public pushReferenceData(data: ArrayBuffer, first_pack: boolean): number
Parameter
ParameterTipeDeskripsi
dataArrayBufferData audio untuk di-push (PCM).
first_packbooleanApakah ini adalah paket audio pertama. SDK menghitung jumlah byte dari data.byteLength.

release

Melepaskan semua sumber daya internal SDK. Instans SDK menjadi tidak tersedia setelah panggilan ini. Untuk menggunakan SDK lagi, panggil initialize untuk menginisialisasi ulangnya. Signature metode
public release(): number

GetVersion

Mengembalikan informasi tentang versi SDK saat ini. Signature metode
public GetVersion(): string
Nilai kembalian Informasi tentang versi SDK saat ini.

INativeNuiCallback: callback listener

onNuiEventCallback: mendengarkan informasi event

Signature metode
onNuiEventCallback: (
  event: Constants.NuiEvent,
  resultCode: number,
  arg2: number,
  kwsResult: KwsResult,
  asrResult: AsrResult
) => void;
Parameter
ParameterTipeDeskripsi
eventConstants.NuiEventEvent callback.
resultCodenumberHanya valid saat event EVENT_ASR_ERROR terjadi.
arg2numberParameter yang dicadangkan.
asrResultAsrResultHasil pengenalan ucapan.
kwsResultKwsResultHasil voice wake-up. Anda tidak perlu menggunakan parameter ini.

onNuiAudioStateChanged: mendengarkan status audio

SDK menggunakan callback ini untuk memberi tahu aplikasi kapan harus memulai atau menghentikan perekaman. Signature metode
onNuiAudioStateChanged: (state: Constants.AudioState) => void
Nilai AudioState
StatusDeskripsi
STATE_OPENInteraksi telah dimulai. Anda dapat membuka perangkat perekaman dan memulai perekaman.
STATE_PAUSEInteraksi telah berhenti. Anda dapat menghentikan perekaman.
STATE_CLOSEInstans SDK telah dilepaskan. Anda dapat menutup perangkat perekaman sepenuhnya.

onNuiAudioRMSChanged: mendengarkan volume perekaman

Mendengarkan volume perekaman, yang dapat ditampilkan di UI. Signature metode
onNuiAudioRMSChanged: (val: number) => number
Parameter
ParameterTipeDeskripsi
valnumberVolume perekaman.

onNuiNeedAudioData: memasok data audio

Setelah percakapan dimulai, callback ini dipicu secara terus-menerus. Berikan data audio untuk diproses dalam callback ini. Anda tidak perlu menggunakan callback ini ketika audio_update_manually diatur ke "true". Signature metode
onNuiNeedAudioData: (buffer: ArrayBuffer) => number
Parameter
ParameterTipeDeskripsi
bufferArrayBufferData audio yang akan diberikan. SDK menggunakan buffer.byteLength sebagai jumlah byte yang diminta.
Nilai kembalian Jumlah byte aktual yang diberikan.

onNuiAssistEventCallback: menerima data dan informasi tambahan

Menerima event tambahan internal SDK dan data terkait. Signature metode
onNuiAssistEventCallback?: (
  event: Constants.NuiEvent,
  info: string,
  infoLen: number,
  data: ArrayBuffer
) => void;
Parameter
ParameterTipeDeskripsi
eventConstants.NuiEventEvent NuiEvent.
infostringInformasi tambahan, biasanya berupa string JSON.
infoLennumberPanjang informasi tambahan.
dataArrayBufferData biner tambahan, seperti audio TTS yang dikembalikan oleh model.
Catatan: Callback ini bersifat opsional (?) pada HarmonyOS. Abaikan jika Anda tidak memerlukan informasinya.

onNuiLogTrackCallback: mendengarkan log trace

Menerima log internal SDK yang terperinci untuk pemecahan masalah dan debugging.
onNuiLogTrackCallback: (level: Constants.LogLevel, log: string) => void

NuiEvent: tipe event

Dalam SDK HarmonyOS, tipe event didefinisikan oleh enumerasi Constants.NuiEvent. Tabel berikut mencantumkan event yang terkait dengan percakapan suara waktu nyata:
EventDeskripsi
EVENT_TRANSCRIBER_STARTEDTugas berhasil dimulai.
EVENT_VAD_STARTDipicu segera setelah tugas dimulai. Ini tidak berarti bahwa awal ucapan telah terdeteksi.
EVENT_VAD_ENDAkhir ucapan terdeteksi.
EVENT_ASR_PARTIAL_RESULTHasil pengenalan ucapan sementara.
EVENT_ASR_RESULTHasil pengenalan ucapan yang lengkap.
EVENT_ASR_ERRORTerjadi kesalahan selama percakapan suara.
EVENT_MIC_ERRORDipicu ketika tidak ada data audio yang diterima selama dua detik berturut-turut.
EVENT_SENTENCE_STARTAwal kalimat telah terdeteksi.
EVENT_SENTENCE_ENDAkhir kalimat terdeteksi dan hasil pengenalan lengkap dikembalikan.
EVENT_TRANSCRIBER_COMPLETEPercakapan suara berakhir.
EVENT_AUDIO_TRANSCRIPTIONEvent transkripsi teks inkremental untuk output audio. Segmen transkripsi dikembalikan dalam mode streaming.
EVENT_AUDIO_TRANSCRIPTION_COMPLETEDTranskrip untuk output audio telah selesai.
EVENT_OTHER_RESULTInformasi event lainnya, seperti hasil Function Calling.
EVENT_ASR_TTS_STARTModel mulai mengembalikan audio TTS.
EVENT_ASR_TTS_DATAAudio TTS yang dikembalikan oleh model.
EVENT_ASR_TTS_COMPLETEModel selesai mengembalikan audio TTS.
EVENT_RESULT_TRANSLATEDHasil terjemahan sementara.
EVENT_RESULT_TRANSLATED_ENDOutput hasil terjemahan telah selesai.
EVENT_AEC_DATAData audio yang diproses oleh AEC.
Pembuatan Gambar
  • FAQ
Video Generation
Model Dunia
Audio
  • Pembuatan audio
Realtime API
Penyematan Teks
TokenPlan
Model production