Dasar-dasar Speech-to-Text

Dokumen ini adalah panduan dasar-dasar penggunaan Speech-to-Text. Panduan konseptual ini membahas jenis permintaan yang dapat Anda buat ke Speech-to-Text, cara membuat permintaan tersebut, dan cara menangani responsnya. Sebaiknya semua pengguna Speech-to-Text membaca panduan ini dan salah satu tutorial terkait sebelum mendalami API itu sendiri.

Permintaan pengenalan Speech-to-Text

Speech-to-Text memiliki tiga metode utama untuk melakukan pengenalan ucapan. Ketiga metode tersebut tercantum di bawah ini:

  • Pengenalan Sinkron (REST dan gRPC) mengirimkan data audio ke Speech-to-Text API, melakukan pengenalan pada data tersebut, dan menampilkan hasil setelah semua audio diproses. Permintaan pengenalan sinkron dibatasi untuk data audio dengan durasi 1 menit atau kurang.

  • Pengenalan Asinkron (REST dan gRPC) mengirim data audio ke Speech-to-Text API dan memulai operasi yang berjalan lama. Dengan operasi ini, Anda dapat melakukan polling hasil pengenalan secara berkala. Gunakan permintaan asinkron untuk data audio dengan durasi hingga 480 menit.

  • Pengenalan Streaming (khusus gRPC) melakukan pengenalan pada data audio yang disediakan dalam stream dua arah gRPC. Permintaan streaming didesain untuk tujuan pengenalan real-time, seperti saat merekam audio live dari mikrofon. Pengenalan streaming memberikan hasil sementara saat audio direkam, sehingga hasil dapat muncul, misalnya, saat pengguna masih berbicara.

Permintaan pengenalan berisi parameter konfigurasi serta data audio. Secara opsional, permintaan pengenalan dapat berisi pengenal, serta konfigurasi pengenalan yang disimpan dan dapat digunakan kembali.

Metadata Audio

Untuk sebagian besar file audio, Speech-to-Text API dapat menyimpulkan metadata audio secara otomatis. Speech-to-Text mengurai header file dan mendekodenya sesuai dengan informasi tersebut. Lihat halaman encoding untuk mengetahui jenis file yang didukung.

Untuk file audio tanpa header, Speech-to-Text API memungkinkan penentuan metadata audio secara eksplisit dalam konfigurasi pengenalan. Lihat halaman encoding untuk detail selengkapnya.

Jika Anda memiliki pilihan saat mengenkode materi sumber, rekam audio menggunakan frekuensi sampel 16.000 Hz. Nilai yang lebih rendah dari ini dapat menghalangi akurasi pengenalan suara, sementara tingkat yang lebih tinggi tidak memiliki pengaruh yang signifikan terhadap kualitas pengenalan ucapan.

Namun, jika data audio telah direkam dengan frekuensi sampel yang ada selain 16.000 Hz, jangan lakukan resampling pada audio menjadi 16.000 Hz. Sebagian besar audio telepon lama, misalnya, menggunakan frekuensi sampel 8.000 Hz, yang mungkin memberikan hasil yang kurang akurat. Jika Anda harus menggunakan audio tersebut, sediakan audio ke Speech-to-Text API sesuai frekuensi sampel native-nya.

Languages

Mesin pengenalan Speech-to-Text mendukung berbagai bahasa dan dialek. Tentukan bahasa (dan dialek nasional atau regional) audio Anda dalam kolom languageCode pada konfigurasi permintaan, menggunakan ID BCP-47.

Daftar lengkap bahasa yang didukung untuk setiap fitur tersedia di halaman Dukungan Bahasa.

Fitur pengenalan

Speech-to-Text API memiliki fitur pengenalan tambahan seperti tanda baca otomatis dan kepercayaan tingkat kata. Fitur ini diaktifkan pada konfigurasi pengenalan dalam permintaan. Lihat kode contoh yang diberikan pada link di atas dan halaman bahasa untuk mengetahui ketersediaan fitur ini.

Pemilihan model

Speech-to-Text dapat menggunakan salah satu dari beberapa model machine learning untuk mentranskripsikan file audio Anda. Google telah melatih model pengenalan ucapan ini untuk jenis dan sumber audio tertentu. Baca dokumentasi pemilihan model untuk mempelajari model yang tersedia serta cara memilih model dalam permintaan Anda.

Konten audio yang disematkan

Audio tersemat disertakan dalam permintaan pengenalan ucapan saat meneruskan parameter content dalam kolom audio_source permintaan. Untuk audio tersemat yang disediakan sebagai konten dalam permintaan gRPC, audio tersebut harus kompatibel untuk serialisasi Proto3, dan disediakan sebagai data biner. Untuk audio tersemat yang disediakan sebagai konten dalam permintaan REST, audio tersebut harus kompatibel dengan serialisasi JSON dan dienkode Base64 terlebih dahulu. Lihat [Mengenkode Audio Base64][encoding base64] untuk informasi selengkapnya.

Saat membuat permintaan menggunakan library klien Google Cloud, Anda umumnya akan menulis data biner (atau berenkode base-64) ini langsung dalam kolom content.

Meneruskan audio yang direferensikan oleh URI

Biasanya, Anda akan meneruskan parameter uri dalam kolom audio_source pada permintaan Speech-to-Text API, yang mengarah ke file audio (dalam format biner, bukan base64) yang terletak di Cloud Storage dengan bentuk berikut:

gs://bucket-name/path/to/audio/file

Speech-to-Text menggunakan akun layanan untuk mengakses file Anda di Cloud Storage. Secara default, akun layanan memiliki akses ke file Cloud Storage dalam project yang sama.

Alamat email akun layanan adalah sebagai berikut:

service-PROJECT_NUMBER@gcp-sa-speech.iam.gserviceaccount.com

Untuk mentranskripsikan file Cloud Storage di project lain, Anda dapat memberikan peran Agen Layanan Speech-to-Text ke project layanan ini:

gcloud projects add-iam-policy-binding PROJECT_ID \
    --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-speech.iam.gserviceaccount.com \
    --role=roles/speech.serviceAgent

Informasi selengkapnya tentang kebijakan IAM project tersedia di bagian Mengelola akses ke project, folder, dan organisasi.

Anda juga dapat memberikan akses yang lebih terperinci kepada akun layanan dengan memberinya izin ke bucket Cloud Storage tertentu:

gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \
    --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-speech.iam.gserviceaccount.com \
    --role=roles/storage.admin

Informasi selengkapnya tentang cara mengelola akses ke Cloud Storage tersedia di bagian Membuat dan Mengelola daftar kontrol akses dalam dokumentasi Cloud Storage.

Respons Speech-to-Text API

Setelah audio diproses, Speech-to-Text API akan menampilkan hasil transkripsi dalam pesan SpeechRecognitionResult untuk permintaan batch dan sinkron, serta dalam pesan StreamingRecognitionResult untuk permintaan streaming. Dalam permintaan sinkron dan batch, respons RPC berisi daftar hasil. Daftar audio yang dikenali akan muncul secara berurutan. Untuk respons streaming, semua hasil yang ditandai sebagai is_final akan muncul secara berurutan.

Memilih alternatif

Setiap hasil dalam respons pengenalan sinkron yang berhasil dapat berisi satu atau beberapa alternatives (jika max_alternatives lebih besar dari 1). Jika Speech-to-Text menentukan bahwa sebuah alternatif memiliki nilai keyakinan yang memadai, alternatif tersebut akan disertakan dalam respons. Alternatif pertama dalam respons selalu merupakan alternatif terbaik (kemungkinan besar).

Menetapkan max_alternatives ke nilai yang lebih tinggi dari 1 tidak berarti atau menjamin bahwa beberapa alternatif akan ditampilkan. Secara umum, lebih dari satu alternatif lebih sesuai untuk memberikan opsi real-time kepada pengguna yang mendapatkan hasil melalui permintaan pengenalan streaming.

Menangani transkripsi

Setiap alternatif yang diberikan dalam respons akan memuat transcript yang berisi teks yang dikenali. Jika alternatif berurutan disediakan, Anda harus menyambung transkripsi tersebut.

Tingkat keyakinan

Nilai confidence merupakan perkiraan antara 0,0 dan 1,0. Nilai ini dihitung dengan menggabungkan nilai "kemungkinan" yang ditetapkan untuk setiap kata dalam audio. Angka yang lebih tinggi menunjukkan estimasi kemungkinan yang lebih besar bahwa kata tersebut dikenali dengan benar. Kolom ini biasanya disediakan hanya untuk hipotesis teratas, dan hanya untuk hasil di mana is_final=true. Misalnya, Anda dapat menggunakan nilai confidence untuk memutuskan apakah akan menampilkan hasil alternatif kepada pengguna atau meminta konfirmasi dari pengguna.

Namun, perhatikan bahwa model tersebut menentukan hasil peringkat teratas "terbaik" berdasarkan lebih banyak sinyal daripada skor confidence saja (seperti konteks kalimat). Karena itu, terkadang ada kasus di mana hasil teratas tidak memiliki skor keyakinan tertinggi. Jika Anda belum meminta beberapa hasil alternatif, satu hasil "terbaik" yang ditampilkan mungkin memiliki tingkat keyakinan lebih rendah daripada yang diharapkan. Hal ini dapat terjadi, misalnya, dalam kasus kata-kata yang jarang digunakan. Kata yang jarang digunakan dapat diberi nilai "kemungkinan" yang rendah meskipun kata tersebut dikenali dengan benar. Jika model menentukan bahwa kata yang jarang digunakan tersebut merupakan opsi yang paling mungkin berdasarkan konteks, hasil itu akan ditampilkan paling atas meskipun tingkat confidence-nya lebih rendah daripada opsi alternatif.

Langkah berikutnya