Topik ini menjelaskan parameter dan antarmuka SDK Python untuk pengenalan ucapan real-time Paraformer.
Dokumen ini hanya berlaku untuk wilayah China (Beijing). Untuk menggunakan model-model tersebut, Anda harus menggunakan API key dari wilayah China (Beijing).
Panduan pengguna: Untuk deskripsi model dan panduan pemilihan, lihat Pengenalan ucapan real-time - Fun-ASR/Paraformer.
Prasyarat
Anda telah mengaktifkan Model Studio dan membuat API key. Untuk mencegah risiko keamanan, ekspor API key sebagai variabel lingkungan alih-alih menyematkannya langsung di kode Anda.
CatatanUntuk memberikan izin akses sementara kepada aplikasi atau pengguna pihak ketiga, atau jika Anda ingin mengontrol secara ketat operasi berisiko tinggi seperti mengakses atau menghapus data sensitif, kami menyarankan Anda menggunakan token otentikasi sementara.
Dibandingkan dengan API key jangka panjang, token otentikasi sementara lebih aman karena masa berlakunya singkat (60 detik). Token ini cocok untuk skenario panggilan sementara dan dapat secara efektif mengurangi risiko kebocoran API key.
Untuk menggunakan token sementara, gantilah API key yang digunakan untuk autentikasi dalam kode Anda dengan token otentikasi sementara tersebut.
Daftar model
paraformer-realtime-v2 | paraformer-realtime-8k-v2 | |
Skenario | Skema seperti live streaming dan rapat | Skema pengenalan audio 8 kHz, seperti layanan pelanggan telepon dan pesan suara |
Laju sampel | Apa saja | 8 kHz |
Bahasa | Bahasa Tiongkok (termasuk Mandarin dan berbagai dialek), Inggris, Jepang, Korea, Jerman, Prancis, dan Rusia Dialek Tiongkok yang didukung: Shanghainese, Wu, Minnan, Timur Laut, Gansu, Guizhou, Henan, Hubei, Hunan, Jiangxi, Ningxia, Shanxi, Shaanxi, Shandong, Sichuan, Tianjin, Yunnan, dan Kanton | Tiongkok |
Prediksi tanda baca | ✅ Didukung secara default. Tidak perlu konfigurasi. | ✅ Didukung secara default. Tidak perlu konfigurasi. |
Inverse Text Normalization (ITN) | ✅ Didukung secara default. Tidak perlu konfigurasi. | ✅ Didukung secara default. Tidak perlu konfigurasi. |
Kosakata kustom | ✅ Lihat Hotword kustom | ✅ Lihat Hotword kustom |
Tentukan bahasa pengenalan | ✅ Tentukan bahasa menggunakan parameter | ❌ |
Pengenalan emosi | ❌ |
Mulai
Kelas Recognition menyediakan metode untuk panggilan non-streaming dan streaming dua arah. Pilih metode yang sesuai berdasarkan kebutuhan Anda:
Panggilan non-streaming: Mengenali file lokal dan mengembalikan hasil lengkap sekaligus. Cocok untuk memproses audio yang telah direkam sebelumnya.
Panggilan streaming dua arah: Mengenali aliran audio dan menghasilkan hasil secara real-time. Aliran audio dapat berasal dari perangkat eksternal, seperti mikrofon, atau dibaca dari file lokal. Cocok untuk skenario yang memerlukan umpan balik langsung.
Panggilan non-streaming
Metode ini mengirimkan tugas speech-to-text real-time untuk file lokal. Proses akan diblokir hingga hasil transkripsi lengkap dikembalikan.
Buat instance kelas Recognition, atur parameter permintaan, lalu panggil metode call untuk melakukan pengenalan dan mendapatkan RecognitionResult.
Panggilan streaming dua arah
Metode ini mengirimkan tugas speech-to-text real-time dan mengembalikan hasil pengenalan secara real-time melalui antarmuka callback.
Mulai pengenalan ucapan streaming
Buat instance kelas Recognition, atur parameter permintaan dan antarmuka callback (RecognitionCallback), lalu panggil metode
start.Kirimkan aliran audio
Panggil berulang kali metode
send_audio_framedari kelas `Recognition` untuk mengirimkan aliran audio biner dari file lokal atau perangkat (seperti mikrofon) ke server dalam segmen-segmen.Saat data audio dikirim, server menggunakan metode
on_eventdari antarmuka callback RecognitionCallback untuk mengembalikan hasil pengenalan ke klien secara real-time.Kami menyarankan durasi setiap segmen audio yang dikirim sekitar 100 milidetik, dengan ukuran data antara 1 KB hingga 16 KB.
Akhiri pemrosesan
Panggil metode
stopdari kelas Recognition untuk menghentikan pengenalan ucapan.Metode ini memblokir thread saat ini hingga callback
on_completeatauon_errordari antarmuka callback (RecognitionCallback) dipicu.
Panggilan konkuren
Dalam Python, karena adanya Global Interpreter Lock, hanya satu thread yang dapat mengeksekusi kode Python pada satu waktu, meskipun beberapa library berorientasi performa mungkin menghilangkan batasan ini. Untuk memanfaatkan sumber daya komputasi komputer multi-core secara lebih baik, kami menyarankan Anda menggunakan multiprocessing atau concurrent.futures.ProcessPoolExecutor. Multithreading dapat meningkatkan latensi panggilan SDK secara signifikan dalam kondisi konkurensi tinggi.
Parameter permintaan
Parameter permintaan diatur dalam konstruktor (__init__) kelas Recognition.
Parameter | Tipe | Default | Wajib | Deskripsi |
model | str | - | Ya | Model yang digunakan untuk pengenalan ucapan real-time. Untuk informasi selengkapnya, lihat Daftar model. |
sample_rate | int | - | Ya | Laju pengambilan sampel audio dalam Hz. Parameter ini bervariasi tergantung model:
|
format | str | - | Ya | Format audio yang akan dikenali. Format audio yang didukung: pcm, wav, mp3, opus, speex, aac, dan amr. Penting opus/speex: Harus dikemas dalam Ogg. wav: Harus diencode PCM. amr: Hanya tipe AMR-NB yang didukung. |
vocabulary_id | str | - | Tidak | ID kosakata hotword. Parameter ini hanya berlaku jika diatur. Gunakan field ini untuk mengatur ID hotword untuk model v2 dan yang lebih baru. Informasi hotword untuk ID hotword ini diterapkan pada permintaan pengenalan ucapan. Untuk informasi selengkapnya, lihat Hotword kustom. |
disfluency_removal_enabled | bool | False | Tidak | Menentukan apakah akan memfilter kata-kata tidak lancar:
|
language_hints | list[str] | ["zh", "en"] | Tidak | Kode bahasa yang akan dikenali. Jika Anda tidak dapat menentukan bahasa sebelumnya, Anda dapat membiarkan parameter ini tidak diatur. Model akan secara otomatis mendeteksi bahasa. Kode bahasa yang saat ini didukung:
Parameter ini hanya berlaku untuk model multibahasa. Untuk informasi selengkapnya, lihat Daftar model. |
semantic_punctuation_enabled | bool | False | Tidak | Menentukan apakah akan mengaktifkan segmentasi kalimat semantik. Fitur ini dinonaktifkan secara default.
Segmentasi kalimat semantik memberikan akurasi lebih tinggi dan cocok untuk skenario transkripsi rapat. Segmentasi kalimat VAD memiliki latensi lebih rendah dan cocok untuk skenario interaktif. Dengan menyesuaikan parameter Parameter ini hanya berlaku untuk model v2 dan yang lebih baru. |
max_sentence_silence | int | 800 | Tidak | Ambang batas durasi diam untuk segmentasi kalimat VAD, dalam ms. Jika durasi diam setelah segmen ucapan melebihi ambang batas ini, sistem menentukan bahwa kalimat telah berakhir. Nilai parameter berkisar antara 200 ms hingga 6000 ms. Nilai default adalah 800 ms. Parameter ini hanya berlaku ketika parameter |
multi_threshold_mode_enabled | bool | False | Tidak | Jika parameter ini diatur ke `true`, fitur ini mencegah VAD membagi kalimat yang terlalu panjang. Fitur ini dinonaktifkan secara default. Parameter ini hanya berlaku ketika parameter |
punctuation_prediction_enabled | bool | True | Tidak | Menentukan apakah akan menambahkan tanda baca secara otomatis ke hasil pengenalan:
Parameter ini hanya berlaku untuk model v2 dan yang lebih baru. |
heartbeat | bool | False | Tidak | Mengontrol apakah akan mempertahankan koneksi persisten dengan server:
Parameter ini hanya berlaku untuk model v2 dan yang lebih baru. Saat menggunakan field ini, versi SDK harus 1.23.1 atau lebih baru. |
inverse_text_normalization_enabled | bool | True | Tidak | Menentukan apakah akan mengaktifkan Inverse Text Normalization (ITN). Fitur ini diaktifkan secara default (`true`). Saat diaktifkan, angka Tiongkok dikonversi menjadi angka Arab. Parameter ini hanya berlaku untuk model v2 dan yang lebih baru. |
callback | RecognitionCallback | - | Tidak |
Antarmuka utama
Kelas Recognition
Kelas Recognition diimpor menggunakan `from dashscope.audio.asr import *`.
Metode anggota | Signature metode | Deskripsi |
call | | Panggilan non-streaming yang menggunakan file lokal. Metode ini memblokir thread saat ini hingga seluruh file audio selesai dibaca. File harus memiliki izin baca. Hasil pengenalan dikembalikan sebagai tipe |
start | | Memulai pengenalan ucapan. Ini adalah metode pengenalan real-time streaming berbasis callback yang tidak memblokir thread saat ini. Harus digunakan bersama |
send_audio_frame | | Mendorong aliran audio. Aliran audio yang dikirimkan setiap kali sebaiknya tidak terlalu besar atau terlalu kecil. Kami menyarankan setiap paket audio memiliki durasi sekitar 100 ms dan ukuran antara 1 KB hingga 16 KB. Anda dapat memperoleh hasil pengenalan melalui metode on_event dari antarmuka callback (RecognitionCallback). |
stop | | Menghentikan pengenalan ucapan. Metode ini memblokir hingga layanan selesai mengenali semua audio yang diterima dan tugas selesai. |
get_last_request_id | | Mendapatkan request_id. Ini dapat digunakan setelah konstruktor dipanggil (objek dibuat). |
get_first_package_delay | | Mendapatkan delay paket pertama, yaitu latensi dari pengiriman paket audio pertama hingga menerima paket hasil pengenalan pertama. Gunakan ini setelah tugas selesai. |
get_last_package_delay | | Mendapatkan delay paket terakhir, yaitu waktu yang dibutuhkan dari pengiriman instruksi |
Antarmuka callback (RecognitionCallback)
Selama panggilan streaming dua arah, server menggunakan callback untuk mengembalikan informasi dan data proses penting ke klien. Anda harus mengimplementasikan metode callback untuk memproses informasi dan data yang dikembalikan.
Metode | Parameter | Nilai kembali | Deskripsi |
| None | None | Metode ini dipanggil segera setelah koneksi dengan server berhasil dibuat. |
|
| None | Metode ini dipanggil ketika layanan mengirimkan respons. |
| None | None | Metode ini dipanggil setelah semua hasil pengenalan dikembalikan. |
|
| None | Metode ini dipanggil ketika terjadi pengecualian. |
| None | None | Metode ini dipanggil setelah layanan menutup koneksi. |
Hasil respons
Hasil pengenalan (RecognitionResult)
RecognitionResult merepresentasikan hasil pengenalan dari satu pengenalan real-time dalam panggilan streaming dua arah atau panggilan non-streaming.
Metode anggota | Signature metode | Deskripsi |
get_sentence | | Mendapatkan kalimat yang saat ini dikenali beserta informasi timestamp-nya. Dalam callback, satu kalimat dikembalikan, sehingga metode ini mengembalikan tipe Dict[str, Any]. Untuk informasi selengkapnya, lihat Kalimat. |
get_request_id | | Mendapatkan request_id dari permintaan. |
is_sentence_end | | Menentukan apakah kalimat yang diberikan telah berakhir. |
Kalimat (Sentence)
Anggota kelas Sentence adalah sebagai berikut:
Parameter | Tipe | Deskripsi |
begin_time | int | Waktu mulai kalimat, dalam ms. |
end_time | int | Waktu akhir kalimat, dalam ms. |
text | str | Teks yang dikenali. |
words | Informasi timestamp kata. | |
emo_tag | str | Emosi kalimat saat ini:
Pengenalan emosi memiliki batasan berikut:
|
emo_confidence | float | Tingkat kepercayaan emosi yang dikenali untuk kalimat saat ini. Nilainya berkisar antara 0,0 hingga 1,0. Nilai yang lebih besar menunjukkan tingkat kepercayaan yang lebih tinggi. Pengenalan emosi memiliki batasan berikut:
|
Informasi timestamp kata (Word)
Anggota kelas Word adalah sebagai berikut:
Parameter | Tipe | Deskripsi |
begin_time | int | Waktu mulai kata, dalam ms. |
end_time | int | Waktu akhir kata, dalam ms. |
text | str | Kata tersebut. |
punctuation | str | Tanda baca. |
Kode error
Jika terjadi error, lihat Pesan error untuk troubleshooting.
Jika masalah berlanjut, bergabunglah dengan grup developer untuk melaporkan masalah tersebut. Sertakan Request ID untuk membantu kami menyelidiki masalah tersebut.
Contoh lainnya
Untuk contoh lainnya, lihat GitHub.
FAQ
Fitur
T: Bagaimana cara mempertahankan koneksi persisten dengan server selama periode diam yang panjang?
Anda dapat mengatur parameter permintaan heartbeat ke true dan terus-menerus mengirimkan audio diam ke server.
Audio diam mengacu pada konten dalam file audio atau aliran data yang tidak memiliki sinyal suara. Anda dapat menghasilkan audio diam menggunakan berbagai metode, seperti perangkat lunak pengeditan audio seperti Audacity atau Adobe Audition, atau alat command-line seperti FFmpeg.
T: Bagaimana cara mengonversi format audio ke format yang diperlukan?
Anda dapat menggunakan tool FFmpeg. Untuk informasi selengkapnya, lihat situs web resmi FFmpeg.
# Perintah konversi dasar (templat universal)
# -i: Menentukan path file input. Contoh: audio.wav
# -c:a: Menentukan encoder audio. Contoh: aac, libmp3lame, pcm_s16le
# -b:a: Menentukan bit rate (mengontrol kualitas audio). Contoh: 192k, 320k
# -ar: Menentukan laju sampel. Contoh: 44100 (CD), 48000, 16000
# -ac: Menentukan jumlah saluran suara. Contoh: 1 (mono), 2 (stereo)
# -y: Menimpa file yang sudah ada (tidak perlu nilai).
ffmpeg -i input_audio.ext -c:a encoder_name -b:a bit_rate -ar sample_rate -ac num_channels output.ext
# Contoh: WAV ke MP3 (pertahankan kualitas asli)
ffmpeg -i input.wav -c:a libmp3lame -q:a 0 output.mp3
# Contoh: MP3 ke WAV (format standar PCM 16-bit)
ffmpeg -i input.mp3 -c:a pcm_s16le -ar 44100 -ac 2 output.wav
# Contoh: M4A ke AAC (ekstrak/konversi audio Apple)
ffmpeg -i input.m4a -c:a copy output.aac # Ekstrak langsung tanpa re-encoding
ffmpeg -i input.m4a -c:a aac -b:a 256k output.aac # Re-encode untuk meningkatkan kualitas
# Contoh: FLAC lossless ke Opus (kompresi tinggi)
ffmpeg -i input.flac -c:a libopus -b:a 128k -vbr on output.opusT: Apakah saya dapat melihat rentang waktu untuk setiap kalimat?
Ya. Hasil pengenalan ucapan mencakup timestamp awal dan akhir untuk setiap kalimat. Anda dapat menggunakan timestamp ini untuk menentukan rentang waktu setiap kalimat.
T: Bagaimana cara mengenali file lokal (file audio rekaman)?
Ada dua cara untuk mengenali file lokal:
Langsung berikan path file lokal: Metode ini mengembalikan hasil pengenalan lengkap setelah file selesai diproses. Tidak cocok untuk skenario yang memerlukan umpan balik langsung.
Berikan path file ke metode
calldari kelas Recognition untuk langsung mengenali file audio. Untuk informasi selengkapnya, lihat panggilan non-streaming.Konversi file lokal menjadi aliran biner untuk pengenalan: Metode ini mengembalikan hasil pengenalan secara streaming selama file sedang diproses. Cocok untuk skenario yang memerlukan umpan balik langsung.
Anda dapat menggunakan metode
send_audio_framedari kelas Recognition untuk mengirimkan aliran biner ke server untuk pengenalan. Untuk informasi selengkapnya, lihat panggilan streaming dua arah.
Troubleshooting
T: Mengapa tidak ada hasil pengenalan?
Periksa apakah
formataudio dansampleRate/sample_ratedalam parameter permintaan diatur dengan benar dan memenuhi batasan parameter. Berikut adalah contoh kesalahan umum:File audio memiliki ekstensi .wav tetapi berformat MP3, dan parameter
formatsalah diatur ke `mp3`.Laju sampel audio adalah 3.600 Hz, tetapi parameter
sampleRate/sample_ratesalah diatur ke 48.000.
Anda dapat menggunakan tool ffprobe untuk mendapatkan informasi audio, seperti container, encoding, laju sampel, dan saluran suara:
ffprobe -v error -show_entries format=format_name -show_entries stream=codec_name,sample_rate,channels -of default=noprint_wrappers=1 input.xxxSaat menggunakan model
paraformer-realtime-v2, periksa apakah bahasa yang diatur dalamlanguage_hintssesuai dengan bahasa aktual audio.Misalnya, audio berbahasa Tiongkok, tetapi
language_hintsdiatur keen(Inggris).Jika semua pemeriksaan di atas lolos, Anda dapat menggunakan hotword kustom untuk meningkatkan pengenalan kata-kata tertentu.