Topik ini menjelaskan parameter dan detail antarmuka SDK Java untuk pengenalan ujaran real-time Paraformer.
Panduan pengguna: Untuk pengenalan model dan rekomendasi pemilihan, lihat Pengenalan ujaran real-time - Fun-ASR/Paraformer.
Kelas Recognition menyediakan antarmuka panggilan non-streaming dan streaming dua arah. Pilih metode panggilan yang sesuai berdasarkan kebutuhan Anda:
Kirim satu tugas pengenalan ujaran-ke-teks real-time dan peroleh hasil transkripsi secara sinkron dengan memasukkan file lokal.
Buat instans Kelas Recognition, panggil metode
Kirim satu tugas pengenalan ujaran-ke-teks real-time dan alirkan hasil pengenalan real time melalui antarmuka callback.
Kirim satu tugas pengenalan ujaran-ke-teks real-time dan alirkan hasil pengenalan real time melalui alur kerja Flowable.
Flowable adalah framework open-source untuk manajemen alur kerja dan proses bisnis, dirilis di bawah lisensi Apache 2.0. Untuk informasi lebih lanjut tentang Flowable, lihat Dokumentasi API Flowable.
SDK Java DashScope menggunakan pooling koneksi OkHttp3 untuk mengurangi overhead pembentukan koneksi berulang. Untuk informasi lebih lanjut, lihat Optimalkan pengenalan ujaran real-time Paraformer untuk konkurensi tinggi.
Konfigurasikan parameter seperti model, laju sampel, dan format audio melalui metode berantai
Selama panggilan streaming dua arah, server mengembalikan informasi dan data proses utama ke klien melalui callback. Anda perlu mengimplementasikan metode callback untuk menangani informasi atau data yang dikembalikan oleh server.
Metode callback diimplementasikan dengan memperluas kelas abstrak
Jika Anda mengalami error, lihat Kode error untuk troubleshooting.
Jika masalah berlanjut, bergabunglah dengan komunitas developer untuk melaporkan masalah Anda dan berikan Request ID untuk investigasi lebih lanjut.
Untuk contoh lainnya, lihat GitHub.
Atur parameter permintaan
Anda dapat menggunakan tool FFmpeg. Untuk penggunaan lebih lanjut, rujuk situs resmi FFmpeg.
Ya. Hasil pengenalan ujaran mencakup stempel waktu mulai dan akhir untuk setiap kalimat, yang dapat digunakan untuk menentukan rentang waktu setiap kalimat.
Ada dua cara untuk mengenali file lokal:
Prasyarat
Ketika Anda perlu memberikan akses sementara ke aplikasi atau pengguna pihak ketiga, atau ketika ingin mengontrol secara ketat operasi berisiko tinggi seperti mengakses atau menghapus data sensitif, kami merekomendasikan penggunaan Token otentikasi sementara.Dibandingkan dengan API Key jangka panjang, token otentikasi sementara memiliki periode validitas singkat (60 detik) dan keamanan lebih tinggi, sehingga cocok untuk skenario panggilan sementara dan secara efektif mengurangi risiko kebocoran API Key.Penggunaan: Dalam kode Anda, ganti API Key yang awalnya digunakan untuk otentikasi dengan token otentikasi sementara yang diperoleh.
Daftar model
| paraformer-realtime-v2 | paraformer-realtime-8k-v2 | |
|---|---|---|
| Kasus penggunaan | Streaming langsung, rapat, dan skenario serupa | Pengenalan audio 8 kHz dalam skenario seperti layanan pelanggan telepon dan pesan suara |
| Laju sampel | Apa saja | 8kHz |
| Bahasa | Bahasa Tiongkok (termasuk Mandarin dan berbagai dialek), Inggris, Jepang, Korea, Jerman, Prancis, RusiaDialek Tiongkok yang didukung: Shanghainese, Wu, Minnan, Timur Laut, Gansu, Guizhou, Henan, Hubei, Hunan, Jiangxi, Ningxia, Shanxi, Shaanxi, Shandong, Sichuan, Tianjin, Yunnan, 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 |
| Kata kunci kustom | Lihat Kata kunci kustom | Lihat Kata kunci kustom |
| Tentukan bahasa pengenalan | Tentukan melalui parameter language_hints | |
| Pengenalan sentimen |
(Klik untuk melihat penggunaan) Pengenalan sentimen mengikuti batasan berikut:
getEmoTag dan getEmoConfidence dari Informasi kalimat (Sentence) untuk memperoleh sentimen dan tingkat kepercayaan sentimen kalimat saat ini secara berturut-turut. |
Mulai cepat
Kelas Recognition menyediakan antarmuka panggilan non-streaming dan streaming dua arah. Pilih metode panggilan 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 secara langsung 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 segera.
Panggilan non-streaming
Kirim satu tugas pengenalan ujaran-ke-teks real-time dan peroleh hasil transkripsi secara sinkron dengan memasukkan file lokal.
Buat instans Kelas Recognition, panggil metode call dengan Parameter permintaan dan file yang akan dikenali, lakukan pengenalan, dan peroleh hasil pengenalan.
Klik untuk melihat contoh lengkap
Klik untuk melihat contoh lengkap
Streaming dua arah: berbasis callback
Kirim satu tugas pengenalan ujaran-ke-teks real-time dan alirkan hasil pengenalan real time melalui antarmuka callback.
-
Mulai pengenalan ujaran streaming
Buat instans Kelas Recognition, panggil metode
calldengan Parameter permintaan dan Antarmuka callback (ResultCallback) untuk memulai pengenalan ujaran streaming. -
Alirkan data audio
Panggil metode
sendAudioFramedari Kelas Recognition dalam loop untuk mengirim segmen aliran audio biner yang dibaca dari file lokal atau perangkat (seperti mikrofon) ke server. Selama transmisi data audio, server mengembalikan hasil pengenalan ke klien secara real time melalui metodeonEventdari Antarmuka callback (ResultCallback). Disarankan agar setiap segmen audio berdurasi sekitar 100 milidetik, dengan ukuran data antara 1 KB hingga 16 KB. -
Selesaikan pemrosesan
Panggil metode
stopdari Kelas Recognition untuk mengakhiri pengenalan ujaran. Metode ini memblokir thread saat ini hingga callbackonCompleteatauonErrordari Antarmuka callback (ResultCallback) dipicu.
Klik untuk melihat contoh lengkap
Klik untuk melihat contoh lengkap
Streaming dua arah: berbasis Flowable
Kirim satu tugas pengenalan ujaran-ke-teks real-time dan alirkan hasil pengenalan real time melalui alur kerja Flowable.
Flowable adalah framework open-source untuk manajemen alur kerja dan proses bisnis, dirilis di bawah lisensi Apache 2.0. Untuk informasi lebih lanjut tentang Flowable, lihat Dokumentasi API Flowable.
Klik untuk melihat contoh lengkap
Klik untuk melihat contoh lengkap
Langsung panggil metode
streamCall dari Kelas Recognition untuk memulai pengenalan.Metode streamCall mengembalikan instans Flowable<RecognitionResult>. Anda dapat memanggil metode seperti blockingForEach dan subscribe dari instans Flowable untuk memproses hasil pengenalan. Hasil pengenalan dikemas dalam RecognitionResult.Metode streamCall memerlukan dua parameter:- Instans
RecognitionParam(Parameter permintaan): Gunakan untuk mengatur parameter seperti model, laju sampel, dan format audio untuk pengenalan ujaran. - Instans
Flowable<ByteBuffer>: Anda perlu membuat instans tipeFlowable<ByteBuffer>dan mengimplementasikan metode parsing aliran audio di dalamnya.
Panggilan konkurensi tinggi
SDK Java DashScope menggunakan pooling koneksi OkHttp3 untuk mengurangi overhead pembentukan koneksi berulang. Untuk informasi lebih lanjut, lihat Optimalkan pengenalan ujaran real-time Paraformer untuk konkurensi tinggi.
Parameter permintaan
Konfigurasikan parameter seperti model, laju sampel, dan format audio melalui metode berantai RecognitionParam. Masukkan objek parameter yang telah dikonfigurasi ke metode call/streamCall dari Kelas Recognition.
Klik untuk melihat contoh
Klik untuk melihat contoh
| Parameter | Jenis | Default | Wajib | Deskripsi |
|---|---|---|---|---|
| model | String | Ya | Model untuk pengenalan ujaran real-time. Untuk informasi lebih lanjut, lihat Daftar model. | |
| sampleRate | Integer | Ya | Atur laju sampel (dalam Hz) audio yang akan dikenali.Bervariasi berdasarkan model:
| |
| format | String | Ya | Atur format audio yang akan dikenali.Format audio yang didukung: pcm, wav, mp3, opus, speex, aac, amr. | |
| vocabularyId | String | Tidak | Atur ID kata kunci. Jika tidak diatur, kata kunci tidak akan berlaku. Gunakan bidang ini untuk mengatur ID kata kunci untuk model v2 dan yang lebih baru.Dalam sesi pengenalan ujaran saat ini, informasi kata kunci yang sesuai dengan ID kata kunci ini akan diterapkan. Untuk penggunaan detail, lihat Kata kunci kustom. | |
| disfluencyRemovalEnabled | boolean | false | Tidak | Atur apakah akan memfilter kata pengisi:
|
| language_hints | String[] | ["zh", "en"] | Tidak | Atur kode bahasa untuk pengenalan. Jika Anda tidak dapat menentukan bahasa sebelumnya, Anda dapat membiarkannya tidak diatur dan model akan secara otomatis mendeteksi bahasa.Kode bahasa yang saat ini didukung:
language_hints harus diatur melalui metode parameter atau metode parameters dari instans RecognitionParam: |
| semantic_punctuation_enabled | boolean | false | Tidak | Atur apakah akan mengaktifkan segmentasi semantik. Dinonaktifkan secara default.
semantic_punctuation_enabled, Anda dapat secara fleksibel mengganti metode segmentasi pengenalan ujaran agar sesuai dengan skenario berbeda.Parameter ini hanya berlaku ketika model adalah v2 atau yang lebih baru.semantic_punctuation_enabled harus diatur melalui metode parameter atau metode parameters dari instans RecognitionParam: |
| max_sentence_silence | Integer | 800 | Tidak | Atur ambang batas durasi diam (dalam ms) untuk segmentasi VAD (Voice Activity Detection).Ketika durasi diam setelah segmen ujaran melebihi ambang batas ini, sistem menentukan bahwa kalimat telah berakhir.Rentang parameter adalah 200 ms hingga 6000 ms, dengan nilai default 800 ms.Parameter ini hanya berlaku ketika parameter semantic_punctuation_enabled bernilai false (segmentasi VAD) dan model adalah v2 atau yang lebih baru.max_sentence_silence harus diatur melalui metode parameter atau metode parameters dari instans RecognitionParam: |
| multi_threshold_mode_enabled | boolean | false | Tidak | Ketika sakelar ini diaktifkan (true), mencegah segmentasi VAD memotong kalimat yang terlalu panjang. Dinonaktifkan secara default.Parameter ini hanya berlaku ketika parameter semantic_punctuation_enabled bernilai false (segmentasi VAD) dan model adalah v2 atau yang lebih baru.multi_threshold_mode_enabled harus diatur melalui metode parameter atau metode parameters dari instans RecognitionParam: |
| punctuation_prediction_enabled | boolean | true | Tidak | Atur apakah akan menambahkan tanda baca secara otomatis dalam hasil pengenalan:
punctuation_prediction_enabled harus diatur melalui metode parameter atau metode parameters dari instans RecognitionParam: |
| heartbeat | boolean | false | Tidak | Ketika Anda perlu mempertahankan koneksi panjang dengan server, gunakan sakelar ini untuk mengontrol perilaku:
Versi SDK harus 2.19.1 atau yang lebih baru untuk menggunakan bidang ini. heartbeat harus diatur melalui metode parameter atau metode parameters dari instans RecognitionParam: |
| inverse_text_normalization_enabled | boolean | true | Tidak | Atur apakah akan mengaktifkan ITN (Inverse Text Normalization).Diaktifkan secara default (true). Ketika diaktifkan, angka Tiongkok dikonversi ke angka Arab.Parameter ini hanya berlaku ketika model adalah v2 atau yang lebih baru.inverse_text_normalization_enabled harus diatur melalui metode parameter atau metode parameters dari instans RecognitionParam: |
| apiKey | String | Tidak | Kunci API pengguna. |
Antarmuka utama
Kelas Recognition
Recognition diimpor melalui "import com.alibaba.dashscope.audio.asr.recognition.Recognition;". Antarmuka utamanya adalah sebagai berikut:
| Antarmuka/Metode | Parameter | Nilai kembali | Deskripsi |
|---|---|---|---|
| Tidak ada | Pengenalan real-time streaming berbasis callback. Metode ini tidak memblokir thread saat ini. | |
| Hasil pengenalan | Panggilan non-streaming berbasis file lokal. Metode ini memblokir thread saat ini hingga semua audio telah dibaca. File yang akan dikenali harus memiliki izin baca. | |
| Flowable<RecognitionResult> | Pengenalan real-time streaming berbasis Flowable. | |
| Tidak ada | Kirim data audio. Setiap paket audio sebaiknya tidak terlalu besar atau terlalu kecil. Disarankan agar setiap paket berdurasi sekitar 100 ms, dengan ukuran antara 1 KB hingga 16 KB.Hasil pengenalan diperoleh melalui metode onEvent dari Antarmuka callback (ResultCallback). | |
| Tidak ada | Tidak ada | Hentikan pengenalan real-time.Metode ini memblokir thread saat ini hingga metode onComplete atau onError dari instans ResultCallback dipanggil. | |
| code: Kode penutupan WebSocketreason: Alasan penutupanKedua parameter ini dapat dikonfigurasi sesuai dokumentasi Protokol WebSocket. | true | Setelah tugas selesai, koneksi WebSocket harus ditutup terlepas dari apakah terjadi pengecualian atau tidak, untuk menghindari kebocoran koneksi. Untuk informasi tentang cara menggunakan kembali koneksi guna meningkatkan efisiensi, lihat Optimalkan pengenalan ujaran real-time Paraformer untuk konkurensi tinggi. | |
| Tidak ada | requestId | Dapatkan requestId tugas saat ini. Tersedia setelah memulai tugas baru dengan call atau streamingCall.Metode ini tersedia mulai dari versi SDK 2.18.0. | |
| Tidak ada | Delay paket pertama | Dapatkan delay paket pertama, yaitu latensi dari pengiriman paket audio pertama hingga menerima hasil pengenalan pertama. Gunakan setelah tugas selesai. Metode ini tersedia mulai dari versi SDK 2.18.0. | |
| Tidak ada | Delay paket terakhir | Dapatkan delay paket terakhir, yaitu latensi dari pengiriman perintah stop hingga menerima hasil pengenalan terakhir. Gunakan setelah tugas selesai.Metode ini tersedia mulai dari versi SDK 2.18.0. |
Antarmuka callback (ResultCallback)
Selama panggilan streaming dua arah, server mengembalikan informasi dan data proses utama ke klien melalui callback. Anda perlu mengimplementasikan metode callback untuk menangani informasi atau data yang dikembalikan oleh server.
Metode callback diimplementasikan dengan memperluas kelas abstrak ResultCallback. Saat memperluas kelas abstrak ini, Anda dapat menentukan tipe generik sebagai RecognitionResult. RecognitionResult mengemas struktur data yang dikembalikan oleh server.
Karena Java mendukung penggunaan kembali koneksi, tidak ada callback onClose atau onOpen.
Contoh
Contoh
| Antarmuka/Metode | Parameter | Nilai kembali | Deskripsi |
|---|---|---|---|
result: Hasil pengenalan real-time (RecognitionResult) | Tidak ada | Dipanggil ketika server memiliki respons. | |
| Tidak ada | Tidak ada | Dipanggil ketika tugas selesai. | |
e: Informasi pengecualian | Tidak ada | Dipanggil ketika terjadi pengecualian. |
Tanggapan
Hasil pengenalan real-time (RecognitionResult)
RecognitionResult merepresentasikan hasil sesi pengenalan real-time.
| Antarmuka/Metode | Parameter | Nilai kembali | Deskripsi |
|---|---|---|---|
| Tidak ada | requestId | Dapatkan requestId. | |
| Tidak ada | Apakah merupakan kalimat lengkap, yaitu batas kalimat telah tercapai | Menentukan apakah kalimat yang diberikan telah berakhir. | |
| Tidak ada | Informasi kalimat (Sentence) | Dapatkan informasi kalimat, termasuk stempel waktu dan teks. |
Informasi kalimat (Sentence)
| Antarmuka/Metode | Parameter | Nilai kembali | Deskripsi |
|---|---|---|---|
| Tidak ada | Waktu mulai kalimat dalam ms | Mengembalikan waktu mulai kalimat. | |
| Tidak ada | Waktu akhir kalimat dalam ms | Mengembalikan waktu akhir kalimat. | |
| Tidak ada | Teks pengenalan | Mengembalikan teks yang dikenali. | |
| Tidak ada | Daftar Informasi stempel waktu kata (Word) | Mengembalikan informasi stempel waktu tingkat kata. | |
| Tidak ada | Sentimen kalimat saat ini | Mengembalikan sentimen kalimat saat ini:
| |
| Tidak ada | Tingkat kepercayaan sentimen kalimat saat ini | Mengembalikan tingkat kepercayaan sentimen kalimat saat ini. Rentang nilai: [0.0, 1.0]. Nilai lebih tinggi menunjukkan kepercayaan lebih tinggi.Pengenalan sentimen mengikuti batasan berikut:
|
Informasi stempel waktu kata (Word)
| Antarmuka/Metode | Parameter | Nilai kembali | Deskripsi |
|---|---|---|---|
| Tidak ada | Waktu mulai kata dalam ms | Mengembalikan waktu mulai kata. | |
| Tidak ada | Waktu akhir kata dalam ms | Mengembalikan waktu akhir kata. | |
| Tidak ada | Kata | Mengembalikan kata yang dikenali. | |
| Tidak ada | Tanda baca | Mengembalikan tanda baca. |
Kode error
Jika Anda mengalami error, lihat Kode error untuk troubleshooting.
Jika masalah berlanjut, bergabunglah dengan komunitas developer untuk melaporkan masalah Anda dan berikan Request ID untuk investigasi lebih lanjut.
Contoh lainnya
Untuk contoh lainnya, lihat GitHub.
FAQ
Pertanyaan fitur
T: Bagaimana cara mempertahankan koneksi panjang dengan server selama diam berkepanjangan?
Atur parameter permintaan heartbeat menjadi true dan terus-menerus kirim audio diam ke server.
Audio diam mengacu pada file audio atau aliran data yang tidak mengandung sinyal suara. Audio diam dapat dihasilkan melalui berbagai metode, seperti menggunakan perangkat lunak pengeditan audio seperti Audacity atau Adobe Audition, atau melalui alat command-line seperti FFmpeg.
T: Bagaimana cara mengonversi audio ke format yang didukung?
Anda dapat menggunakan tool FFmpeg. Untuk penggunaan lebih lanjut, rujuk situs resmi FFmpeg.
T: Apakah mendukung melihat rentang waktu untuk setiap kalimat?
Ya. Hasil pengenalan ujaran mencakup stempel waktu mulai dan akhir untuk setiap kalimat, yang dapat digunakan untuk menentukan rentang waktu setiap kalimat.
T: Bagaimana cara mengenali file lokal (audio yang direkam)?
Ada dua cara untuk mengenali file lokal:
-
Masukkan path file lokal secara langsung: Metode ini hanya memperoleh hasil pengenalan lengkap setelah seluruh pengenalan selesai, dan tidak cocok untuk skenario yang memerlukan umpan balik segera.
Lihat Panggilan non-streaming. Masukkan path file ke metode
calldari Kelas Recognition untuk langsung mengenali file yang direkam. -
Konversi file lokal ke aliran biner untuk pengenalan: Metode ini mengenali file sambil mengalirkan hasil pengenalan, cocok untuk skenario yang memerlukan umpan balik segera.
- Lihat Streaming dua arah: berbasis callback. Gunakan metode
sendAudioFramedari Kelas Recognition untuk mengirim aliran biner ke server untuk pengenalan. - Lihat Streaming dua arah: berbasis Flowable. Gunakan metode
streamCalldari Kelas Recognition untuk mengirim aliran biner ke server untuk pengenalan.
- Lihat Streaming dua arah: berbasis callback. Gunakan metode
Troubleshooting
T: Apa penyebab kegagalan mengenali ujaran (tidak ada hasil pengenalan)?
-
Periksa apakah format audio (
format) dan laju sampel (sampleRate/sample_rate) dalam parameter permintaan diatur dengan benar dan mematuhi batasan parameter. Berikut adalah contoh kesalahan umum:- Ekstensi file audio adalah .wav, tetapi format sebenarnya adalah MP3, dan parameter permintaan
formatdiatur ke mp3 (pengaturan parameter salah). - Laju sampel audio adalah 3600 Hz, tetapi parameter permintaan
sampleRate/sample_ratediatur ke 48000 (pengaturan parameter salah).
- Ekstensi file audio adalah .wav, tetapi format sebenarnya adalah MP3, dan parameter permintaan
-
Ketika menggunakan model
paraformer-realtime-v2, periksa apakah bahasa yang diatur dalamlanguage_hintssesuai dengan bahasa sebenarnya dari audio. Contoh: Audio sebenarnya dalam bahasa Tiongkok, tetapilanguage_hintsdiatur keen(Inggris). - Jika semua pemeriksaan di atas lolos, Anda dapat menggunakan kata kunci kustom untuk meningkatkan akurasi pengenalan untuk kata-kata tertentu.