Layanan pengenalan suara waktu nyata mengenali aliran data suara berdurasi panjang dan cocok untuk skenario yang memerlukan pengenalan suara tanpa gangguan, seperti pidato konferensi dan siaran langsung.
Fitur
Mendukung file audio mono 16-bit yang dikodekan dengan pulse-code modulation (PCM).
Mendukung laju pengambilan sampel audio 8.000 Hz dan 16.000 Hz.
Memungkinkan Anda menentukan apakah akan mengembalikan hasil antara, menambahkan tanda baca selama post-processing, serta mengonversi angka Tiongkok menjadi angka Arab.
Memungkinkan Anda memilih model linguistik untuk mengenali pidato dalam berbagai bahasa saat mengelola proyek di konsol Intelligent Speech Interaction. Untuk informasi selengkapnya, lihat Mengelola proyek.
Bahasa dan model dialek yang didukung saat ini meliputi:
ASR 16K (Tujuan Umum): Mandarin Tiongkok, Inggris, Kanton, Jepang, Korea, Rusia, Indonesia, Vietnam, Malaysia, Thailand, Hindi, Arab, Kazakh, Jerman, Spanyol, dan Prancis.
ASR 8K (Saluran Telepon): Mandarin Tiongkok, Inggris, Kanton, Indonesia, dan Filipina.
Titik akhir
Jenis akses | Deskripsi | URL |
Akses eksternal dari Internet | Titik akhir ini memungkinkan Anda mengakses layanan pengenalan suara waktu nyata dari host mana pun melalui Internet. Secara default, URL akses Internet sudah tertanam dalam SDK. | wss://nls-gateway-ap-southeast-1.aliyuncs.com/ws/v1 |
Proses interaksi
Server menambahkan parameter task_id ke header respons untuk semua tanggapan guna menunjukkan ID tugas pengenalan. Anda dapat mencatat nilai parameter ini. Jika terjadi kesalahan, Anda dapat mengajukan tiket dengan melampirkan ID tugas dan pesan kesalahan tersebut.
1. Otentikasi klien
Untuk membuat koneksi WebSocket dengan server, klien harus menggunakan token untuk otentikasi. Untuk informasi selengkapnya tentang cara mendapatkan token, lihat Mendapatkan token akses.
2. Memulai dan mengonfirmasi pengenalan
Klien mengirim permintaan untuk memulai pengenalan suara waktu nyata. Server mengonfirmasi bahwa permintaan tersebut valid. Anda harus mengatur parameter permintaan agar klien dapat mengirim permintaan layanan. Parameter tersebut dapat diatur menggunakan metode set pada objek SpeechTranscriber di SDK. Tabel berikut menjelaskan parameter permintaan tersebut.
Parameter | Tipe | Wajib | Deskripsi |
appkey | String | Ya | Appkey proyek Anda yang dibuat di konsol Intelligent Speech Interaction. |
format | String | Tidak | Format pengkodean audio. Nilai default: PCM. Layanan pengenalan suara waktu nyata mendukung file audio mono 16-bit yang tidak terkompresi dengan format PCM atau WAV. |
sample_rate | Integer | Tidak | Laju pengambilan sampel audio. Satuan: Hz. Nilai default: 16000. Setelah mengatur parameter ini, Anda harus menentukan model atau skenario yang sesuai dengan laju pengambilan sampel audio tersebut untuk proyek Anda di konsol Intelligent Speech Interaction. |
enable_intermediate_result | Boolean | Tidak | Menentukan apakah akan mengembalikan hasil antara. Nilai default: false. |
enable_punctuation_prediction | Boolean | Tidak | Menentukan apakah akan menambahkan tanda baca selama post-processing. Nilai default: false. |
enable_inverse_text_normalization | Boolean | Tidak | Menentukan apakah akan mengaktifkan normalisasi teks terbalik (ITN) selama post-processing. Nilai default: false. Jika Anda mengatur parameter ini ke true, angka Tiongkok akan dikonversi menjadi angka Arab. Catatan ITN tidak diterapkan pada kata per kata. |
customization_id | String | Tidak | ID model linguistik kustom. |
vocabulary_id | String | Tidak | ID kosakata hotword kustom. |
max_sentence_silence | Integer | Tidak | Ambang batas untuk mendeteksi akhir kalimat. Jika durasi diam melebihi ambang batas yang ditentukan, sistem akan menentukan akhir kalimat. Satuan: milidetik. Nilai valid: 200 hingga 2000. Nilai default: 800. |
enable_words | Boolean | Tidak | Menentukan apakah akan mengembalikan informasi tentang kata. Nilai default: false. |
enable_ignore_sentence_timeout | Boolean | Tidak | Menentukan apakah akan mengabaikan masalah waktu habis pengenalan pada satu kalimat dalam pengenalan suara waktu nyata. Nilai default: false. |
disfluency | Boolean | Tidak | Menentukan apakah akan mengaktifkan deteksi disfluensi untuk menghapus partikel modal dan pengulangan ucapan. Nilai default: false. |
vad_model | String | Tidak | ID model Deteksi aktivitas suara (VAD) yang digunakan oleh server. Secara default, parameter ini tidak dilewatkan dalam permintaan. |
speech_noise_threshold | float | Tidak | Ambang batas untuk mengenali aliran audio sebagai kebisingan. Nilai valid: -1 hingga 1. Informasi berikut menjelaskan nilai parameter:
Catatan Parameter ini merupakan parameter lanjutan. Lakukan penyesuaian nilai parameter ini dengan hati-hati. Lakukan pengujian setelah menyesuaikan nilai parameter tersebut. |
3. Mengirim dan mengenali data audio
Klien secara siklik mengirim data audio ke server dan terus menerima hasil pengenalan dari server.
Pesan SentenceBegin menunjukkan bahwa server mendeteksi awal kalimat. Layanan pengenalan suara waktu nyata menggunakan VAD untuk menentukan awal dan akhir kalimat. Misalnya, server mengembalikan respons berikut:
{ "header": { "namespace": "SpeechTranscriber", "name": "SentenceBegin", "status": 20000000, "message_id": "a426f3d4618447519c9d85d1a0d1****", "task_id": "5ec521b5aa104e3abccf3d361822****", "status_text": "Gateway:SUCCESS:Success." }, "payload": { "index": 1, "time": 0 } }Tabel berikut menjelaskan parameter dalam objek header.
Parameter
Tipe
Deskripsi
namespace
String
Namespace pesan.
name
String
Nama pesan. Pesan SentenceBegin menunjukkan bahwa server mendeteksi awal kalimat.
status
Integer
Kode status. Menunjukkan apakah permintaan berhasil. Untuk informasi selengkapnya, lihat bagian "Kode status layanan" dalam topik ini.
status_text
String
Pesan status.
task_id
String
ID Unik Global (GUID) tugas pengenalan. Catat nilai parameter ini untuk mempermudah pemecahan masalah.
message_id
String
ID pesan.
Tabel berikut menjelaskan parameter hasil dalam objek payload.
Parameter
Tipe
Deskripsi
index
Integer
Nomor urut kalimat, dimulai dari 1.
time
Integer
Durasi data audio yang diproses. Satuan: milidetik.
Pesan TranscriptionResultChanged menunjukkan bahwa hasil antara diperoleh. Jika parameter enable_intermediate_result diatur ke true, server mengirim beberapa pesan TranscriptionResultChanged untuk mengembalikan hasil antara. Misalnya, server mengembalikan hasil antara berikut:
{ "header": { "namespace": "SpeechTranscriber", "name": "TranscriptionResultChanged", "status": 20000000, "message_id": "dc21193fada84380a3b6137875ab****", "task_id": "5ec521b5aa104e3abccf3d361822****", "status_text": "Gateway:SUCCESS:Success." }, "payload": { "index": 1, "time": 1835, "result": "Sky in Beijing", "confidence": 1.0, "words": [{ "text": "Sky", "startTime": 630, "endTime": 930 }, { "text":"in", "startTime": 930, "endTime": 1110 }, { "text": "Beijing", "startTime": 1110, "endTime": 1140 }] } }Parameter dalam objek header pesan TranscriptionResultChanged mirip dengan parameter dalam objek header pesan SentenceBegin. Nilai parameter name adalah TranscriptionResultChanged, yang menunjukkan bahwa hasil antara diperoleh.
Tabel berikut menjelaskan parameter hasil dalam objek payload.
Parameter
Tipe
Deskripsi
index
Integer
Nomor urut kalimat, dimulai dari 1.
time
Integer
Durasi data audio yang diproses. Satuan: milidetik.
result
String
Hasil pengenalan kalimat.
words
List< Word >
Informasi kata dalam kalimat. Informasi kata hanya dikembalikan jika parameter enable_words diatur ke true.
confidence
Double
Tingkat kepercayaan hasil pengenalan kalimat. Nilai valid: 0,0 hingga 1,0. Nilai yang lebih besar menunjukkan tingkat kepercayaan yang lebih tinggi.
Pesan SentenceEnd menunjukkan bahwa server mendeteksi akhir kalimat dan mengembalikan hasil pengenalan kalimat tersebut. Misalnya, server mengembalikan respons berikut:
{ "header": { "namespace": "SpeechTranscriber", "name": "SentenceEnd", "status": 20000000, "message_id": "c3a9ae4b231649d5ae05d4af36fd****", "task_id": "5ec521b5aa104e3abccf3d361822****", "status_text": "Gateway:SUCCESS:Success." }, "payload": { "index": 1, "time": 1820, "begin_time": 0, "result": "Weather in Beijing", "confidence": 1.0, "words": [{ "text": "Weather", "startTime": 630, "endTime": 930 }, { "text":"in", "startTime": 930, "endTime": 1110 }, { "text": "Beijing", "startTime": 1110, "endTime": 1380 }] } }Parameter dalam objek header pesan SentenceEnd mirip dengan parameter dalam objek header pesan SentenceBegin. Nilai parameter name adalah SentenceEnd, yang menunjukkan bahwa server mendeteksi akhir kalimat.
Tabel berikut menjelaskan parameter hasil dalam objek payload.
Parameter
Tipe
Deskripsi
index
Integer
Nomor urut kalimat, dimulai dari 1.
time
Integer
Durasi data audio yang diproses. Satuan: milidetik.
begin_time
Integer
Waktu ketika server mengembalikan pesan SentenceBegin untuk kalimat tersebut. Satuan: milidetik.
result
String
Hasil pengenalan kalimat.
words
List< Word >
Informasi kata dalam kalimat. Informasi kata hanya dikembalikan jika parameter enable_words diatur ke true.
confidence
Double
Tingkat kepercayaan hasil pengenalan kalimat. Nilai valid: 0,0 hingga 1,0. Nilai yang lebih besar menunjukkan tingkat kepercayaan yang lebih tinggi.
Tabel berikut menjelaskan parameter hasil dalam objek words.
Parameter
Tipe
Deskripsi
text
String
Teks kata.
startTime
Integer
Waktu mulai kata dalam kalimat. Satuan: milidetik.
endTime
Integer
Waktu akhir kata dalam kalimat. Satuan: milidetik.
4. Menyelesaikan tugas pengenalan
Klien memberi tahu server bahwa semua data audio telah dikirim. Server menyelesaikan tugas pengenalan dan memberi tahu klien bahwa tugas tersebut telah selesai.
Kode status layanan
Setiap respons berisi bidang status yang menunjukkan kode status layanan. Tabel berikut menjelaskan kode kesalahan umum, kode kesalahan gerbang, kode kesalahan konfigurasi, dan kode kesalahan pengenalan suara waktu nyata.
Kode kesalahan umum
Kode kesalahan | Deskripsi | Solusi |
40000001 | Pesan kesalahan yang dikembalikan karena klien gagal dalam otentikasi. | Periksa apakah token yang digunakan oleh klien benar dan valid. |
40000002 | Pesan kesalahan yang dikembalikan karena permintaan tidak valid. | Periksa apakah permintaan yang dikirim oleh klien memenuhi persyaratan. |
403 | Pesan kesalahan yang dikembalikan karena token kedaluwarsa atau permintaan berisi parameter yang tidak valid. | Periksa apakah token yang digunakan oleh klien valid. Kemudian, periksa apakah nilai parameter valid. |
40000004 | Pesan kesalahan yang dikembalikan karena status idle klien melebihi batas waktu. | Periksa apakah klien tidak mengirim data ke server dalam waktu lama, misalnya 10 detik. |
40000005 | Pesan kesalahan yang dikembalikan karena jumlah permintaan melebihi batas atas. | Periksa apakah jumlah koneksi bersamaan atau permintaan per detik (QPS) melebihi batas atas. Jika jumlah koneksi bersamaan melebihi batas atas, kami menyarankan Anda meningkatkan Intelligent Speech Interaction dari edisi uji coba ke Edisi Komersial. Jika Anda telah meningkatkan layanan ke Edisi Komersial, kami menyarankan Anda membeli lebih banyak sumber daya untuk mendukung konkurensi yang lebih tinggi. |
40000000 | Pesan kesalahan yang dikembalikan karena terjadi kesalahan klien. Ini adalah kode kesalahan klien default. | Selesaikan kesalahan berdasarkan pesan kesalahan atau ajukan tiket. |
41010120 | Pesan kesalahan yang dikembalikan karena terjadi kesalahan waktu habis pada klien. | Periksa apakah klien tidak mengirim data ke server selama minimal 10 detik berturut-turut. |
50000000 | Pesan kesalahan yang dikembalikan karena terjadi kesalahan server. Ini adalah kode kesalahan server default. | Jika kode kesalahan ini kadang-kadang muncul, abaikan saja. Jika kode kesalahan ini muncul berkali-kali, ajukan tiket. |
50000001 | Pesan kesalahan yang dikembalikan karena terjadi kesalahan panggilan internal. | Jika kode kesalahan ini kadang-kadang muncul, abaikan saja. Jika kode kesalahan ini muncul berkali-kali, ajukan tiket. |
52010001 | Pesan kesalahan yang dikembalikan karena terjadi kesalahan panggilan internal. | Jika kode kesalahan ini kadang-kadang muncul, abaikan saja. Jika kode kesalahan ini muncul berkali-kali, ajukan tiket. |
Kode kesalahan gerbang
Kode kesalahan | Deskripsi | Solusi |
40010001 | Pesan kesalahan yang dikembalikan karena metode tidak didukung. | Jika Anda menggunakan SDK, ajukan tiket. |
40010002 | Pesan kesalahan yang dikembalikan karena instruksi tidak didukung. | Jika Anda menggunakan SDK, ajukan tiket. |
40010003 | Pesan kesalahan yang dikembalikan karena format instruksi tidak valid. | Jika Anda menggunakan SDK, ajukan tiket. |
40010004 | Pesan kesalahan yang dikembalikan karena klien terputus secara tak terduga. | Periksa apakah klien terputus sebelum server menyelesaikan tugas yang diminta. |
40010005 | Pesan kesalahan yang dikembalikan karena tugas berada dalam status yang tidak mendukung instruksi tersebut. | Periksa apakah instruksi tersebut didukung oleh tugas dalam status saat ini. |
Kode kesalahan konfigurasi
Kode kesalahan | Deskripsi | Solusi |
40020105 | Pesan kesalahan yang dikembalikan karena aplikasi tidak ada. | Selesaikan entri rute untuk memeriksa apakah aplikasi tersebut ada. |
40020106 | Pesan kesalahan yang dikembalikan karena appkey dan token yang ditentukan tidak cocok. | Periksa apakah appkey aplikasi benar dan termasuk dalam Akun Alibaba Cloud yang sama dengan token tersebut. |
40020503 | Pesan kesalahan yang dikembalikan karena otentikasi Pengguna RAM gagal. | Gunakan Akun Alibaba Cloud Anda untuk memberikan otorisasi kepada Pengguna RAM agar dapat mengakses API platform terbuka pctowap (POP). |
Kode kesalahan pengenalan suara waktu nyata
Kode kesalahan | Deskripsi | Solusi |
41040201 | Pesan kesalahan yang dikembalikan karena klien tidak mengirim data ke server selama 10 detik berturut-turut. | Periksa jaringan atau apakah tidak ada data bisnis yang perlu dikirim. |
41040202 | Pesan kesalahan yang dikembalikan karena klien mengirim data dengan laju transmisi tinggi dan menghabiskan semua sumber daya server. | Periksa apakah klien mengirim data dengan laju transmisi yang sesuai, misalnya dengan faktor waktu nyata 1:1. |
41040203 | Pesan kesalahan yang dikembalikan karena klien mengirim data audio dalam format pengkodean audio yang tidak valid. | Konversi format pengkodean audio data audio ke format yang didukung oleh SDK. |
41040204 | Pesan kesalahan yang dikembalikan karena klien tidak memanggil metode dalam urutan yang benar. | Periksa apakah klien memanggil metode terkait untuk mengirim permintaan sebelum memanggil metode lainnya. |
41040205 | Pesan kesalahan yang dikembalikan karena parameter max_sentence_silence yang ditentukan tidak valid. | Periksa apakah nilai parameter max_sentence_silence berada dalam rentang 200 hingga 2000. |
41050008 | Pesan kesalahan yang dikembalikan karena laju pengambilan sampel audio yang ditentukan tidak cocok dengan model yang dipilih. | Periksa apakah laju pengambilan sampel audio yang ditentukan untuk panggilan layanan sesuai dengan laju pengambilan sampel model Pengenalan suara otomatis (ASR) yang terikat pada appkey proyek Anda yang dibuat di konsol. |
51040101 | Pesan kesalahan yang dikembalikan karena terjadi kesalahan internal pada server. | Selesaikan kesalahan berdasarkan pesan kesalahan. |
51040103 | Pesan kesalahan yang dikembalikan karena layanan pengenalan suara waktu nyata tidak tersedia. | Periksa apakah jumlah tugas pengenalan suara waktu nyata melebihi batas atas. |
51040104 | Pesan kesalahan yang dikembalikan karena permintaan pengenalan suara waktu nyata melebihi batas waktu. | Periksa log layanan pengenalan suara waktu nyata. |
51040105 | Pesan kesalahan yang dikembalikan karena panggilan layanan pengenalan suara waktu nyata gagal. | Periksa apakah layanan pengenalan suara waktu nyata diaktifkan dan apakah port berfungsi dengan baik. |
51040106 | Pesan kesalahan yang dikembalikan karena load balancing layanan pengenalan suara waktu nyata gagal dan klien gagal mendapatkan alamat IP layanan pengenalan suara waktu nyata. | Periksa apakah server pengenalan suara waktu nyata di VPC berfungsi dengan baik. |