Skip to main content
Qwen-Audio-ASR-Streaming

Qwen-Audio-ASR-Streaming HarmonyOS SDK

Pelajari parameter, antarmuka, callback, dan penggunaan SDK HarmonyOS untuk Qwen-Audio-ASR-Streaming.

Mulai cepat

  1. Dapatkan API key. Jangan tanamkan API key jangka panjang dalam kode aplikasi klien. Sebaiknya server aplikasi memperoleh API key sementara dan mengirimkannya ke klien.
  2. Unduh SDK terbaru. Ekstrak paket, salin entry/libs/neonui.har ke direktori entry/libs aplikasi, lalu tambahkan dependensi ke entry/oh-package.json5:
    {
      "dependencies": {
        "neonui": "file:libs/neonui.har"
      }
    }
    
    Untuk integrasi HarmonyOS C++, gunakan pustaka bersama di native/libs dan file header di native/include.
  3. Deklarasikan izin jaringan dan mikrofon dalam module.json5, lalu minta izin mikrofon saat runtime. reason_internet dan reason_microphone adalah contoh nama sumber daya. Definisikan deskripsinya dalam sumber daya aplikasi.
    "requestPermissions": [
      {
        "name": "ohos.permission.INTERNET",
        "reason": "$string:reason_internet",
        "usedScene": { "abilities": ["EntryAbility"], "when": "always" }
      },
      {
        "name": "ohos.permission.MICROPHONE",
        "reason": "$string:reason_microphone",
        "usedScene": { "abilities": ["EntryAbility"], "when": "always" }
      }
    ]
    
  4. Buka proyek contoh dari paket SDK di DevEco Studio. Halaman contoh adalah entry/src/main/ets/pages/dashscope/DashFunAsrSpeechTranscriberPage.ets. Atur API key dan jalankan proyek.

Urutan pemanggilan

  1. Buat instance NativeNui(Constants.ModeType.MODE_DIALOG).
  2. Panggil initialize untuk menginisialisasi SDK dan mengatur parameter koneksi serta kontrol.
  3. Panggil setParams untuk mengatur model dan parameter pengenalan.
  4. Panggil startDialog untuk memulai pengenalan.
  5. Dalam onNuiAudioStateChanged, mulai, jeda, atau tutup perangkat perekaman sesuai status audio.
  6. Pasok data rekaman terus-menerus dalam onNuiNeedAudioData. Jika pengiriman aktif diaktifkan, gunakan updateAudio sebagai gantinya.
  7. Ambil hasil pengenalan dan status tugas dalam onNuiEventCallback.
  8. Panggil stopDialog dan tunggu EVENT_TRANSCRIBER_COMPLETE.
  9. Saat pengenalan tidak lagi diperlukan, panggil release untuk melepaskan sumber daya.

Parameter permintaan

Parameter koneksi dan kontrol

Teruskan string JSON ke argumen parameters pada initialize.
{
  "url": "wss://dashscope.aliyuncs.com/api-ws/v1/inference",
  "device_id": "my_device_id",
  "service_mode": "1",
  "audio_update_manually": "false"
}
ParameterTipeWajibDeskripsi
urlstringYaEndpoint layanan:
  • Endpoint publik: wss://dashscope.aliyuncs.com/api-ws/v1/inference
  • Endpoint ruang kerja Beijing: wss://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api-ws/v1/inference
  • Endpoint ruang kerja Singapura: wss://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api-ws/v1/inference
Ganti {WorkspaceId} dengan ID ruang kerja Anda.
service_modestringYaMode operasi. Untuk pengenalan real-time, atur ke "1", yaitu Constants.ModeFullCloud.
device_idstringYaPengidentifikasi pengguna akhir yang unik, seperti ID pengguna dalam aplikasi atau ID perangkat yang dibuat klien. Ini digunakan terutama untuk pelacakan log dan pemecahan masalah.
apikeystringTidakAPI key. Dapat diteruskan saat inisialisasi. Sebaiknya gunakan API key sementara pada dialog_params dari startDialog.
audio_update_manuallystringTidakMengaktifkan pengiriman audio aktif atau tidak. Default: "false". Jika "true", panggil updateAudio; jika "false", SDK menarik audio melalui onNuiNeedAudioData. Jika nilainya "true" dan SDK mendukung AEC atau VAD pada perangkat, kemampuan tersebut diaktifkan secara default.
workspacestringTidakDirektori sumber daya pada perangkat. Wajib jika audio_update_manually bernilai "true" dan pemrosesan lokal seperti AEC atau VAD diaktifkan.
debug_pathstringTidakDirektori log. Wajib jika save_log bernilai true. SDK menyimpan maksimal dua file log.
save_wavstringTidakMenyimpan audio debug atau tidak. Default: "false". File disimpan di debug_path. Jika "true", atur juga debug_path dan teruskan true ke save_log pada initialize.
save_wav_by_idstringTidakSaat save_wav diaktifkan, menentukan apakah nama file audio menggunakan task_id agar mudah dicari. Default: "false".
max_log_file_sizenumberTidakUkuran maksimum satu file log dalam byte. Default: 104857600 (100 MiB). Berlaku hanya jika save_log bernilai true.
log_track_levelnumberTidakLevel filter log onNuiLogTrackCallback. Default: 2. Nilai: 0 (VERBOSE), 1 (DEBUG), 2 (INFO), 3 (WARNING), 4 (ERROR), 5 (NONE). Log dikembalikan hanya jika levelnya lebih besar dari atau sama dengan log_track_level dan level pada initialize. Dengan nilai 2 dan 3, hanya WARNING dan di atasnya yang dikembalikan.
enable_reconnectionstringTidakMengaktifkan koneksi ulang dan kelanjutan transmisi setelah gangguan jaringan. Default: "false".
aec_paramsobjectTidakPengaturan AEC pada perangkat. Digunakan hanya jika audio_update_manually bernilai "true".
aec_params.enable_aecbooleanTidakMengaktifkan AEC pada perangkat atau tidak. Aktif secara default jika build SDK mendukungnya.
aec_params.save_audiobooleanTidakMenyimpan audio hasil AEC atau tidak. Aktif secara default jika save_wav diaktifkan dan debug_path diatur.
aec_params.enable_aec_data_callbackbooleanTidakMengembalikan data hasil AEC melalui peristiwa EVENT_AEC_DATA dari onNuiAssistEventCallback. Default: false.
vad_paramsobjectTidakPengaturan VAD pada perangkat. Digunakan hanya jika audio_update_manually bernilai "true".
vad_params.enable_vadbooleanTidakMengaktifkan VAD pada perangkat atau tidak. Aktif secara default jika build SDK mendukungnya.
vad_params.save_audiobooleanTidakMenyimpan audio hasil VAD atau tidak. Aktif secara default jika save_wav diaktifkan dan debug_path diatur.
audio_configobjectTidakPengaturan perekaman saat SDK menarik audio. Digunakan hanya jika audio_update_manually bernilai "false".
audio_config.mic.enable_volume_calculationbooleanTidakMenghitung dan melaporkan volume atau tidak. Default: true. Nonaktifkan jika callback volume tidak diperlukan.
audio_config.mic.volume_modestringTidakMode penghitungan volume. Atur ke "dbfs" untuk menghitung dBFS standar dengan 20*log10(rms/32768), dengan skala penuh 0 dB.

Parameter pengenalan

Teruskan string JSON ke argumen params pada setParams.
{
  "service_type": 4,
  "nls_config": {
    "model": "qwen-audio-3.0-asr-flash-streaming",
    "sr_format": "opus",
    "sample_rate": 16000
  }
}
ParameterJenisWajibDeskripsi
service_typenumberYaJenis layanan suara. Tetapkan ke 4, yaitu Constants.kServiceTypeSpeechTranscriber.
nls_configobjectYaObjek konfigurasi pengenalan.
nls_config.modelstringYaNama model.
nls_config.sr_formatstringYaFormat audio: pcm atau opus. Jika opus dipilih, aplikasi tetap memasok data PCM dan SDK mengenkodenya sebagai Opus.
nls_config.sample_ratenumberYaLaju sampel dalam Hz. Semua laju sampel diterima, kecuali 8000 Hz saat AEC atau VAD pada perangkat diaktifkan.
nls_config.semantic_punctuation_enabledbooleanTidakMenentukan apakah segmentasi semantik diaktifkan. Default: false. true mengaktifkan segmentasi semantik dan menonaktifkan segmentasi VAD, cocok untuk transkripsi rapat yang mengutamakan akurasi segmentasi. false mengaktifkan segmentasi VAD dan menonaktifkan segmentasi semantik, cocok untuk interaksi yang mengutamakan latensi rendah.
nls_config.max_sentence_silencenumberTidakAmbang keheningan VAD dalam milidetik. Ucapan dianggap selesai jika keheningan setelah ucapan melebihi ambang ini. Default: 1300. Rentang valid: [200, 6000]. Jika segmentasi semantik aktif, parameter ini tidak menentukan sentence_end, tetapi nilai yang terlalu kecil tetap dapat memengaruhi pengenalan.
nls_config.multi_threshold_mode_enabledbooleanTidakMenentukan apakah mode multiambang diaktifkan. Default: false. Mode ini mencegah segmen VAD terlalu panjang. Berlaku hanya jika semantic_punctuation_enabled bernilai false.
nls_config.heartbeatbooleanTidakMenentukan apakah paket heartbeat diaktifkan. Default: false. Jika aktif, pengiriman audio hening secara terus-menerus dapat menjaga koneksi. Jika tidak, koneksi mengalami timeout setelah beberapa waktu. Audio hening tidak memiliki sinyal yang terdengar dalam file atau aliran audio.
nls_config.vocabulary_idstringTidakID daftar hotword prakompilasi. Buat daftar terlebih dahulu. Gunakan jika kosakata diketahui, relatif stabil, dan perlu digunakan kembali antarpermintaan. Lihat Hotword prakompilasi.
nls_config.instant_vocabularyobjectTidakHotword tingkat permintaan. Kunci berupa string hotword dan nilai berupa bobot bilangan bulat. Daftar tidak perlu dibuat sebelumnya, sehingga cocok untuk optimasi sementara per sesi. Bobot valid: [1, 5] atau 50. Dalam [1, 5], nilai lebih besar meningkatkan peluang kata dikeluarkan. Maksimal 50 super hotword berbobot 50 diperbolehkan. Jika hotword prakompilasi dan tingkat permintaan digunakan bersama, keduanya digabungkan. Jika hasil gabungan melebihi 2000 entri, 2000 dipilih secara acak. Lihat Hotword tingkat permintaan.
nls_config.language_hintsstring[]TidakBahasa audio. Tidak ada nilai default; model mendeteksi bahasa jika bidang ini dihilangkan. Maksimal empat nilai pertama digunakan. Untuk kode bahasa, lihat panduan pengenalan ucapan real-time.
nls_config.speech_noise_thresholdnumberTidakAmbang suara/noise VAD. Rentang valid: [-1.0, 1.0]. Mendekati -1 meningkatkan kemungkinan noise dianggap sebagai ucapan dan ditranskripsikan. Mendekati 1 meningkatkan kemungkinan ucapan dianggap sebagai noise dan difilter. Pengaturan lanjutan ini dapat sangat memengaruhi pengenalan. Uji secara menyeluruh dan sesuaikan sedikit demi sedikit, sebesar 0,1.
nls_config.special_word_filterobjectTidakPengaturan pemfilteran kata sensitif. Lihat Pemfilteran kata sensitif.
nls_config.enable_connection_fast_checkbooleanTidakMenentukan apakah deteksi cepat gangguan jaringan diaktifkan. Default: false.

APIs

NativeNui

Impor SDK:
import { AsrResult, Constants, INativeNuiCallback, KwsResult, NativeNui } from 'neonui';

Membuat instance

constructor(mode_type: Constants.ModeType, flag?: string)
ParameterJenisDeskripsi
mode_typeConstants.ModeTypeMode SDK: MODE_DIALOG untuk dialog atau pengenalan, MODE_TTS untuk sintesis ucapan, atau MODE_STREAM_INPUT_TTS untuk sintesis ucapan dengan input streaming. Gunakan MODE_DIALOG untuk pengenalan ucapan real-time.
flagstringID instans opsional untuk membedakan log.

initialize

initialize(
  callback: INativeNuiCallback,
  parameters: string,
  level: number,
  save_log: boolean = false
): number
Menginisialisasi SDK. Metode ini dapat memblokir. Jangan panggil di thread UI.
ParameterJenisDeskripsi
callbackINativeNuiCallbackCallback peristiwa dan data.
parametersstringString JSON berisi parameter koneksi dan kontrol.
levelnumberLevel log SDK: LOG_LEVEL_VERBOSE (0), LOG_LEVEL_DEBUG (1), LOG_LEVEL_INFO (2), LOG_LEVEL_WARNING (3), LOG_LEVEL_ERROR (4), atau LOG_LEVEL_NONE (5).
save_logbooleanMenentukan apakah log lokal disimpan. Default: false. Jika true, tetapkan debug_path dalam parameters. Anda juga dapat menetapkan max_log_file_size.

setParams

setParams(params: string): number
Menetapkan parameter pengenalan sebelum startDialog. params adalah string JSON berisi parameter pengenalan.

startDialog

startDialog(vad_mode: Constants.VadMode, dialog_params: string): number
Memulai pengenalan.
ParameterJenisDeskripsi
vad_modeConstants.VadModeMode VAD. Gunakan Constants.VadMode.TYPE_P2T untuk pengenalan ucapan real-time.
dialog_paramsstringString JSON untuk memperbarui API key sementara yang kedaluwarsa atau memberikan konteks input melalui input_context.
Example:
{
  "apikey": "st-****",
  "input_context": [
    { "role": "user", "content": [{ "type": "input_text", "text": "Example context" }] }
  ]
}

stopDialog

stopDialog(): number
Memberi tahu server untuk menyelesaikan pengenalan dan mengembalikan hasil akhir. Tugas berakhir saat EVENT_TRANSCRIBER_COMPLETE diterima.

cancelDialog

cancelDialog(): number
Langsung menghentikan pengenalan tanpa menunggu hasil akhir server.

dialogAction

dialogAction(action_params: string): number
Mengirim tindakan runtime untuk memperbarui konteks pengenalan atau memberi tahu AEC tentang perubahan status pemutaran.
ParameterJenisDeskripsi
action_paramsstringString JSON berisi tindakan.
action_params.typestringTetapkan ke "action".
action_params.commandstringPerintah tindakan: "context memperbarui konteks input, play_start memberi tahu AEC bahwa pemutaran audio referensi dimulai, dan play_over" memberi tahu bahwa pemutaran selesai.
action_params.contextobject[]Konteks input saat command bernilai "context".
Contoh pembaruan konteks:
{
  "type": "action",
  "command": "context",
  "context": [
    {
      "role": "user",
      "content": [
        { "text": "Example context", "type": "input_text" }
      ]
    }
  ]
}

updateAudio

updateAudio(data: ArrayBuffer, first_pack: boolean): number
Jika audio_update_manually bernilai "true", kirim data rekaman secara aktif melalui metode ini alih-alih mengisi onNuiNeedAudioData.
ParameterJenisDeskripsi
dataArrayBufferData audio yang akan dikenali.
first_packbooleanMenentukan apakah ini paket audio pertama. Tetapkan true untuk paket pertama dan false untuk paket berikutnya.

pushReferenceData

pushReferenceData(data: ArrayBuffer, first_pack: boolean): number
Jika audio_update_manually bernilai "true" dan AEC pada perangkat diaktifkan, kirim audio yang diputar sebagai sinyal referensi AEC.
ParameterJenisDeskripsi
dataArrayBufferData audio referensi.
first_packbooleanMenentukan apakah ini paket audio pertama. Tetapkan true untuk paket pertama dan false untuk paket berikutnya.

release

release(): number
Melepaskan seluruh sumber daya internal SDK. Instance tidak dapat digunakan setelah pemanggilan ini. Panggil initialize terlebih dahulu untuk menggunakannya kembali.

GetVersion

GetVersion(): string
Mengembalikan versi SDK saat ini.

refreshApikey

refreshApikey(apikey: string, url: string = ''): string
Memperbarui API key dan mengembalikan token autentikasi sementara. Melakukan panggilan jaringan sinkron; jangan panggil di thread UI.
ParameterJenisDeskripsi
apikeystringAPI key yang sudah ada.
urlstringEndpoint autentikasi opsional. Default: string kosong, yang menggunakan endpoint default.

INativeNuiCallback

onNuiEventCallback

onNuiEventCallback: (
  event: Constants.NuiEvent,
  resultCode: number,
  arg2: number,
  kwsResult: KwsResult,
  asrResult: AsrResult
) => void;
Menerima peristiwa dan hasil pengenalan.
ParameterJenisDeskripsi
eventConstants.NuiEventPeristiwa callback.
resultCodenumberBerlaku hanya saat peristiwa EVENT_ASR_ERROR terjadi.
arg2numberReserved.
kwsResultKwsResultHasil kata pemicu. Abaikan bidang ini untuk pengenalan ucapan real-time.
asrResultAsrResultHasil pengenalan. allResponse berisi respons JSON lengkap dari server. Ambil ID tugas dari header.task_id dan teks ucapan dari payload.output.sentence.text.
Events:
PeristiwaDeskripsi
EVENT_TRANSCRIBER_STARTEDTugas telah dimulai. header.task_id dalam asrResult.allResponse berisi ID tugas. Catat ID ini untuk pemecahan masalah.
EVENT_VAD_STARTDipicu setelah tugas dimulai. Peristiwa ini tidak menunjukkan bahwa awal ucapan terdeteksi.
EVENT_VAD_ENDAkhir ucapan terdeteksi.
EVENT_SENTENCE_STARTAwal tuturan terdeteksi.
EVENT_ASR_PARTIAL_RESULTHasil pengenalan sementara tersedia.
EVENT_SENTENCE_ENDAkhir tuturan terdeteksi dan hasil lengkap tuturan tersedia.
EVENT_ASR_WARNPeringatan nonfatal terjadi selama pengenalan, misalnya gangguan jaringan saat koneksi ulang diaktifkan.
EVENT_ASR_ERRORKesalahan terjadi selama pengenalan. resultCode berisi kode kesalahan.
EVENT_MIC_ERRORData audio tidak diterima selama dua detik berturut-turut. Periksa kode perekaman, izin, atau apakah aplikasi lain menggunakan perekam.
EVENT_TRANSCRIBER_COMPLETEPengenalan telah selesai.
EVENT_AEC_DATAData audio yang diproses AEC, dikembalikan melalui onNuiAssistEventCallback.

onNuiAudioStateChanged

onNuiAudioStateChanged: (state: Constants.AudioState) => void;
SDK menggunakan callback ini untuk memberi tahu aplikasi kapan perekaman dimulai atau dihentikan.
StateDeskripsi
STATE_OPENInteraksi dimulai. Perangkat perekam dapat dibuka.
STATE_PAUSEInteraksi berhenti. Perekaman dapat dihentikan.
STATE_CLOSEInstans SDK telah dilepas. Perangkat perekam dapat ditutup sepenuhnya.
Pada HarmonyOS, AudioCapturer dibuat secara asinkron. Buat instance perekam saat inisialisasi. Saat menerima STATE_CLOSE, hentikan perekaman tetapi simpan instance untuk digunakan kembali. Lepaskan dalam alur release terpadu. Ini mencegah perekam yang sedang dibuat ulang mengabaikan panggilan start langsung saat STATE_OPEN berikutnya tiba.

onNuiNeedAudioData

onNuiNeedAudioData: (buffer: ArrayBuffer) => number;
Dipanggil terus-menerus saat SDK menarik audio. Isi buffer.byteLength byte, biasanya 20 ms PCM mono 16-bit, dan kembalikan jumlah byte yang ditulis. Nilai ≤ 0 menunjukkan kesalahan atau tidak ada data.

onNuiAudioRMSChanged

onNuiAudioRMSChanged: (val: number) => number;
Melaporkan volume saat ini untuk pembaruan UI. Jika audio_config.mic.volume_mode bernilai "dbfs", rentang val adalah -160 hingga 0. Implementasi callback dapat mengembalikan 0.

onNuiAssistEventCallback

onNuiAssistEventCallback?: (
  event: Constants.NuiEvent,
  info: string,
  infoLen: number,
  data: ArrayBuffer
) => void;
Callback opsional untuk peristiwa dan data tambahan internal SDK. Abaikan jika informasi ini tidak diperlukan.
ParameterJenisDeskripsi
eventConstants.NuiEventPeristiwa tambahan.
infostringInformasi tambahan, biasanya berupa string JSON.
infoLennumberPanjang informasi tambahan.
dataArrayBufferData tambahan, seperti audio yang diproses AEC.

onNuiLogTrackCallback

onNuiLogTrackCallback: (level: Constants.LogLevel, log: string) => void;
Menerima log pelacakan SDK. Level yang dikembalikan ditentukan oleh log_track_level dan argumen level dari initialize.

Objek hasil

AsrResult

PropertyJenisDeskripsi
finishbooleanMenentukan apakah hasil saat ini adalah hasil akhir.
resultCodenumberKode status hasil.
asrResultstringTeks pengenalan. Untuk EVENT_ASR_ERROR, bidang ini berisi pesan kesalahan.
allResponsestringRespons server lengkap dalam bentuk string JSON, termasuk ID tugas dan teks tuturan.

KwsResult

PropertyJenisDeskripsi
typeConstants.WuwTypeJenis kata pemicu. Abaikan bidang ini untuk pengenalan ucapan real-time.
kwsstringKata pemicu. Abaikan bidang ini untuk pengenalan ucapan real-time.

Konstanta dan enumerasi

NamaDeskripsi
Constants.ModeTypeMode SDK: MODE_DIALOG, MODE_TTS, dan MODE_STREAM_INPUT_TTS.
Constants.VadModeMode VAD. Pengenalan ucapan real-time menggunakan TYPE_P2T; pengguna memanggil stopDialog untuk mengakhiri pengenalan.
Constants.AudioStateStatus audio: STATE_OPEN, STATE_PAUSE, dan STATE_CLOSE.
Constants.LogLevelLevel log dari LOG_LEVEL_VERBOSE (0) hingga LOG_LEVEL_NONE (5).
Constants.NuiResultCodeKode kesalahan SDK, seperti SUCCESS (0), ILLEGAL_PARAM (240002), NECESSARY_PARAM_LACK (240004), dan SDK_NOT_INIT (240011).
Constants.kServiceTypeSpeechTranscriberNilai service_type untuk pengenalan ucapan real-time: 4.
Constants.ModeFullCloudMode cloud penuh. Nilai service_mode adalah "1".

Kode contoh

Kode berikut menunjukkan alur utama SDK. Untuk penanganan izin, antrean perekaman, dan penguraian respons yang lengkap, lihat DashFunAsrSpeechTranscriberPage.ets dalam paket SDK.
import { AsrResult, Constants, INativeNuiCallback, KwsResult, NativeNui } from 'neonui';

const callback: INativeNuiCallback = {
  onNuiEventCallback: (event: Constants.NuiEvent, resultCode: number, arg2: number,
    kwsResult: KwsResult, asrResult: AsrResult): void => {
    if (event == Constants.NuiEvent.EVENT_ASR_PARTIAL_RESULT
      || event == Constants.NuiEvent.EVENT_SENTENCE_END) {
      // Parse payload.output.sentence.text from asrResult.allResponse.
    } else if (event == Constants.NuiEvent.EVENT_TRANSCRIBER_COMPLETE) {
      // Recognition is complete.
    } else if (event == Constants.NuiEvent.EVENT_ASR_ERROR) {
      // resultCode contains the error code.
    }
  },
  onNuiAudioStateChanged: (state: Constants.AudioState): void => {
    // Control AudioCapturer for STATE_OPEN, STATE_PAUSE, and STATE_CLOSE.
  },
  onNuiNeedAudioData: (buffer: ArrayBuffer): number => {
    // Copy recording data to buffer and return the number of bytes written.
    return 0;
  },
  onNuiAudioRMSChanged: (val: number): number => 0,
  onNuiLogTrackCallback: (level: Constants.LogLevel, log: string): void => {}
};

const nuiInstance = new NativeNui(Constants.ModeType.MODE_DIALOG);

const initParams: Record<string, Object> = {};
initParams['url'] = 'wss://dashscope.aliyuncs.com/api-ws/v1/inference';
initParams['device_id'] = 'my_device_id';
initParams['service_mode'] = Constants.ModeFullCloud;
initParams['audio_update_manually'] = 'false';

const initResult = nuiInstance.initialize(
  callback,
  JSON.stringify(initParams),
  Constants.LogLevel.LOG_LEVEL_DEBUG,
  false
);

if (initResult == Constants.NuiResultCode.SUCCESS) {
  const nlsConfig: Record<string, Object> = {
    'model': 'qwen-audio-3.0-asr-flash-streaming',
    'sr_format': 'opus',
    'sample_rate': 16000
  };
  const params: Record<string, Object> = {
    'service_type': Constants.kServiceTypeSpeechTranscriber,
    'nls_config': nlsConfig
  };
  nuiInstance.setParams(JSON.stringify(params));

  const dialogParams: Record<string, Object> = { 'apikey': 'st-****' };
  nuiInstance.startDialog(Constants.VadMode.TYPE_P2T, JSON.stringify(dialogParams));
}

// Stop recognition when the user finishes recording, and wait for EVENT_TRANSCRIBER_COMPLETE.
function stopRecognition(): void {
  nuiInstance.stopDialog();
}
// Call nuiInstance.release() from the EVENT_TRANSCRIBER_COMPLETE handler.
Gunakan AudioCapturer dari @kit.AudioKit untuk merekam. Audio harus PCM mono 16-bit dengan laju sampel yang didukung model terpilih.
import { audio } from '@kit.AudioKit';

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

const capturer = await audio.createAudioCapturer(options);
capturer.on('readData', (buffer: ArrayBuffer): void => {
  // Pull mode: enqueue data for onNuiNeedAudioData.
  // Push mode: call nuiInstance.updateAudio(buffer, firstPack).
});
await capturer.start();
Pembuatan Gambar
  • FAQ
Video Generation
Model Dunia
Audio
  • Pembuatan audio
Realtime API
Penyematan Teks
TokenPlan
Model production