Skip to main content
Qwen-Audio-ASR-Message

Qwen-Audio-ASR-Message Android SDK

Panduan ini menunjukkan cara menggunakan SDK Android untuk pengenalan ucapan waktu nyata Qwen-Audio-ASR-Message guna mengubah ucapan menjadi teks.

Mulai cepat

  1. Mendapatkan kunci API
  2. Unduh SDK dan jalankan kode sampel:
    • Unduh paket SDK terbaru.
    • Ekstrak paket ZIP. SDK format AAR berada di direktori app/libs. Tambahkan ke dependensi proyek Anda. Untuk integrasi C++ Android, gunakan android_libs dan android_include dari paket ZIP untuk mendapatkan pustaka dinamis dan file header.
    • Buka proyek di Android Studio. Kode contoh berada di DashFunAsrSpeechTranscriberActivity.java. Ganti kunci API untuk mencoba fitur ini.

Prosedur pemanggilan

  1. Inisialisasi SDK.
  2. Atur parameter untuk kasus penggunaan Anda. Gunakan argumen parameters dari metode initialize untuk mengatur Parameter koneksi dan kontrol, dan gunakan metode setParams untuk mengatur Parameter pengenalan ucapan.
  3. Panggil startDialog untuk memulai pengenalan.
  4. Dalam callback onNuiAudioStateChanged, mulailah perangkat perekaman berdasarkan status audio.
  5. Terus sediakan data rekaman dalam callback onNuiNeedAudioData, atau dorong data rekaman secara aktif dengan memanggil updateAudio.
  6. Dalam callback onNuiEventCallback, dengarkan peristiwa dan dapatkan hasil pengenalan ucapan.
  7. Panggil stopDialog untuk menghentikan pengenalan, dan dengarkan peristiwa EVENT_TRANSCRIBER_COMPLETE untuk mengonfirmasi bahwa pengenalan telah berakhir.
  8. Ketika Anda tidak lagi memerlukan pengenalan, panggil release untuk melepaskan sumber daya SDK.

Parameter permintaan

Parameter koneksi dan kontrol

Untuk mengonfigurasi parameter ini, berikan string JSON dalam argumen parameters dari metode initialize.
  • Contoh: Berikut adalah contoh string JSON. Tidak semua parameter dicantumkan. Tambahkan parameter lain sesuai kebutuhan saat Anda menulis kode:
{
    "url": "wss://dashscope.aliyuncs.com/api-ws/v1/inference",
    "apikey": "st-****",
    "device_id": "my_device_id",
    "service_mode": "1"
}
  • Parameter
    ParameterTipeWajibDeskripsi
    urlStringYaAlamat layanan:
    • wss://dashscope.aliyuncs.com/api-ws/v1/inference
    • Tiongkok (Beijing): wss://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api-ws/v1/inference
    • Singapura: wss://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api-ws/v1/inference
    Ganti {WorkspaceId} dengan ID Workspace Anda yang sebenarnya.
    apikeyStringYaKunci API.
    service_modeStringYaMode eksekusi. Tetap diatur ke "1" untuk pengenalan ucapan waktu nyata.
    device_idStringYaString unik yang mengidentifikasi pengguna akhir. Anda dapat mengaturnya ke ID pengguna dalam aplikasi atau pengenal perangkat unik yang dihasilkan klien. ID ini terutama digunakan untuk pelacakan log dan pemecahan masalah.
    audio_update_manuallyStringTidakApakah akan mengaktifkan pengiriman data audio secara aktif. Default: "false".Jika diatur ke "true" dan versi SDK mendukung kemampuan pemrosesan audio pada perangkat seperti AEC dan VAD, kemampuan tersebut diaktifkan secara default.
    workspaceStringTidakJalur tempat file sumber daya pada perangkat disimpan. Parameter ini diperlukan ketika audio_update_manually diatur ke "true" dan kemampuan pemrosesan audio pada perangkat seperti AEC atau VAD diaktifkan.
    debug_pathStringTidakJalur penyimpanan untuk file log.Parameter ini hanya berlaku ketika save_log diatur ke true dalam metode initialize. Dalam kasus ini, Anda harus mengatur jalur file log, jika tidak, kesalahan akan terjadi.Maksimal dua file log disimpan secara lokal.
    save_wavStringTidakApakah akan menyimpan file audio debug. File audio disimpan di bawah debug_path.Default: "false".Nilai yang valid:
    • "true": simpan file.
    • "false": jangan simpan file.
    Parameter ini hanya berlaku ketika save_log diatur ke true dalam metode initialize. Selain itu, debug_path juga harus diatur.
    max_log_file_sizeintTidakUkuran maksimum file log, dalam byte.Parameter ini hanya berlaku ketika save_log diatur ke true dalam metode initialize.Default: 104857600 (100 * 1024 * 1024 byte, yaitu 100 MiB).
    log_track_levelintTidakTingkat filter untuk konten log yang dikirim melalui callback log (onNuiLogTrackCallback).Default: 2.Nilai yang valid:
    • 0: LOG_LEVEL_VERBOSE
    • 1: LOG_LEVEL_DEBUG
    • 2: LOG_LEVEL_INFO
    • 3: LOG_LEVEL_WARNING
    • 4: LOG_LEVEL_ERROR
    • 5: LOG_LEVEL_NONE (menonaktifkan fitur ini)
    Catatan: log_track_level dan level (diatur melalui metode initialize) bersama-sama menentukan log mana yang akhirnya dikirim ke callback. Log dikirim ke callback hanya ketika nilai levelnya lebih besar dari atau sama dengan log_track_level dan level. Misalnya, jika log_track_level diatur ke 2 (INFO) dan level diatur ke 3 (WARNING), maka hanya log dengan level WARNING atau lebih tinggi (nilai >= 3) yang dikirim ke callback.
    enable_reconnectionStringTidakApakah akan melanjutkan transmisi setelah jaringan tersambung kembali. Default: "false".
    aec_paramsobjectTidakObjek konfigurasi tingkat lanjut untuk pembatalan gema akustik (AEC) pada perangkat. Objek ini hanya berlaku ketika audio_update_manually diatur ke "true".
    aec_params.enable_aecbooleanTidakApakah akan mengaktifkan AEC pada perangkat. Jika audio_update_manually diatur ke "true" dan versi SDK mendukung AEC pada perangkat, kemampuan ini diaktifkan secara default.
    aec_params.save_audiobooleanTidakMenentukan apakah akan menyimpan audio yang diproses oleh modul AEC pada perangkat. Jika save_wav diatur ke "true" dan debug_path ditentukan, fitur ini diaktifkan secara default dan data audio AEC disimpan ke debug_path.
    aec_params.enable_aec_data_callbackbooleanTidakApakah akan mengembalikan data yang diproses AEC ke aplikasi Anda. Default: false. Jika diaktifkan, terima data dari peristiwa EVENT_AEC_DATA di onNuiAssistEventCallback.
    vad_paramsobjectTidakObjek konfigurasi tingkat lanjut untuk deteksi aktivitas suara (VAD) pada perangkat. Objek ini hanya berlaku ketika audio_update_manually diatur ke "true".
    vad_params.enable_aecbooleanTidakApakah akan mengaktifkan VAD pada perangkat. Jika audio_update_manually diatur ke "true" dan versi SDK mendukung VAD pada perangkat, kemampuan ini diaktifkan secara default.
    vad_params.save_audiobooleanTidakMenentukan apakah akan menyimpan audio yang diproses oleh modul VAD pada perangkat. Jika save_wav diatur ke "true" dan debug_path ditentukan, fitur ini diaktifkan secara default dan data audio VAD disimpan ke debug_path.

Parameter pengenalan ucapan

Untuk mengonfigurasi parameter ini, berikan string JSON dalam argumen params dari metode setParams.
  • Contoh: Berikut adalah contoh string JSON. Tidak semua parameter dicantumkan. Tambahkan parameter lain sesuai kebutuhan saat Anda menulis kode:
{
    "service_type": 4,
    "nls_config": {
        "model": "qwen-audio-3.1-asr-flash-message",
        "sr_format": "pcm",
        "sample_rate": "16000"
    }
}
  • Parameter
    Parameter tingkat atasTipeWajibDeskripsi
    service_typeintYaJenis layanan ucapan. Tetap diatur ke 4 untuk pengenalan ucapan waktu nyata.
    nls_configobjectYaObjek konfigurasi inti untuk pengenalan ucapan. Objek ini berisi parameter utama seperti pemilihan model dan kontrol kualitas pengenalan.
    nls_config.modelstringYaModel yang digunakan dalam contoh. Untuk informasi model, lihat Model dan wilayah yang didukung.
    nls_config.sr_formatstringYaFormat audio.Nilai yang valid:
    • pcm
    • opus
    Untuk audio Opus, kirimkan audio PCM ke SDK. SDK akan menyandikannya sebagai Opus secara internal.
    nls_config.sample_rateintYaLaju sampel dalam Hz. Hanya 16000 yang didukung.
    nls_config.max_sentence_silenceintTidakAmbang keheningan VAD untuk segmentasi, dalam milidetik. Kalimat dianggap selesai jika keheningan setelah ucapan melebihi ambang ini. Default: 1300. Rentang valid: [200, 6000].
    nls_config.heartbeatbooleanTidakApakah akan mengaktifkan paket heartbeat.Nilai default: false.
    • true: Menjaga koneksi ke server tetap aktif bahkan ketika audio senyap dikirim secara terus-menerus.
    • false (default): Bahkan ketika audio senyap dikirim secara terus-menerus, koneksi akan habis waktunya dan tertutup setelah jangka waktu tertentu.
    Audio senyap merujuk pada konten dalam file audio atau aliran data yang tidak mengandung sinyal suara. Anda dapat menghasilkan audio senyap dengan beberapa cara, seperti menggunakan perangkat lunak pengeditan audio seperti Audacity atau Adobe Audition, atau menggunakan alat baris perintah seperti FFmpeg.
    nls_config.disfluency_removal_enabledbooleanTidakHanya didukung oleh qwen-audio-3.1-asr-flash-message. Apakah akan memfilter kata pengisi dan memoles output. Defaultnya false. Atur ke true untuk mengaktifkan fitur ini.
    nls_config.intermediate_result_enabledbooleanTidakHanya didukung oleh qwen-audio-3.1-asr-flash-message. Apakah akan mengembalikan hasil streaming perantara. Defaultnya false. Atur ke true untuk mengembalikan hasil streaming perantara.
    nls_config.vocabulary_idstringTidakID dari daftar kata panas yang telah dikompilasi sebelumnya.Hasilkan ID ini terlebih dahulu dengan memanggil API buat daftar kata kunci. Berikan ID tersebut selama pengenalan untuk menggunakan kata kunci dalam daftar.Cocok untuk skenario di mana kosakata sudah diketahui dan relatif stabil, serta ketika Anda perlu menggunakan kembali daftar kata yang sama di berbagai permintaan.Untuk detail penggunaan, lihat Hotword prakompilasi.
    nls_config.instant_vocabularyobjectTidakKata panas instan.Diteruskan sebagai pasangan kunci-nilai, di mana kuncinya adalah teks hotword (string) dan nilainya adalah bobot hotword (integer). Tidak perlu membuat daftar hotword terlebih dahulu. Bobot berkisar dari [1, 5] atau diatur ke 50: nilai dalam [1, 5] membuat model lebih mungkin mengeluarkan kata tersebut seiring bertambahnya nilai; nilai 50 menetapkan super hotword, yang sangat meningkatkan recall, tetapi jumlah super hotword tidak boleh melebihi 50.Cocok untuk pengoptimalan kata panas sementara tingkat sesi.Ketika hotword instan dan hotword prakompilasi dikonfigurasi bersama, sistem menggabungkan kedua set tersebut. Jika set gabungan berisi lebih dari 2000 hotword, sistem memilih 2000 secara acak untuk digunakan. Untuk detail penggunaan, lihat Hotword instan.
    Untuk model dan batasan yang berlaku untuk hotword instan, lihat Hotword instan.
    nls_config.speech_noise_thresholdfloatTidakAmbang batas untuk membedakan ucapan dari kebisingan, digunakan untuk menyesuaikan sensitivitas Deteksi Aktivitas Suara (VAD).Nilai yang valid: [-1.0, 1.0].Deskripsi nilai:
    • Semakin dekat nilainya ke -1: Ambang batas kebisingan menurun, sehingga kebisingan lebih mungkin dikenali sebagai ucapan, yang dapat menyebabkan lebih banyak kebisingan ditranskripsikan.
    • Semakin dekat nilainya ke +1: Ambang batas kebisingan meningkat, sehingga ucapan lebih mungkin salah dinilai sebagai kebisingan, yang dapat menyebabkan sebagian ucapan terfilter keluar.
    Ini adalah parameter konfigurasi tingkat lanjut. Menyesuaikannya dapat memengaruhi hasil pengenalan secara signifikan. Rekomendasi:
    • Uji dan verifikasi hasil secara menyeluruh sebelum menyesuaikan.
    • Sesuaikan dalam kenaikan kecil berdasarkan lingkungan audio aktual (langkah sebesar 0.1 direkomendasikan).
    nls_config.enable_connection_fast_checkbooleanTidakApakah akan mendeteksi gangguan jaringan dengan cepat dan melaporkannya sesegera mungkin. Default: false.

Antarmuka utama

NativeNui

initialize

Menginisialisasi instans SDK pengenalan ucapan. SDK ini bersifat singleton. Jangan menginisialisasinya lebih dari sekali sebelum Anda memanggil release. Metode ini memblokir, jadi panggil pada thread non-UI.
  • Tanda tangan metode
public synchronized int initialize(final INativeNuiCallback callback,
                                   String parameters,
                                   final Constants.LogLevel level,
                                   final boolean save_log)
  • Parameter
    ParameterTipeDeskripsi
    callbackINativeNuiCallbackImplementasi antarmuka callback peristiwa dan data.
    parametersStringString JSON yang berisi parameter autentikasi, koneksi, dan debug. Lihat Parameter koneksi dan kontrol.
    levelConstants.LogLevelMengontrol tingkat pencetakan log SDK itu sendiri.
    save_logbooleanMenentukan apakah akan menyimpan log lokal. Jika diatur ke true, tentukan jalur melalui debug_path dalam Parameter koneksi dan kontrol, dan secara opsional atur ukuran file melalui max_log_file_size.
  • Nilai kembalian

setParams

Mengatur Parameter pengenalan ucapan dalam format JSON. Panggil metode ini sebelum startDialog.
  • Tanda tangan metode
public synchronized int setParams(String params)
  • Parameter
    ParameterTipeDeskripsi
    paramsStringParameter pengenalan ucapan.
  • Nilai kembalian

startDialog

Memulai pengenalan.
  • Tanda tangan metode
public synchronized int startDialog(VadMode vad_mode, String dialog_params)
  • Parameter
    ParameterTipeDeskripsi
    vad_modeVadModeMode VAD. Tetap pada VadMode.TYPE_P2T.
    dialog_paramsStringJika parameter apikey dalam Parameter koneksi dan kontrol menggunakan kunci API sementara, Anda dapat memperbaruinya di sini saat kedaluwarsa.Untuk meningkatkan akurasi pengenalan dengan menggunakan konteks, perbarui konteks di sini.Konten dalam format JSON:
    {
      "apikey": "st-****",
      "input_context": [
        {
          "role": "user",
          "content": [
            {
              "text": "xxxxx",
              "type": "input_text"
            }
          ]
        }
      ]
    }
    
  • Nilai kembalian

stopDialog

Mengakhiri pengenalan. Setelah Anda memanggil metode ini, server mengembalikan hasil pengenalan akhir dan mengakhiri tugas.
  • Tanda tangan metode
public synchronized int stopDialog();
  • Nilai kembalian

cancelDialog

Mengakhiri pengenalan segera. Setelah Anda memanggil metode ini, tugas berakhir seketika tanpa menunggu server mengembalikan hasil pengenalan akhir.
  • Tanda tangan metode
public synchronized int cancelDialog();
  • Nilai kembalian

updateAction

Mengirimkan perintah tindakan selama interaksi untuk memperbarui perilaku runtime, seperti konteks pengenalan.
  • Tanda tangan metode
public synchronized int updateAction(String params);
  • Parameter
    ParameterTipeDeskripsi
    paramsStringString JSON yang digunakan untuk memperbarui perilaku runtime, seperti konteks pengenalan.
    params.typeStringDiatur ke "action".
    params.commandStringPerintah runtime. Nilai yang valid:
    • context: Segera memperbarui konteks untuk meningkatkan akurasi pengenalan.
    • play_start: Ketika AEC pada perangkat digunakan, memberi tahu SDK bahwa pemutar telah mulai memutar audio.
    • play_over: Ketika AEC pada perangkat digunakan, memberi tahu SDK bahwa pemutar telah selesai memutar audio.
    params.contextStringKetika command diatur ke context, segera memperbarui konteks untuk meningkatkan akurasi pengenalan. Nilainya adalah string JSON, seperti yang ditunjukkan dalam contoh berikut.
{
  "context": [
    {
      "role": "user",
      "content": [
        {
          "text": "xxx",
          "type": "input_text"
        }
      ]
    }
  ]
}
  • Nilai kembalian

updateAudio

Ketika audio_update_manually diatur ke "true", panggil metode ini untuk mengirimkan data rekaman secara aktif alih-alih menyediakan data melalui onNuiNeedAudioData.
  • Tanda tangan metode
public synchronized int updateAudio(byte[] data, int len,
                                    boolean first_pack);
  • Parameter
    ParameterTipeDeskripsi
    databyte[]Data audio yang akan dikirimkan.
    lenintJumlah byte data audio yang akan dikirimkan.
    first_packbooleanAbaikan parameter ini.
  • Nilai kembalian

updateRefAudio

Ketika audio_update_manually diatur ke "true" dan AEC pada perangkat diaktifkan, panggil metode ini untuk mengirimkan audio yang diputar oleh pemutar sebagai sinyal referensi.
  • Tanda tangan metode
public synchronized int updateRefAudio(byte[] data, int len,
                                       boolean first_pack);
  • Parameter
    ParameterTipeDeskripsi
    databyte[]Data audio yang akan dikirimkan.
    lenintJumlah byte data audio yang akan dikirimkan.
    first_packbooleanAbaikan parameter ini.
  • Nilai kembalian

release

Melepaskan semua sumber daya internal SDK. Setelah Anda memanggil metode ini, instans SDK menjadi tidak tersedia. Untuk menggunakannya lagi, Anda harus menginisialisasi ulang dengan memanggil initialize.
  • Tanda tangan metode
public synchronized int release();
  • Nilai kembalian

GetVersion

Mendapatkan informasi versi SDK saat ini.
  • Tanda tangan metode
public synchronized String GetVersion();
  • Nilai kembalian Informasi versi SDK saat ini.

INativeNuiCallback: callback listener

onNuiEventCallback: mendengarkan peristiwa dan hasil pengenalan ucapan

  • Tanda tangan metode
void onNuiEventCallback(NuiEvent event, final int resultCode, final int arg2, KwsResult kwsResult, AsrResult asrResult);
  • Parameter
    ParameterTipeDeskripsi
    eventNuiEventPeristiwa callback.
    resultCodeintHanya valid saat event EVENT_ASR_ERROR terjadi.
    arg2intParameter yang dipesan.
    asrResultAsrResultHasil pengenalan ucapan.
    kwsResultKwsResultFitur bangun suara. Anda tidak perlu menggunakan parameter ini.

onNuiAudioStateChanged: mendengarkan status audio

SDK menggunakan callback ini untuk memberi tahu Anda kapan harus memulai atau menghentikan perekaman.
  • Tanda tangan metode
void onNuiAudioStateChanged(AudioState state);
  • Status AudioState
    StatusDeskripsi
    STATE_OPENInteraksi telah dimulai. Anda dapat membuka perangkat perekaman dan mulai merekam.
    STATE_PAUSEInteraksi telah berhenti. Anda dapat menghentikan perekaman.
    STATE_CLOSEInstans SDK telah dilepaskan. Anda dapat menutup perangkat perekaman sepenuhnya.

onNuiNeedAudioData: menyediakan data audio untuk dikenali

Setelah pengenalan dimulai, callback ini dipicu secara terus-menerus. Sediakan data audio yang akan dikenali dalam callback ini.
  • Tanda tangan metode
int onNuiNeedAudioData(byte[] buffer, int len);
  • Parameter
    ParameterTipeDeskripsi
    bufferbyte[]Data audio yang akan diisi.
    lenintJumlah byte data audio yang akan diisi.
  • Nilai kembalian Jumlah byte yang benar-benar diisi.

onNuiAssistEventCallback: menerima peristiwa dan data tambahan

Callback ini menerima peristiwa tambahan dan data terkait dari SDK.
  • Tanda tangan metode
void onNuiAssistEventCallback_(int event, byte[] info, int info_len,
                               byte[] data);
  • Parameter
    ParameterTipeDeskripsi
    eventintSebuah peristiwa NuiEvent.
    infoStringAbaikan parameter ini.
    info_lenintAbaikan parameter ini.
    databyte[]Data tambahan, seperti data audio yang diproses oleh AEC.

onNuiLogTrackCallback: mendengarkan log pelacakan

Callback ini menerima log internal terperinci dari SDK untuk membantu pemecahan masalah dan debugging.
default void onNuiLogTrackCallback(Constants.LogLevel level, String log)

NuiEvent: jenis peristiwa

PeristiwaDeskripsi
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_WARNTerjadi peringatan yang tidak mengganggu pengenalan ucapan, seperti gangguan jaringan saat penyambungan ulang diaktifkan.
EVENT_ASR_ERRORTerjadi kesalahan selama pengenalan ucapan.
EVENT_MIC_ERRORDipicu ketika tidak ada data audio yang diterima selama 2 detik berturut-turut.
EVENT_SENTENCE_ENDAkhir kalimat terdeteksi. Hasil pengenalan lengkap untuk kalimat tersebut dikembalikan.
EVENT_TRANSCRIBER_COMPLETEPengenalan ucapan telah berakhir.
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