Pelajari langkah-langkah pemecahan masalah yang mungkin dapat membantu jika Anda mengalami masalah saat menggunakan Speech-to-Text.
Tidak dapat melakukan autentikasi ke Speech-to-Text
Anda mungkin menerima pesan error yang menunjukkan bahwa kredensial default aplikasi Anda tidak tersedia. Atau, Anda mungkin ingin tahu cara mendapatkan kunci API yang akan digunakan saat memanggil Speech-to-Text.
Speech-to-Text menggunakan Kredensial Default Aplikasi (ADC) untuk autentikasi.
Kredensial untuk ADC harus tersedia dalam konteks tempat Anda memanggil Speech-to-Text API. Misalnya, jika Anda menyiapkan ADC di terminal, tetapi menjalankan kode di debugger IDE, konteks eksekusi kode Anda mungkin tidak memiliki akses ke kredensial. Dalam hal ini, permintaan Anda ke Speech-to-Text mungkin gagal.
Untuk mempelajari cara memberikan kredensial ke ADC, lihat Menyiapkan Kredensial Default Aplikasi.
Speech-to-Text menampilkan respons kosong
Ada beberapa alasan mengapa Speech-to-Text menampilkan respons
kosong. Sumber masalahnya dapat berupa RecognitionConfig
atau audio
itu sendiri.
Memecahkan masalah RecognitionConfig
Objek RecognitionConfig
(atau StreamingRecognitionConfig
) adalah bagian dari permintaan pengenalan Speech-to-Text. Untuk melakukan transkripsi dengan benar, tetapkan kolom yang termasuk dalam kategori utama berikut:
- Konfigurasi audio
- Model dan bahasa
Penyebab umum respons kosong (seperti respons JSON {}
kosong) adalah memberikan informasi yang salah tentang metadata audio. Jika kolom konfigurasi audio tidak disetel dengan benar, transkripsi kemungkinan besar akan gagal, dan model pengenalan akan menampilkan hasil kosong.
Konfigurasi audio berisi metadata dari audio yang disediakan. Anda bisa mendapatkan
metadata untuk file audio menggunakan perintah ffprobe
, yang merupakan bagian
dari FFMPEG.
Contoh berikut menunjukkan penggunaan perintah untuk mendapatkan metadata untuk contoh ucapan ini.
$ ffprobe commercial_mono.wav
[...]
Input #0, wav, from 'commercial_mono.wav':
Duration: 00:00:35.75, bitrate: 128 kb/s
Stream #0:0: Audio: pcm_s16le ([1][0][0][0] / 0x0001), 8000 Hz, 1 channels, s16, 128 kb/s
File tersebut jelas memiliki 8.000 Hz, satu channel, dan encoding LINEAR16 (s16), dan Anda dapat menggunakan informasi ini di RecognitionConfig
.
Pemecahan masalah terkait encoding
Lakukan langkah-langkah berikut untuk mengatasi kemungkinan alasan lain yang menyebabkan respons kosong:
Putar file dan dengarkan outputnya. Apakah audionya jelas dan ucapan dapat dipahami?
Untuk memutar file, Anda dapat menggunakan perintah SoX (Sound eXchange)
play
. Berikut beberapa contoh berdasarkan encoding audio yang berbeda.File FLAC menyertakan header yang menunjukkan frekuensi sampel, jenis encoding, dan jumlah saluran, serta dapat diputar sebagai berikut:
play audio.flac
File LINEAR16 tidak menyertakan header. Untuk memutarnya, tentukan frekuensi sampel, jenis encoding, dan jumlah saluran. Encoding LINEAR16 harus 16-bit, integer bertanda, dan little-endian.
play --channels=1 --bits=16 --rate=16000 --encoding=signed-integer \ --endian=little audio.raw
File MULAW juga tidak menyertakan header dan sering kali menggunakan frekuensi sampel yang lebih rendah.
play --channels=1 --rate=8000 --encoding=u-law audio.raw
Pastikan encoding audio data Anda cocok dengan parameter yang Anda kirim di
RecognitionConfig
. Misalnya, jika permintaan Anda menentukan"encoding":"FLAC"
dan"sampleRateHertz":16000
, parameter data audio yang dicantumkan oleh perintahplay
SoX akan cocok dengan parameter tersebut, seperti berikut:play audio.flac
Harus mencantumkan:
Encoding: FLAC Channels: 1 @ 16-bit Sampleratehertz: 16000 Hz
Jika listingan SoX menampilkan
Sampleratehertz
selain16000Hz
, ubah"sampleRateHertz"
diInitialRecognizeRequest
agar cocok. JikaEncoding
bukanFLAC
atauChannels
bukan1 @ 16-bit
, Anda tidak dapat menggunakan file ini secara langsung, dan perlu mengonversinya ke encoding yang kompatibel (lihat langkah berikutnya).Jika file audio Anda tidak ada dalam encoding FLAC, coba konversikan ke FLAC menggunakan SoX. Ulangi langkah-langkah untuk memutar file tersebut serta memverifikasi encoding, sampleRateHertz, dan saluran. Contoh yang mengonversi berbagai format file audio ke encoding FLAC:
sox audio.wav --channels=1 --bits=16 audio.flac sox audio.ogg --channels=1 --bits=16 audio.flac sox audio.au --channels=1 --bits=16 audio.flac sox audio.aiff --channels=1 --bits=16 audio.flac
Untuk mengonversi file mentah ke FLAC, Anda perlu mengetahui encoding audio file tersebut. Misalnya, untuk mengonversi stereo, 16-bit, bertanda, little-endian pada 16.000 Hz ke FLAC, ikuti contoh ini:
sox --channels=2 --bits=16 --rate=16000 --encoding=signed-integer \ --endian=little audio.raw --channels=1 --bits=16 audio.flac
Jalankan contoh Panduan Memulai atau salah satu Aplikasi Sampel dengan file audio sampel yang disediakan. Setelah contoh berhasil berjalan, ganti file audio sampel dengan file audio Anda.
Konfigurasi model dan bahasa
Pemilihan model sangat penting untuk mendapatkan hasil transkripsi
yang berkualitas tinggi. Speech-to-Text
menyediakan beberapa model yang telah disesuaikan dengan berbagai kasus penggunaan dan harus
dipilih agar paling cocok dengan audio Anda.
Misalnya, beberapa model (seperti latest_short
dan command_and_search
)
adalah model berdurasi singkat, yang berarti lebih cocok untuk audio dan perintah pendek.
Model ini cenderung akan menampilkan hasil segera setelah mendeteksi periode senyap. Di sisi lain, model format panjang (seperti
latest_short, phone_call, video and default
) lebih
cocok untuk audio yang lebih panjang dan tidak sensitif untuk menafsirkan keheningan sebagai
akhir audio.
Jika pengenalan Anda berakhir terlalu tiba-tiba atau tidak segera ditampilkan, lihat apakah Anda bisa mendapatkan kualitas transkripsi yang lebih baik dengan bereksperimen dengan model lain menggunakan UI Ucapan.
Error waktu tunggu habis
Sebagian besar masalah ini disebabkan oleh kesalahan konfigurasi atau penyalahgunaan Speech-to-Text.
LongRunningRecognize
atau BatchRecognize
Masalah: Anda menerima
TimeoutError: Operation did not complete within the designated timeout
.Solusi: Anda dapat mengirim transkripsi ke bucket Cloud Storage atau memperpanjang waktu tunggu dalam permintaan.
Masalah ini terjadi saat permintaan LongRunningRecognize
atau BatchRecognize
tidak selesai dalam waktu tunggu yang ditentukan, dan bukan error yang
menunjukkan kegagalan dalam transkripsi ucapan. Artinya, hasil transkripsi belum siap diekstrak.
StreamingRecognize
Masalah: Anda menerima
Timeout Error: Long duration elapsed without audio. Audio should be sent close to real time
.Solusi: Waktu antara pengiriman potongan audio perlu dikurangi. Jika Speech-to-Text tidak mendapatkan potongan baru setiap beberapa detik, Speech-to-Text akan menutup koneksi dan memicu error ini.
StreamingRecognize
409 dibatalkan
Masalah: Anda menerima error
409 Max duration of 5 minutes reached for stream
.Solusi: Anda mencapai batas pengenalan streaming lima menit audio. Saat Anda hampir mencapai batas ini, tutup stream dan buka stream baru.
Kualitas transkrip rendah
Automatic Speech Recognition (ASR) mendukung berbagai kasus penggunaan. Sebagian besar masalah kualitas dapat diatasi dengan mencoba opsi API yang berbeda. Untuk meningkatkan akurasi pengenalan, ikuti panduan di Praktik terbaik.
Ucapan pendek tidak dikenali
Masalah: Ucapan singkat pengguna akhir seperti Ya, Tidak, dan Berikutnya tidak direkam oleh API dan tidak ada dalam transkrip.
Solusi: Lakukan langkah-langkah berikut.
Uji permintaan yang sama dengan model yang berbeda.
Menambahkan adaptasi ucapan dan penguatan kata yang hilang.
Jika Anda menggunakan input streaming, coba tetapkan
single_utterance=true
.
Kata atau frasa yang terus-menerus tidak dikenali
Masalah: Kata atau frasa tertentu selalu salah dikenali, seperti a dikenali sebagai 8.
Solusi: Lakukan langkah-langkah berikut.
Uji permintaan yang sama dengan model yang berbeda.
Menambahkan adaptasi ucapan dan penguatan kata yang hilang. Anda dapat menggunakan token class untuk meningkatkan seluruh kumpulan kata seperti urutan angka atau alamat. Periksa token class yang tersedia.
Coba naikkan
max_alternatives
. Kemudian, periksa SpeechRecognitionResultalternatives
dan pilih yang pertama yang cocok dengan format yang Anda inginkan.
Pemformatan dapat menjadi tantangan bagi ASR. Adaptasi ucapan sering kali dapat membantu mendapatkan format yang diperlukan, tetapi pemrosesan pasca-pemrosesan mungkin diperlukan agar sesuai dengan format yang diperlukan.
Input bahasa campuran atau multibahasa
Masalah: Audio berisi ucapan dalam beberapa bahasa, seperti percakapan antara penutur bahasa Inggris dan penutur bahasa Spanyol yang menghasilkan transkripsi yang salah.
Solusi: Fitur ini tidak didukung. Speech-to-Text hanya dapat mentranskripsikan satu bahasa per permintaan.
Izin ditolak
Masalah: Anda menerima error berikut.
Permission denied to access GCS object BUCKET-PATH. Source error: PROJECT-ID@gcp-sa-speech.iam.gserviceaccount.com does not have storage.buckets.get access to the Google Cloud Storage bucket. Permission 'storage.buckets.get' denied on resource (or it may not exist).
Solusi: Berikan izin untuk PROJECT_ID@gcp-sa-speech.iam.gserviceaccount.com untuk mengakses file di bucket BUCKET-PATH.
Argumen tidak valid
Masalah: Anda menerima error berikut.
{ "error": { "code": 400, "message": "Request contains an invalid argument.", "status": "INVALID_ARGUMENT" } }
Solusi: Periksa argumen dan bandingkan dengan dokumentasi API, lalu validasi bahwa argumen tersebut sudah benar. Pastikan endpoint yang dipilih cocok dengan lokasi dalam permintaan / resource.
Resource sudah terlampaui
Masalah: Anda menerima error berikut.
RESOURCE_EXHAUSTED: Resource has been exhausted (e.g. check quota)
Solusi: Lihat Meminta penyesuaian kuota.
Chunk streaming terlalu besar
Masalah: Anda menerima error berikut.
INVALID_ARGUMENT: Request audio can be a maximum of 10485760 bytes. [type.googleapis.com/util.MessageSetPayload='[google.rpc.error_details_ext] { message: "Request audio can be a maximum of 10485760 bytes." }']
Solusi: Anda perlu mengurangi ukuran potongan audio yang dikirim. Sebaiknya kirimkan potongan 100 md untuk mendapatkan latensi terbaik dan menghindari tercapainya batas audio.
Logging data
Masalah: Speech-to-Text tidak menyediakan Cloud Logging.
Solusi: Karena Speech-to-Text menonaktifkan logging data secara default, pelanggan harus mengaktifkannya di tingkat project.