Topik ini menjelaskan parameter dan antarmuka dari SDK Python Pengenalan Ucapan Real-time Paraformer.
Dokumen ini hanya berlaku untuk wilayah Cina (Beijing). Untuk menggunakan model-model tersebut, Anda harus menggunakan API key dari wilayah Cina (Beijing).
Panduan Pengguna: Untuk deskripsi model dan panduan pemilihan model, lihat Pengenalan Ucapan Real-time.
Prasyarat
Anda telah mengaktifkan layanan dan mendapatkan API key. Untuk mencegah risiko keamanan, atur API key sebagai variabel lingkungan alih-alih melakukan hard-coding di dalam kode Anda.
CatatanUntuk memberikan izin akses sementara kepada aplikasi atau pengguna pihak ketiga, atau ingin secara ketat mengontrol operasi berisiko tinggi seperti mengakses atau menghapus data sensitif, kami merekomendasikan agar Anda menggunakan token otentikasi sementara.
Dibandingkan dengan API key jangka panjang, token otentikasi sementara lebih aman karena bersifat sementara (60 detik). Mereka cocok untuk skenario panggilan sementara dan dapat secara efektif mengurangi risiko kebocoran API key.
Untuk menggunakan token sementara, ganti API key yang digunakan untuk otentikasi dalam kode Anda dengan token otentikasi sementara yang telah Anda ambil.
Daftar Model
paraformer-realtime-v2 | paraformer-realtime-8k-v2 | |
Skenario | Skenario seperti siaran langsung dan rapat | Skenario pengenalan audio 8 kHz, seperti layanan pelanggan telepon dan pesan suara |
Laju sampel | Semua | 8 kHz |
Bahasa | Cina (termasuk Mandarin dan berbagai dialek), Inggris, Jepang, Korea, Jerman, Prancis, dan Rusia Dialek Cina yang didukung: Shanghainese, Wu, Minnan, Timur Laut, Gansu, Guizhou, Henan, Hubei, Hunan, Jiangxi, Ningxia, Shanxi, Shaanxi, Shandong, Sichuan, Tianjin, Yunnan, dan Kanton | Cina |
Prediksi tanda baca | ✅ Didukung secara default. Tidak diperlukan konfigurasi. | ✅ Didukung secara default. Tidak diperlukan konfigurasi. |
Inverse Text Normalization (ITN) | ✅ Didukung secara default. Tidak diperlukan konfigurasi. | ✅ Didukung secara default. Tidak diperlukan konfigurasi. |
Kosakata kustom | ✅ Lihat Kata panas kustom | ✅ Lihat Kata panas kustom |
Tentukan bahasa pengenalan | ✅ Tentukan bahasa menggunakan parameter | ❌ |
Pengenalan emosi | ❌ |
Memulai
Kelas Recognition menyediakan metode untuk panggilan sinkron dan streaming. Pilih metode yang sesuai berdasarkan kebutuhan Anda:
Panggilan sinkron: Mengenali file lokal dan mengembalikan hasil lengkap sekaligus. Cocok untuk memproses audio yang sudah direkam sebelumnya.
Panggilan streaming: Mengenali aliran audio dan mengeluarkan 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 segera.
Panggilan Sinkron
Metode ini mengirimkan tugas pengenalan ucap ke teks real-time untuk file lokal. Proses ini diblokir hingga hasil transkripsi lengkap dikembalikan.
Inisialisasi kelas Recognition, atur parameter permintaan, dan panggil metode call untuk melakukan pengenalan dan mendapatkan RecognitionResult.
Panggilan Streaming
Metode ini mengirimkan tugas pengenalan ucap ke teks real-time dan mengembalikan hasil pengenalan real-time melalui antarmuka callback.
Mulai pengenalan ucap streaming
Inisialisasi kelas Recognition, atur parameter permintaan dan antarmuka callback (RecognitionCallback), lalu panggil metode
start.Streaming audio
Panggil berulang kali metode
send_audio_framedari kelas `Recognition` untuk mengirim 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 kepada klien secara real-time.Kami merekomendasikan durasi setiap segmen audio yang dikirim sekitar 100 milidetik, dengan ukuran data antara 1 KB hingga 16 KB.
Akhir 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 berperforma tinggi mungkin menghapus batasan ini. Untuk lebih memanfaatkan sumber daya komputasi komputer multi-core, kami merekomendasikan agar Anda menggunakan multiprocessing atau concurrent.futures.ProcessPoolExecutor. Multithreading dapat secara signifikan meningkatkan latensi pemanggilan SDK di bawah konkurensi tinggi.
Parameter Permintaan
Parameter permintaan diatur di konstruktor (__init__) dari kelas Recognition.
Parameter | Tipe | Default | Wajib | Deskripsi |
model | str | - | Ya | Model yang digunakan untuk pengenalan ucapan real-time. Untuk informasi lebih lanjut, lihat Daftar Model. |
sample_rate | int | - | Ya | Atur laju pengambilan sampel audio (dalam Hz) untuk pengenalan. Bervariasi berdasarkan 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 dibungkus dalam Ogg. wav: Harus dikodekan PCM. amr: Hanya AMR-NB yang didukung. |
vocabulary_id | str | - | Tidak | ID kosakata kata panas. Parameter ini berlaku hanya ketika diatur. Gunakan bidang ini untuk mengatur ID kata panas untuk model v2 dan yang lebih baru. Informasi kata panas untuk ID kata panas ini akan diterapkan pada permintaan pengenalan ucapan. Untuk informasi lebih lanjut, lihat Kustomisasi kata panas. |
disfluency_removal_enabled | bool | False | Tidak | Menentukan apakah akan menyaring kata-kata tidak lancar:
|
language_hints | list[str] | ["zh", "en"] | Tidak | Kode bahasa dari bahasa yang akan dikenali. Jika Anda tidak dapat menentukan bahasa terlebih dahulu, Anda dapat membiarkan parameter ini tidak diatur. Model akan mendeteksi bahasa secara otomatis. Kode bahasa yang saat ini didukung:
Parameter ini hanya berlaku untuk model multibahasa. Untuk informasi lebih lanjut, 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 durasi keheningan untuk segmentasi kalimat VAD, dalam ms. Ketika durasi keheningan setelah segmen ucapan melebihi ambang ini, sistem menentukan bahwa kalimat telah berakhir. Rentang parameter ini adalah dari 200 ms hingga 6000 ms. Nilai defaultnya adalah 800 ms. Parameter ini hanya berlaku ketika parameter |
multi_threshold_mode_enabled | bool | False | Tidak | Ketika saklar ini dihidupkan (`true`), 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 | Ketika Anda perlu mempertahankan koneksi persisten dengan server, Anda dapat menggunakan saklar ini:
Parameter ini hanya berlaku untuk model v2 dan yang lebih baru. Saat menggunakan bidang 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 Cina dikonversi menjadi angka Arab. Parameter ini hanya berlaku untuk model v2 dan yang lebih baru. |
callback | RecognitionCallback | - | Tidak |
Antarmuka Utama
Recognition class
Kelas Recognition diimpor menggunakan `from dashscope.audio.asr import *`.
Metode Anggota | Method Signature | Deskripsi |
call | | Panggilan sinkron yang menggunakan file lokal. Metode ini memblokir thread saat ini hingga seluruh file audio dibaca. File harus memiliki izin baca. Hasil pengenalan dikembalikan sebagai tipe |
start | | Memulai pengenalan ucapan. Ini adalah metode pengenalan real-time berbasis callback streaming yang tidak memblokir thread saat ini. Harus digunakan bersama dengan |
send_audio_frame | | Mendorong aliran audio. Aliran audio yang didorong setiap kali seharusnya tidak terlalu besar atau terlalu kecil. Kami merekomendasikan agar 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 telah 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 mengirim 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 diperlukan dari mengirim instruksi |
get_response | | Mendapatkan pesan terakhir. Ini dapat digunakan untuk mendapatkan error tugas gagal. |
Antarmuka Callback (RecognitionCallback)
Selama panggilan streaming, server menggunakan callback untuk mengembalikan informasi proses utama dan data ke klien. Anda harus mengimplementasikan metode callback untuk memproses informasi dan data yang dikembalikan.
Metode | Parameter | Nilai Kembali | Deskripsi |
| Tidak ada | Tidak ada | Metode ini dipanggil segera setelah koneksi dengan server dibuat. |
|
| Tidak ada | Metode ini dipanggil ketika layanan mengirimkan respons. |
| Tidak ada | Tidak ada | Metode ini dipanggil setelah semua hasil pengenalan dikembalikan. |
|
| Tidak ada | Metode ini dipanggil ketika terjadi pengecualian. |
| Tidak ada | Tidak ada | Metode ini dipanggil setelah layanan menutup koneksi. |
Hasil Respons
Hasil Pengenalan (RecognitionResult)
RecognitionResult mewakili hasil pengenalan baik dari pengenalan real-time tunggal dalam panggilan streaming atau panggilan sinkron.
Metode Anggota | Tanda Tangan Metode | Deskripsi |
get_sentence | | Mendapatkan kalimat yang saat ini dikenali dan informasi timestamp. Dalam callback, satu kalimat dikembalikan, jadi metode ini mengembalikan tipe Dict[str, Any]. Untuk informasi lebih lanjut, lihat Kalimat. |
get_request_id | | Mendapatkan request_id dari permintaan. |
is_sentence_end | | Menentukan apakah kalimat yang diberikan telah berakhir. |
Kalimat (Kalimat)
Anggota kelas Kalimat 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 dari kalimat saat ini:
Pengenalan emosi memiliki batasan berikut:
|
emo_confidence | float | Tingkat kepercayaan emosi yang dikenali untuk kalimat saat ini. Nilainya berkisar dari 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. |
punctuation | str | Tanda baca. |
Kode Kesalahan
Jika terjadi kesalahan, lihat Pesan Kesalahan untuk pemecahan masalah.
Jika masalah tidak terselesaikan, Anda dapat bergabung dengan kelompok pengembang untuk melaporkan masalah. Sertakan Request ID untuk membantu kami menyelidiki masalah tersebut.
Contoh Lainnya
Untuk lebih banyak contoh, lihat GitHub.
FAQ
Fitur
T: Bagaimana cara mempertahankan koneksi persisten dengan server selama periode keheningan yang lama?
Atur parameter permintaan heartbeat menjadi `true` dan terus kirimkan 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 baris perintah seperti FFmpeg.
T: Bagaimana cara mengonversi format audio ke format yang diperlukan?
Anda dapat menggunakan alat FFmpeg. Untuk informasi lebih lanjut, lihat situs resmi FFmpeg.
# Perintah konversi dasar (template universal)
# -i: Menentukan jalur file input. Contoh: audio.wav
# -c:a: Menentukan penyandi 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 ada (tidak memerlukan 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 (memelihara kualitas asli)
ffmpeg -i input.wav -c:a libmp3lame -q:a 0 output.mp3
# Contoh: MP3 ke WAV (format PCM standar 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: Bagaimana cara mengenali file lokal (file rekaman audio)?
Ada dua cara untuk mengenali file lokal:
Langsung lewatkan jalur file lokal: Metode ini mengembalikan hasil pengenalan lengkap setelah file diproses sepenuhnya. Tidak cocok untuk skenario yang memerlukan umpan balik segera.
Untuk informasi lebih lanjut, lihat panggilan sinkron. Lewatkan jalur file ke metode
calldari kelas Recognition untuk langsung mengenali file audio.Konversikan file lokal menjadi aliran biner untuk pengenalan: Metode ini mengembalikan hasil pengenalan dalam aliran saat file sedang diproses. Cocok untuk skenario yang memerlukan umpan balik segera.
Untuk informasi lebih lanjut, lihat Panggilan Streaming. Anda dapat menggunakan metode
send_audio_framedari kelas Recognition untuk mengirim aliran biner ke server untuk pengenalan.
Pemecahan Masalah
T: Mengapa ucapan tidak dikenali (tidak ada hasil pengenalan)?
Periksa apakah format audio (
format) dan laju sampel (sampleRate/sample_rate) dalam parameter permintaan diatur dengan benar dan memenuhi batasan parameter. Berikut adalah contoh kesalahan umum:File audio memiliki ekstensi .wav tetapi sebenarnya dalam format MP3, dan parameter
formatdiatur ke `mp3` (pengaturan parameter salah).Laju sampel audio adalah 3600 Hz, tetapi parameter
sampleRate/sample_ratediatur ke 48000 (pengaturan parameter salah).
Anda dapat menggunakan alat ffprobe untuk mendapatkan informasi tentang audio, seperti kontainer, penyandian, 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.Sebagai contoh, audio dalam bahasa Cina, tetapi
language_hintsdiatur keen(Inggris).Jika semua pemeriksaan di atas berhasil, Anda dapat menggunakan kata panas kustom untuk meningkatkan pengenalan kata-kata tertentu.