Layanan pengenalan ucapan real-time menerima aliran audio dan mentranskripsinya menjadi teks berbobot tanda baca secara real-time. Gunakan layanan ini untuk subtitel langsung, rapat daring, obrolan suara, asisten cerdas, dan skenario serupa.
Ikhtisar
Layanan ini mengalirkan audio dan mengembalikan teks hasil transkripsi dengan latensi rendah.
- Mengenali bahasa Mandarin dengan akurasi tinggi, serta dialek Kanton, Sichuan, dan lainnya.
- Menangani lingkungan akustik kompleks, dengan deteksi bahasa otomatis dan penyaringan cerdas terhadap audio non-ucapan.
- Mengenali berbagai keadaan emosional, termasuk kaget, tenang, senang, sedih, jijik, marah, dan takut.
- Mendukung hotword kustom untuk meningkatkan akurasi pengenalan istilah tertentu.
- Mendukung peningkatan konteks untuk meningkatkan akurasi pengenalan dengan meneruskan riwayat percakapan atau istilah domain.
- Menghasilkan timestamp untuk menghasilkan hasil pengenalan terstruktur.
- Menerima laju sampel fleksibel dan berbagai format audio agar sesuai dengan berbagai lingkungan perekaman.
Prasyarat
- Kunci API harus Dapatkan kunci API dan ditetapkan sebagai Variabel lingkungan.
- Untuk memanggil layanan melalui SDK DashScope, instal SDK terbaru.
Mulai cepat
Contoh berikut menunjukkan cara memanggil layanan pengenalan ucapan real-time melalui SDK DashScope.
- Qwen-Audio-3.0-ASR-Flash-Streaming/ Fun-ASR -Realtime
- Paraformer
- Kenali ucapan dari mikrofon
- Kenali file audio lokal
- Java
- Python
Fitur lanjutan
Konfigurasi segmentasi VAD
Voice Activity Detection (VAD) menentukan kapan segmen ucapan berkelanjutan berakhir, yang memicu event hasil pengenalan akhir. Ketiga keluarga model mengaktifkan VAD sisi server secara default, tetapi nama parameter dan granularitas penyetelannya berbeda:
- Qwen-Audio-3.0-ASR-Flash-Streaming / Fun-ASR-Realtime / Paraformer: Dikonfigurasi melalui
max_sentence_silence(ambang batas diam VAD untuk segmentasi, dalam milidetik). Ketika keheningan setelah segmen ucapan melebihi ambang batas ini, sistem menganggap kalimat tersebut selesai. - Qwen3-ASR-Flash-Realtime: Dikonfigurasi melalui
session.turn_detection, yang mencakupsilence_duration_ms(durasi ambang batas keheningan yang mengakhiri giliran ketika dilewati; default server800, dengan400direkomendasikan untuk skenario percakapan dan obrolan yang memerlukan segmentasi cepat) danthreshold(sensitivitas deteksi VAD; default server0.2). Qwen3-ASR-Flash-Realtime juga mendukung Mode Manual, yang menonaktifkan VAD dan menggunakan commit sisi klien untuk segmentasi. Untuk detailnya, lihat Mode interaksi Qwen3-ASR-Flash-Realtime.
max_sentence_silence di Qwen-Audio-3.0-ASR-Flash-Streaming / Fun-ASR-Realtime / Paraformer, dan silence_duration_ms di Qwen3-ASR-Flash-Realtime. Untuk definisi field lengkap, lihat Referensi API.
Tingkatkan akurasi dengan hotword
Gunakan hotword untuk meningkatkan akurasi pengenalan istilah tertentu, seperti nama merek, nama pribadi, dan terminologi khusus.
Untuk konfigurasi dan penggunaan hotword terperinci, lihat Tingkatkan akurasi pengenalan.
Tingkatkan akurasi dengan peningkatan konteks
Peningkatan konteks meneruskan riwayat percakapan atau terminologi domain ke model ASR untuk secara signifikan meningkatkan akurasi transkripsi istilah khusus. Untuk penggunaan terperinci dan contoh hasil, lihat Peningkatan konteks.
Dapatkan timestamp
Keluarga model Qwen-Audio-3.0-ASR-Flash-Streaming, Fun-ASR-Realtime, dan Paraformer menghasilkan timestamp baik di tingkat kalimat maupun kata secara default, yang mendukung penyelarasan subtitel, penyorotan kata kunci, pembacaan karaoke, dan skenario serupa. Qwen3-ASR-Flash-Realtime (qwen3-asr-flash-realtime) saat ini tidak mengembalikan timestamp. Jika Anda memerlukan timestamp, gunakan Qwen-Audio-3.0-ASR-Flash-Streaming, Fun-ASR-Realtime, atau Paraformer. Untuk transkripsi file, model transkripsi file rekaman Qwen ASR qwen3-asr-flash-filetrans mendukung timestamp tingkat kata. Untuk detailnya, lihat Pengenalan ucapan non-real-time.
Timestamp dikembalikan dalam milidetik pada dua tingkat:
- Tingkat kalimat:
payload.output.sentence.begin_timedanpayload.output.sentence.end_timemenandai awal dan akhir kalimat lengkap dalam audio. Dalam hasil antara,end_timemungkinnulldan diisi dengan nilai akhir ketika kalimat berakhir (sentence_end = true). - Tingkat kata: Array
payload.output.sentence.words, di mana setiap elemen berisibegin_time,end_time,text(teks kata atau karakter), danpunctuation(tanda baca yang mengikuti kata, atau string kosong jika tidak ada).
Pengenalan emosi
Qwen3-ASR-Flash-Realtime dan beberapa model Paraformer dapat menyertakan keadaan emosional pembicara dalam hasil transkripsi, tetapi keduanya berbeda dalam granularitas output dan cara fitur diaktifkan.
Qwen3-ASR-Flash-Realtime (qwen3-asr-flash-realtime): Selalu aktif, tidak perlu konfigurasi. Emosi dikembalikan melalui field tingkat atas emotion baik dalam event conversation.item.input_audio_transcription.text maupun conversation.item.input_audio_transcription.completed. Nilainya adalah salah satu dari tujuh emosi detail halus: surprised, neutral, happy, sad, disgusted, angry, dan fearful.
payload.output.sentence.emo_tag dan payload.output.sentence.emo_confidence. Nilainya adalah salah satu dari tiga polaritas: positive (seperti senang atau puas), negative (seperti marah atau murung), dan neutral (tidak ada emosi jelas). Keyakinan berkisar dari 0,0 hingga 1,0.
Pengenalan emosi dikembalikan hanya jika semua kondisi berikut terpenuhi:
- Modelnya adalah
paraformer-realtime-8k-v2. - Segmentasi semantik dimatikan:
semantic_punctuation_enabled = false(false adalah default, jadi tidak perlu pengaturan khusus). - Hasil dikembalikan hanya dalam event akhir kalimat, di mana
sentence_end = true.
semantic_punctuation_enabled ke true. Ini mengaktifkan segmentasi semantik dan tidak lagi mengembalikan field emo_tag dan emo_confidence.
Nama field di atas mengikuti jalur JSON WebSocket. SDK berbeda mengekspos field ini dengan konvensi penamaan mereka sendiri (kunci kamus, properti objek, metode getter, dan sebagainya). Untuk pemetaan field lengkap, lihat referensi API untuk setiap SDK.
Untuk definisi field lengkap, batasan nilai, dan contoh, lihat Referensi API.
Penyaringan kata sensitif
Penyaringan kata sensitif mengganti atau menghapus kata sensitif dalam hasil pengenalan. Gunakan untuk inspeksi kualitas call-center, kepatuhan konten, tinjauan subtitel, dan skenario serupa.
Model yang didukung: Hanya Qwen-Audio-3.0-ASR-Flash-Streaming dan Fun-ASR-Realtime.
Batas: Anda dapat mengatur hingga 32 kata sensitif.
Perilaku default: Ketika parameter special_word_filter tidak diteruskan, tidak ada kata sensitif yang disaring.
Cara mengonfigurasi: special_word_filter adalah objek JSON dengan tiga subfield:
filter_with_signed.word_list: Array string yang mencantumkan kata sensitif untuk diganti dengan string karakter*sepanjang yang sama. Misalnya, dengan["test"], "Help me test it" menjadi "Help me **** it".filter_with_empty.word_list: Array string yang mencantumkan kata sensitif untuk dihapus sepenuhnya dari hasil. Misalnya, dengan["start"], "Is the game about to start" menjadi "Is the game about to".system_reserved_filter: Boolean yang default-nyafalse. Ini menentukan apakah penyaringan kata sensitif diaktifkan.
Panggil protokol WebSocket mentah
Contoh berikut menunjukkan cara menghubungkan langsung ke server melalui protokol WebSocket mentah, untuk skenario yang tidak menggunakan SDK DashScope. Setiap contoh adalah implementasi minimal yang dapat dijalankan. Untuk protokol WebSocket, lihat referensi API masing-masing model.
Klik untuk melihat contoh protokol WebSocket mentah
Klik untuk melihat contoh protokol WebSocket mentah
- Qwen-Audio-3.0-ASR-Flash-Streaming/ Fun-ASR-Realtime
- Qwen3-ASR-Flash-Realtime
- Paraformer
- Python
- Java
- Node.js
- C#
- PHP
- Go
websocket.py. Nama ini bertentangan dengan pustaka websocket dan menyebabkan error berikut: AttributeError: module 'websocket' has no attribute 'WebSocketApp'. Did you mean: 'WebSocket'?.Terapkan di produksi
Gunakan kembali koneksi (WebSocket)
Koneksi WebSocket untuk Qwen-Audio-3.0-ASR-Flash-Streaming/Fun-ASR-Realtime dan Paraformer mendukung penggunaan kembali: setelah satu tugas pengenalan selesai, Anda dapat memulai tugas berikutnya tanpa membuat koneksi baru.
Alur penggunaan kembali: Klien mengirim finish-task. Setelah server mengembalikan task-finished, klien dapat mengirim run-task lagi untuk memulai tugas baru.
Qwen3-ASR-Flash-Realtime menggunakan model sesi dan tidak mendukung penggunaan kembali koneksi. Tutup koneksi setelah setiap sesi berakhir.
Untuk event masing-masing model, lihat referensi API yang sesuai.
Praktik terbaik konkurensi tinggi
SDK DashScope mencakup mekanisme pooling bawaan yang menggunakan kembali koneksi WebSocket dan objek pengenalan, yang menghindari overhead pembuatan dan penghancuran yang sering.
Klik untuk melihat praktik terbaik konkurensi tinggi
Klik untuk melihat praktik terbaik konkurensi tinggi
Prasyarat
- Dapatkan kunci API
- SDK DashScope telah diinstal dan memenuhi persyaratan versi. Kami menyarankan Anda menginstal versi terbaru: SDK Java versi 2.16.9 atau lebih baru.
- Pool koneksi: Pool koneksi OkHttp3 yang terintegrasi dalam SDK mengelola dan menggunakan kembali koneksi WebSocket dasar, yang mengurangi overhead handshake jaringan. Fitur ini diaktifkan secara default.
- Pool objek: Dibangun di atas
commons-pool2, pool objek mempertahankan serangkaian objekRecognitionyang koneksi-nya sudah dibuat. Meminjam objek dari pool menghilangkan latensi pengaturan koneksi dan secara signifikan mengurangi latensi paket pertama.
Langkah implementasi
-
Tambahkan dependensi
Tambahkan dashscope-sdk-java dan commons-pool2 ke file konfigurasi dependensi Anda, berdasarkan alat build proyek Anda.
Contoh berikut menunjukkan konfigurasi untuk Maven dan Gradle:
- Maven
- Gradle
- Buka file
pom.xmlproyek Maven Anda. - Tambahkan dependensi berikut di dalam tag
<dependencies>.
- Simpan file
pom.xml. - Jalankan perintah Maven (seperti
mvn clean installataumvn compile) untuk memperbarui dependensi proyek.
-
Konfigurasikan pool koneksi
Konfigurasikan parameter utama pool koneksi melalui variabel lingkungan:
Variabel lingkungan
Deskripsi
DASHSCOPE_CONNECTION_POOL_SIZE
Ukuran pool koneksi.
Nilai yang direkomendasikan: minimal dua kali konkurensi puncak.
Nilai default: 32.
DASHSCOPE_MAXIMUM_ASYNC_REQUESTS
Jumlah maksimum permintaan asinkron.
Nilai yang direkomendasikan: sama dengan
DASHSCOPE_CONNECTION_POOL_SIZE.Nilai default: 32.
DASHSCOPE_MAXIMUM_ASYNC_REQUESTS_PER_HOST
Jumlah maksimum permintaan asinkron per host.
Nilai yang direkomendasikan: sama dengan
DASHSCOPE_CONNECTION_POOL_SIZE.Nilai default: 32.
-
Konfigurasikan pool objek
Konfigurasikan ukuran pool objek melalui variabel lingkungan:
Buat pool objek dengan kode berikut:Variabel lingkungan
Deskripsi
RECOGNITION_OBJECTPOOL_SIZE
Ukuran pool objek.
Nilai yang direkomendasikan: 1,5 hingga 2 kali konkurensi puncak.
Nilai default: 500.
-
Pinjam objek Recognition dari pool objek
Saat jumlah objek yang belum dikembalikan melebihi batas pool objek, sistem membuat objek
Recognitiontambahan. Objek baru ini harus membuat koneksi WebSocket baru dan tidak dapat digunakan kembali.
-
Lakukan pengenalan ucapan
Panggil metode call atau streamCall objek
Recognitionuntuk melakukan pengenalan ucapan. - Kembalikan objek Recognition Setelah tugas pengenalan ucapan selesai, kembalikan objek Recognition agar dapat digunakan kembali. Jangan mengembalikan objek dengan tugas yang belum selesai atau gagal.
Kode lengkap
Konfigurasi yang direkomendasikan
Konfigurasi berikut didasarkan pada hasil pengujian dari menjalankan hanya layanan pengenalan ucapan real-time Paraformer pada server Alibaba Cloud dengan spesifikasi yang ditentukan. Konkurensi mesin tunggal adalah jumlah tugas pengenalan ucapan real-time Paraformer yang berjalan secara bersamaan (yaitu, jumlah thread pekerja).Spesifikasi mesin (Alibaba Cloud) | Konkurensi maksimum mesin tunggal | Ukuran pool objek | Ukuran pool koneksi |
|---|---|---|---|
4 vCPU, 8 GiB | 100 | 500 | 2000 |
8 vCPU, 16 GiB | 200 | 500 | 2000 |
16 vCPU, 32 GiB | 400 | 500 | 2000 |
Manajemen sumber daya dan penanganan error
-
Tugas berhasil: Panggil
GenericObjectPool.returnObject()untuk mengembalikan objek Recognition ke pool untuk digunakan kembali. -
Tugas gagal: Saat SDK atau logika bisnis Anda melemparkan pengecualian yang mengganggu tugas, lakukan dua tindakan berikut:
- Tutup secara aktif koneksi WebSocket dasar.
- Invalidasi objek dalam pool objek untuk mencegahnya digunakan kembali.
- Saat layanan mengembalikan error TaskFailed, tidak diperlukan penanganan tambahan.
Pemanasan dan pengukuran latensi
Saat mengevaluasi kinerja seperti latensi pemanggilan konkuren untuk SDK Java DashScope, kami menyarankan Anda menjalankan pemanasan yang cukup sebelum pengujian formal.Mekanisme penggunaan kembali koneksi
SDK Java DashScope mengelola dan menggunakan kembali koneksi WebSocket melalui pool koneksi singleton global. Mekanisme ini bekerja sebagai berikut:- Pembuatan sesuai permintaan: SDK tidak membuat koneksi WebSocket sebelumnya saat startup layanan. Sebaliknya, SDK membuat koneksi sesuai permintaan pada pemanggilan pertama.
-
Penggunaan kembali berbatas waktu: Setelah permintaan selesai, koneksi tetap berada di pool hingga 60 detik untuk digunakan kembali.
- Jika permintaan baru tiba dalam waktu 60 detik, SDK menggunakan kembali koneksi yang ada dan menghindari overhead handshake berulang.
- Jika koneksi tetap tidak aktif selama lebih dari 60 detik, SDK menutupnya secara otomatis untuk melepaskan sumber daya.
Mengapa pemanasan penting
Dalam skenario berikut, pool koneksi mungkin tidak memiliki koneksi aktif untuk digunakan kembali, sehingga permintaan harus membuat koneksi baru:- Aplikasi baru saja dimulai dan belum melakukan pemanggilan apa pun.
- Layanan telah tidak aktif selama lebih dari 60 detik, sehingga koneksi dalam pool telah ditutup karena timeout.
Pendekatan yang direkomendasikan
Sebelum menjalankan pengujian beban formal atau mengukur latensi, ikuti langkah pemanasan berikut:- Simulasikan tingkat konkurensi pengujian formal dengan mengirim sejumlah pemanggilan terlebih dahulu (misalnya, selama 1 hingga 2 menit) untuk sepenuhnya mengisi pool koneksi.
- Setelah Anda memastikan bahwa pool koneksi telah membuat dan mempertahankan koneksi aktif yang cukup, mulailah mengumpulkan data kinerja formal.
Tingkatkan akurasi pengenalan
- Pilih model yang sesuai dengan laju sampel: Untuk audio telepon 8 kHz, gunakan model 8 kHz secara langsung. Ini menghindari kehilangan informasi yang disebabkan oleh upsampling ke 16 kHz.
- Tingkatkan kualitas input audio: Gunakan mikrofon berkualitas tinggi dan rekam di lingkungan dengan rasio signal-to-noise tinggi dan tanpa gema. Di lapisan aplikasi, Anda dapat mengintegrasikan algoritma seperti pengurangan noise (misalnya, RNNoise) dan pembatalan gema akustik (AEC) untuk pra-pemrosesan.
Siapkan strategi toleransi kesalahan
-
Koneksi ulang sisi klien: Klien harus mengimplementasikan koneksi ulang otomatis untuk menangani fluktuasi jaringan. Berikut adalah implementasi referensi untuk SDK Python:
- Tangkap pengecualian: Implementasikan metode
on_errordalam kelasCallback. SDKdashscopememanggil metode ini saat mengalami error jaringan atau masalah lain. - Beri sinyal status: Saat
on_errordipicu, atur sinyal koneksi ulang. Di Python, Anda dapat menggunakanthreading.Event, flag sinyal aman thread. - Loop koneksi ulang: Bungkus logika utama dalam loop
for(misalnya, coba 3 kali). Saat sinyal koneksi ulang terdeteksi, putaran pengenalan saat ini dihentikan, sumber daya dibersihkan, dan setelah beberapa detik loop dijalankan lagi untuk membuat koneksi baru.
- Tangkap pengecualian: Implementasikan metode
-
Atur heartbeat untuk menjaga koneksi tetap aktif: Untuk mempertahankan koneksi jangka panjang dengan server, atur parameter heartbeat ke
true. Koneksi ke server kemudian tetap terbuka meskipun audio tidak mengandung suara untuk waktu yang lama. - Batas laju model: Saat memanggil API model, perhatikan aturan Pembatasan laju model.
Model dan wilayah yang didukung
- Singapura
- China (Beijing)
- Qwen-Audio-3.0-ASR-Flash-Streaming: qwen-audio-3.0-asr-flash-streaming
- Fun-ASR-Realtime: fun-asr-realtime (versi stabil, saat ini setara dengan fun-asr-realtime-2025-11-07), fun-asr-realtime-2025-11-07 (versi snapshot)
- Qwen3-ASR-Flash-Realtime: qwen3-asr-flash-realtime (versi stabil, saat ini setara dengan qwen3-asr-flash-realtime-2025-10-27), qwen3-asr-flash-realtime-2026-02-10 (versi snapshot terbaru), qwen3-asr-flash-realtime-2025-10-27 (versi snapshot)
Referensi API
- Referensi API Pengenalan ucapan real-time - Qwen-Audio-ASR-Streaming
- Referensi API Pengenalan ucapan real-time - Fun-ASR-Realtime
- Referensi API Pengenalan ucapan real-time - Qwen3-ASR-Flash-Realtime
- Referensi API Pengenalan ucapan real-time - Paraformer
- SDK Klien AOQ (untuk Qwen-Audio-3.0-ASR-Flash-Streaming/Fun-ASR-Realtime)
FAQ
Format audio apa saja yang didukung oleh pengenalan ucapan real-time?
Model Qwen-Audio-3.0-ASR-Flash-Streaming, Fun-ASR-Realtime, dan Paraformer mendukung format pcm, wav, mp3, opus, speex, aac, dan amr. Untuk model Qwen3-ASR-Flash-Realtime, kami merekomendasikan format pcm atau opus. Format lain (seperti wav, aac, dan amr) diterima oleh lapisan validasi session.update, tetapi decoding sisi server mungkin gagal. Pastikan aliran audio menggunakan format yang direkomendasikan sebelum mengirimnya.
Apa perbedaan antara SDK dan API WebSocket, dan bagaimana cara memilih?
SDK DashScope menyembunyikan detail seperti manajemen koneksi WebSocket, autentikasi, dan koneksi ulang, yang menjadikannya pilihan tepat untuk integrasi cepat. Menghubungkan langsung ke API WebSocket memberikan kontrol lebih rinci dan cocok untuk bahasa pemrograman yang tidak didukung SDK atau skenario yang memerlukan manajemen koneksi kustom. Kami menyarankan Anda menggunakan SDK terlebih dahulu.
Bagaimana cara meningkatkan akurasi pengenalan untuk nama diri?
Gunakan hotword atau peningkatan konteks. Untuk metode konfigurasi dan catatan penggunaan terperinci, lihat Tingkatkan akurasi pengenalan.
Apa yang harus saya lakukan ketika koneksi sering terputus?
Implementasikan koneksi ulang sisi klien dan aktifkan parameter heartbeat (heartbeat=true) untuk mencegah koneksi terputus saat tidak ada audio untuk waktu yang lama. Untuk strategi toleransi kesalahan terperinci, lihat Terapkan di produksi.