Panduan ini menjelaskan parameter dan antarmuka Kit Pengembangan Perangkat Lunak (SDK) Python untuk Pengenalan Ucapan Real-time Paraformer.
Dokumen ini hanya berlaku untuk wilayah China (Beijing). Untuk menggunakan model, Anda harus menggunakan API Key dari wilayah China (Beijing).
Panduan pengguna: Untuk deskripsi model dan panduan pemilihan, lihat Pengenalan ucapan real-time - Fun-ASR/Gummy/Paraformer.
Prasyarat
Anda telah mengaktifkan Model Studio dan membuat API key. Untuk mencegah risiko keamanan akibat kebocoran kode, jangan hard-code API key dalam kode Anda. Sebagai gantinya, ekspor sebagai Variabel lingkungan.
CatatanGunakan Token otentikasi sementara untuk memberikan akses sementara kepada aplikasi atau pengguna pihak ketiga, atau untuk mengontrol secara ketat operasi berisiko tinggi seperti mengakses atau menghapus data sensitif.
Token otentikasi sementara lebih aman daripada API key jangka panjang karena kedaluwarsa dalam 60 detik. Masa berlaku singkat ini menjadikannya ideal untuk skenario panggilan sementara dan secara signifikan mengurangi risiko kompromi API key.
Untuk menggunakan metode ini, ganti API key dalam kode Anda dengan token otentikasi sementara tersebut.
Daftar model
paraformer-realtime-v2 | paraformer-realtime-8k-v2 | |
Skenario | Streaming langsung dan rapat | Untuk pengenalan Audio 8 kHz dalam skenario 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. | ✅ Didukung secara default. |
Inverse Text Normalization (ITN) | ✅ Didukung secara default. | ✅ Didukung secara default. |
Tentukan bahasa pengenalan | ✅ Tentukan bahasa menggunakan parameter | ❌ |
Pengenalan emosi | ❌ |
Memulai
Kelas Recognition menyediakan metode untuk panggilan non-streaming dan streaming dua arah. Pilih metode yang sesuai dengan kasus penggunaan Anda:
Panggilan non-streaming: Memproses
file lokaldan mengembalikanhasil Pengenalanlengkap dalam satu respons. Mode ini ideal untuk mentranskripsikan audio yang telah direkam sebelumnya.Panggilan streaming dua arah: Memproses
aliran audiolangsung dan mengembalikan hasil secara real time.Aliran audiodapat berasal dari perangkat sepertimicrophoneatau dibaca darifile lokal. Mode ini ideal untuk aplikasi yang memerlukan umpan balik segera.
Panggilan non-streaming
Metode ini mengirimkan satu tugas pengenalan ucapan. Metode ini memproses file lokal secara sinkron, memblokir eksekusi hingga mengembalikan hasil Pengenalan lengkap.
Buat instance kelas Recognition dan ikat parameter permintaan. Panggil metode call untuk melakukan pengenalan atau terjemahan dan mendapatkan hasil pengenalan (RecognitionResult).
Panggilan streaming dua arah
Metode ini mengirimkan satu tugas pengenalan ucapan real-time. Metode ini mengalirkan hasil pengenalan secara real time melalui antarmuka callback yang Anda implementasikan.
Mulai pengenalan ucapan streaming
Buat instance kelas Recognition, ikat parameter permintaan dan antarmuka callback (RecognitionCallback), lalu panggil metode
startuntuk memulai pengenalan ucapan streaming.Kirim data 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.Saat mengirim data audio, server menggunakan metode
on_eventdari antarmuka callback RecognitionCallback untuk mengembalikan hasil pengenalan ke klien secara real time.Untuk kinerja optimal, kami menyarankan mengirim potongan audio dengan durasi sekitar 100 milidetik (ukuran 1 KB hingga 16 KB).
Hentikan 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, Global Interpreter Lock (GIL) hanya memungkinkan satu thread mengeksekusi kode Python pada satu waktu, meskipun beberapa pustaka berorientasi kinerja dapat mengatasi keterbatasan ini. Untuk memanfaatkan prosesor multi-core secara lebih baik, gunakan multiprocessing atau concurrent.futures.ProcessPoolExecutor. Perhatikan bahwa di bawah konkurensi tinggi, Multi-threading dapat meningkatkan latensi panggilan SDK secara signifikan.
Parameter permintaan
Parameter permintaan diatur dalam konstruktor (__init__) kelas Recognition.
Parameter | Tipe | Default | Wajib | Deskripsi |
model | str | - | Ya | Model untuk pengenalan ucapan real-time. Untuk informasi lebih lanjut, lihat Daftar model. |
sample_rate | int | - | Ya | Laju sampel audio, dalam Hz. Parameter ini bervariasi berdasarkan model:
|
format | str | - | Ya | Format audio. Format audio yang didukung: Penting
|
disfluency_removal_enabled | bool | False | Tidak | Menentukan apakah akan memfilter kata-kata tidak lancar:
|
language_hints | list[str] | ["zh", "en"] | Tidak | Menentukan kode bahasa untuk pengenalan. Jika parameter ini tidak diatur, model akan secara otomatis mendeteksi bahasa. Kode bahasa yang 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.
Segmentasi kalimat semantik menawarkan akurasi lebih tinggi dan ideal untuk skenario transkripsi rapat. Segmentasi berbasis VAD memiliki latensi lebih rendah dan lebih cocok untuk skenario interaktif. Dengan menyesuaikan parameter Parameter ini hanya berlaku untuk model v2 dan yang lebih baru. |
max_sentence_silence | int | 800 | Tidak | Menentukan ambang batas durasi diam untuk segmentasi berbasis VAD, dalam milidetik (ms). Jika jeda dalam ucapan melebihi ambang batas ini, sistem menganggap kalimat telah selesai. Rentang valid: 200 ms hingga 6000 ms. Default: 800 ms. Parameter ini hanya berlaku untuk model v2 dan yang lebih baru ketika |
multi_threshold_mode_enabled | bool | False | Tidak | Jika Parameter ini hanya berlaku untuk model v2 dan yang lebih baru ketika |
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 | Menentukan apakah akan mempertahankan koneksi persisten dengan server:
Parameter ini hanya berlaku untuk model v2 dan yang lebih baru. Untuk menggunakan parameter ini, versi SDK Anda harus 1.23.1 atau lebih baru. |
inverse_text_normalization_enabled | bool | True | Tidak | Menentukan apakah akan mengaktifkan Inverse Text Normalization (ITN). Jika diaktifkan, angka Tiongkok dikonversi menjadi angka Arab. Parameter ini hanya berlaku untuk model v2 dan yang lebih baru. |
callback | RecognitionCallback | - | Tidak | Antarmuka RecognitionCallback untuk menangani hasil streaming. |
Antarmuka utama
Kelas Recognition
Kelas Recognition diimpor menggunakan from dashscope.audio.asr import *.
Metode anggota | Signature metode | Deskripsi |
call | | Menjalankan pengenalan non-streaming dari file lokal. Metode ini memblokir thread saat ini hingga seluruh file audio dibaca. File harus memiliki izin baca. Mengembalikan objek |
start | | Memulai pengenalan ucapan. Metode ini melakukan pengenalan streaming real-time berbasis callback. Metode ini tidak memblokir thread saat ini dan harus digunakan bersama |
send_audio_frame | | Untuk kinerja optimal, setiap paket audio harus memiliki durasi sekitar 100 ms dan ukuran antara 1 KB hingga 16 KB. Hasil pengenalan dikembalikan melalui metode |
stop | | Menghentikan pengenalan ucapan. Metode ini memblokir hingga server mengenali semua audio yang diterima dan tugas selesai. |
get_last_request_id | | Mendapatkan |
get_first_package_delay | | Mendapatkan First Packet Delay, yaitu latensi antara mengirim paket audio pertama dan menerima hasil pengenalan pertama. Panggil metode ini setelah tugas selesai. |
get_last_package_delay | | Last Packet Delay adalah waktu yang berlalu dari mengirim perintah |
Antarmuka RecognitionCallback
Selama Panggilan Streaming Dua Arah, server mengembalikan informasi proses utama dan data ke klien melalui callback. Anda harus mengimplementasikan metode callback untuk menangani data yang dikembalikan oleh server.
Metode | Parameter | Nilai kembalian | Deskripsi |
| None | None | Dipanggil segera setelah koneksi dengan server berhasil dibuat. |
|
| None | Dipanggil ketika server mengirim hasil pengenalan. |
| None | None | Dipanggil setelah semua hasil pengenalan telah dikembalikan. |
|
| None | Dipanggil ketika terjadi error. |
| None | None | Dipanggil setelah server menutup koneksi. |
Hasil respons
Hasil pengenalan (RecognitionResult)
Objek RecognitionResult merepresentasikan hasil dari satu pengenalan real-time dalam panggilan streaming dua arah atau panggilan non-streaming.
Metode | Signature metode | Deskripsi |
get_sentence | | Mengembalikan teks dan informasi timestamp untuk kalimat saat ini. Dalam callback, metode ini mengembalikan objek Untuk informasi lebih lanjut, lihat Sentence. |
get_request_id | | Mengembalikan ID permintaan. |
is_sentence_end | | Menentukan apakah kalimat yang diberikan lengkap. |
Sentence (Sentence)
Kelas Sentence mencakup parameter berikut:
Parameter | Tipe | Deskripsi |
begin_time | int | Waktu mulai kalimat, dalam milidetik (ms). |
end_time | int | Waktu akhir kalimat, dalam milidetik (ms). |
text | str | Teks yang dikenali. |
words | Daftar objek Word | Menyediakan informasi timestamp tingkat kata. |
emo_tag | str | Emosi kalimat saat ini:
Batasan berikut berlaku untuk
|
emo_confidence | float | Tingkat kepercayaan emosi yang dikenali, berkisar antara 0,0 hingga 1,0. Nilai yang lebih tinggi menunjukkan kepercayaan yang lebih besar. Batasan berikut berlaku untuk
|
Word (Word)
Kelas Word mencakup parameter berikut:
Parameter | Tipe | Deskripsi |
begin_time | int | Waktu mulai kata, dalam milidetik (ms). |
end_time | int | Waktu akhir kata, dalam milidetik (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 Pengembang dan berikan Request ID untuk investigasi lebih lanjut.
Contoh lainnya
Untuk contoh lainnya, lihat GitHub.
FAQ
Fitur
T: Bagaimana cara mempertahankan koneksi persisten dengan server selama diam panjang?
Atur parameter permintaan heartbeat ke true, dan terus-menerus kirim audio diam ke server.
Audio diam adalah file audio atau aliran data tanpa suara. Anda dapat menghasilkan audio diam menggunakan perangkat lunak pengeditan audio seperti Audacity atau Adobe Audition, atau dengan alat command-line seperti FFmpeg.
T: Bagaimana cara mengonversi file audio ke format yang didukung?
Anda dapat menggunakan tool FFmpeg. Untuk informasi lebih lanjut, lihat situs web resmi FFmpeg.
# Perintah konversi dasar (templat universal)
# -i: Jalur file input. Contoh: audio.wav
# -c:a: Encoder audio. Contoh: aac, libmp3lame, pcm_s16le
# -b:a: Bit rate (mengontrol kualitas audio). Contoh: 192k, 320k
# -ar: Laju sampel. Contoh: 44100 (CD), 48000, 16000
# -ac: Saluran audio. 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: Konversi WAV ke MP3 (mempertahankan kualitas asli)
ffmpeg -i input.wav -c:a libmp3lame -q:a 0 output.mp3
# Contoh: Konversi MP3 ke WAV (format standar PCM 16-bit)
ffmpeg -i input.mp3 -c:a pcm_s16le -ar 44100 -ac 2 output.wav
# Contoh: Konversi 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 ke bit rate 256k
# Contoh: Konversi 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, yang menentukan rentang waktunya.
T: Mengenali file audio lokal
Anda dapat mengenali file lokal dengan dua cara:
Langsung berikan jalur file lokal: Metode ini mengembalikan hasil pengenalan lengkap setelah memproses seluruh file. Gunakan pendekatan ini ketika umpan balik segera tidak diperlukan.
Lihat panggilan non-streaming. Berikan jalur file ke metode
calldari kelas Recognition untuk langsung mengenali file audio yang direkam.Konversi file lokal menjadi aliran biner: Metode ini mengalirkan hasil pengenalan saat memproses file. Gunakan pendekatan ini untuk skenario yang memerlukan umpan balik segera.
Lihat panggilan streaming dua arah. Gunakan metode
send_audio_framedari kelas Recognition untuk mengirim aliran biner ke server untuk pengenalan.
Troubleshooting
T: Mengapa saya tidak mendapatkan hasil pengenalan?
Periksa apakah pengaturan format audio (
format) dan laju sampel (sampleRate/sample_rate) sudah benar dan memenuhi batasan parameter. Berikut adalah contoh kesalahan umum:File audio memiliki ekstensi .wav tetapi sebenarnya dalam format MP3, dan parameter permintaan
formatdiatur ke mp3 (pengaturan parameter salah).Laju sampel audio adalah 3.600 Hz, tetapi parameter permintaan
sampleRate/sample_ratediatur ke 48.000 (pengaturan parameter salah).
Anda dapat menggunakan tool ffprobe untuk mendapatkan informasi tentang properti file audio, seperti kontainer, encoding, laju sampel, dan saluran:
ffprobe -v error -show_entries format=format_name -show_entries stream=codec_name,sample_rate,channels -of default=noprint_wrappers=1 input.xxxSaat Anda menggunakan model
paraformer-realtime-v2, periksa bahwa bahasa yang ditentukan dalamlanguage_hintssesuai dengan bahasa aktual audio.Contoh: audio sebenarnya dalam bahasa Tiongkok, tetapi
language_hintsdiatur keen(Inggris).