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 mempelajari API itu sendiri.
Cobalah sendiri
Jika Anda baru menggunakan Google Cloud, buat akun untuk mengevaluasi performa Speech-to-Text dalam skenario dunia nyata. Pelanggan baru mendapatkan kredit gratis senilai $300 untuk menjalankan, menguji, dan men-deploy workload.
Coba Speech-to-Text gratisPermintaan ucapan
Speech-to-Text memiliki tiga metode utama untuk menjalankan pengenalan ucapan. Ketiga metode tersebut tercantum di bawah ini:
Pengenalan Sinkron (REST dan gRPC) mengirimkan data audio ke Speech-to-Text API, menjalankan pengenalan atas data tersebut, dan menampilkan hasil setelah semua audio diproses. Permintaan pengenalan sinkron dibatasi pada data audio dengan durasi maksimal 1 menit.
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 poll hasil pengenalan secara berkala. Gunakan permintaan asinkron untuk data audio dengan durasi hingga 480 menit.
Pengenalan Aliran Data (khusus gRPC) menjalankan pengenalan atas data audio yang disediakan dalam aliran data 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 berisi parameter konfigurasi serta data audio. Bagian berikut menjelaskan jenis permintaan pengenalan ini, respons yang dihasilkannya, dan cara menangani respons tersebut secara lebih mendetail.
Pengenalan Speech-to-Text API
Permintaan pengenalan sinkron Speech-to-Text API adalah metode paling sederhana untuk menjalankan pengenalan atas data audio ucapan. Speech-to-Text dapat memproses data audio ucapan berdurasi hingga 1 menit yang dikirim dalam permintaan sinkron. Setelah memproses dan mengenali semua audio, Speech-to-Text akan menampilkan respons.
Permintaan sinkron bersifat memblokir, yang berarti Speech-to-Text harus menampilkan respons sebelum memproses permintaan berikutnya. Speech-to-Text biasanya memproses audio lebih cepat daripada waktu sebenarnya, rata-rata memproses audio berdurasi 30 detik dalam 15 detik. Jika kualitas audio buruk, permintaan pengenalan Anda dapat memerlukan waktu jauh lebih lama.
Speech-to-Text memiliki metode REST dan gRPC untuk memanggil permintaan sinkron dan asinkron Speech-to-Text API. Artikel ini mendemonstrasikan REST API karena lebih mudah untuk menampilkan dan menjelaskan penggunaan dasar API. Namun, susunan dasar permintaan REST atau gRPC sangat mirip. Permintaan Pengenalan Aliran Data hanya didukung oleh gRPC.
Permintaan Pengenalan Ucapan Sinkron
Permintaan Speech-to-Text API sinkron terdiri atas sebuah konfigurasi pengenalan ucapan dan data audio. Contoh permintaan ditampilkan di bawah:
{ "config": { "encoding": "LINEAR16", "sampleRateHertz": 16000, "languageCode": "en-US", }, "audio": { "uri": "gs://bucket-name/path_to_audio_file" } }
Semua permintaan pengenalan sinkron Speech-to-Text API harus menyertakan kolom config
pengenalan ucapan (dari jenis RecognitionConfig). RecognitionConfig
berisi sub-kolom berikut:
encoding
- (wajib) menentukan skema encoding untuk audio yang disediakan (dari jenisAudioEncoding
). Jika memiliki pilihan codec, sebaiknya Anda menggunakan encoding lossless sepertiFLAC
atauLINEAR16
untuk performa terbaik. (Untuk informasi selengkapnya, lihat Encoding Audio.) Kolomencoding
bersifat opsional untuk fileFLAC
danWAV
, tempat encoding disertakan dalam header file.sampleRateHertz
- (wajib) menentukan frekuensi sampel (dalam Hertz) untuk audio yang disediakan. (Untuk informasi lebih lanjut tentang frekuensi sampel, lihat Frekuensi Sampel di bawah.) KolomsampleRateHertz
bersifat opsional untuk fileFLAC
danWAV
yang frekuensi sampelnya disertakan dalam header file.languageCode
- (wajib) berisi bahasa + wilayah/lokal yang akan digunakan untuk pengenalan ucapan audio yang disediakan. Kode bahasa harus berupa ID BCP-47. Perlu diperhatikan bahwa kode bahasa biasanya terdiri atas tag bahasa primer dan subtag wilayah sekunder untuk menunjukkan dialek (misalnya, dalam contoh di atas, 'en' untuk bahasa Inggris dan 'US' untuk Amerika Serikat.) (Untuk mengetahui daftar bahasa yang didukung, lihat Bahasa yang Didukung.)maxAlternatives
- (opsional, default-nya ditetapkan ke1
) menunjukkan jumlah transkripsi alternatif yang harus disediakan dalam respons. Secara default, Speech-to-Text API menyediakan satu transkripsi primer. Jika Anda ingin mengevaluasi alternatif lainnya, tetapkanmaxAlternatives
ke nilai yang lebih tinggi. Perhatikan bahwa Speech-to-Text hanya akan menampilkan alternatif jika pengenal menentukan bahwa alternatif memiliki kualitas memadai. Secara umum, alternatif lebih sesuai untuk permintaan real-time yang memerlukan respons pengguna (misalnya perintah suara) sehingga lebih cocok untuk permintaan pengenalan aliran data.profanityFilter
- (opsional) menunjukkan apakah kata atau frasa yang tidak sopan harus difilter. Kata yang difilter akan berisi huruf pertama dan tanda bintang untuk karakter selebihnya (misalnya f***). Filter kata-kata tidak sopan beroperasi per kata. Filter ini tidak mendeteksi ucapan kasar atau menyinggung yang berupa frasa atau kombinasi kata.speechContext
- (opsional) berisi informasi kontekstual tambahan untuk memproses audio ini. Konteks berisi sub-kolom berikut:boost
- berisi nilai yang menetapkan bobot untuk mengenali kata atau frasa tertentu.phrases
- berisi daftar kata dan frasa yang memberikan petunjuk untuk tugas pengenalan ucapan. Untuk mengetahui informasi selengkapnya, lihat informasi tentang adaptasi ucapan.
Audio dimasukkan ke Speech-to-Text melalui parameter audio
dari jenis RecognitionAudio. Kolom audio
berisi salah satu sub-kolom berikut:
content
berisi audio yang akan dievaluasi, yang disematkan ke dalam permintaan. Lihat Menyematkan Konten Audio di bawah untuk informasi selengkapnya. Durasi audio yang diteruskan langsung dalam kolom ini dibatasi maksimal 1 menit.uri
berisi URI yang mengarah ke konten audio. File tidak boleh dikompresi (misalnya gzip). Saat ini, kolom ini harus berisi URI Google Cloud Storage (dengan formatgs://bucket-name/path_to_audio_file
). Baca bagian Meneruskan referensi Audio dengan URI di bawah.
Informasi selengkapnya tentang parameter permintaan dan respons ini ditampilkan di bawah.
Frekuensi sampel
Anda harus menentukan frekuensi sampel audio di kolom sampleRateHertz
konfigurasi permintaan, yang harus cocok dengan frekuensi sampel konten atau aliran data audio yang terkait. Frekuensi sampel antara 8.000 Hz dan 48.000 Hz didukung dalam Speech-to-Text. Anda dapat menentukan frekuensi sampel untuk file FLAC
atau WAV
di header file, bukan menggunakan kolom sampleRateHertz
.
File FLAC
harus mencantumkan frekuensi sampelnya di header FLAC
agar dapat dikirim ke Speech-to-Text API.
Jika Anda memiliki pilihan saat mengenkode materi sumber, rekam audio menggunakan frekuensi sampel 16.000 Hz. Nilai yang lebih rendah dapat mengurangi akurasi pengenalan suara, sedangkan tingkat yang lebih tinggi tidak berpengaruh signifikan terhadap kualitas pengenalan ucapan.
Namun, jika data audio direkam pada frekuensi sampel yang ada selain 16.000 Hz, jangan resample audio menjadi 16.000 Hz. Sebagian besar audio telefoni lama, misalnya, menggunakan frekuensi sampel 8.000 Hz, yang dapat memberikan hasil kurang akurat. Jika harus menggunakan audio semacam ini, sediakan audio ke Speech API sesuai frekuensi sampel native-nya.
Bahasa
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.
Selisih waktu (stempel waktu)
Speech-to-Text dapat mencantumkan nilai selisih waktu (stempel waktu) untuk awal dan akhir setiap kata yang diucapkan dan dikenali dalam audio yang disediakan. Nilai selisih waktu menunjukkan jumlah waktu yang telah berlalu dari awal audio, dalam kelipatan 100 milidetik.
Selisih waktu sangat berguna untuk menganalisis file audio yang lebih panjang, di mana Anda mungkin perlu menelusuri kata tertentu dalam teks yang dikenali dan menemukan lokasinya (mencari) dalam audio asli. Selisih waktu didukung untuk semua metode pengenalan: recognize
, streamingrecognize
, dan longrunningrecognize
.
Nilai selisih waktu hanya dicantumkan untuk alternatif pertama yang disediakan dalam respons pengenalan.
Untuk mencantumkan selisih waktu dalam hasil permintaan, tetapkan parameter enableWordTimeOffsets
ke benar dalam konfigurasi permintaan Anda. Untuk contoh penggunaan REST API atau Library Klien, lihat Menggunakan Selisih Waktu (Stempel Waktu).
Misalnya, Anda dapat mencantumkan parameter enableWordTimeOffsets
dalam konfigurasi permintaan seperti yang ditunjukkan di sini:
{ "config": { "languageCode": "en-US", "enableWordTimeOffsets": true }, "audio":{ "uri":"gs://gcs-test-data/gettysburg.flac" } }
Hasil yang ditampilkan oleh Speech-to-Text API akan berisi nilai selisih waktu untuk setiap kata yang dikenali seperti yang ditunjukkan berikut ini:
{ "name": "6212202767953098955", "metadata": { "@type": "type.googleapis.com/google.cloud.speech.v1.LongRunningRecognizeMetadata", "progressPercent": 100, "startTime": "2017-07-24T10:21:22.013650Z", "lastUpdateTime": "2017-07-24T10:21:45.278630Z" }, "done": true, "response": { "@type": "type.googleapis.com/google.cloud.speech.v1.LongRunningRecognizeResponse", "results": [ { "alternatives": [ { "transcript": "Four score and twenty...(etc)...", "confidence": 0.97186122, "words": [ { "startTime": "1.300s", "endTime": "1.400s", "word": "Four" }, { "startTime": "1.400s", "endTime": "1.600s", "word": "score" }, { "startTime": "1.600s", "endTime": "1.600s", "word": "and" }, { "startTime": "1.600s", "endTime": "1.900s", "word": "twenty" }, ... ] } ] }, { "alternatives": [ { "transcript": "for score and plenty...(etc)...", "confidence": 0.9041967, } ] } ] } }
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.
Saat mengirim permintaan transkripsi audio ke Speech-to-Text, Anda dapat meningkatkan hasil yang diterima dengan menentukan sumber audio asli. Hal ini memungkinkan Speech-to-Text API memproses file audio Anda menggunakan model machine learning yang dilatih untuk mengenali audio ucapan dari jenis sumber tertentu.
Untuk menentukan model pengenalan ucapan, sertakan kolom model
dalam objek RecognitionConfig
untuk permintaan Anda, dengan menentukan model yang ingin digunakan.
Lihat daftar model transkripsi Speech-to-Text untuk mengetahui model machine learning yang tersedia.
Konten audio yang disematkan
Audio tersemat disertakan dalam permintaan pengenalan ucapan saat meneruskan
parameter content
dalam kolom audio
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 dengan Base64 untuk informasi selengkapnya.
Saat membuat permintaan menggunakan library klien Google Cloud, Anda umumnya akan menulis data biner ini (atau data berenkode base-64) langsung dalam kolom content
.
Meneruskan audio yang direferensikan oleh URI
Biasanya, Anda akan meneruskan parameter uri
dalam kolom audio
permintaan Speech, yang mengarah ke file audio (dalam format biner, bukan base64) yang terletak di Google Cloud Storage, dengan format berikut:
gs://bucket-name/path_to_audio_file
Misalnya, bagian permintaan Speech berikut mereferensikan sampel file audio yang digunakan dalam Panduan Memulai:
... "audio": { "uri":"gs://cloud-samples-tests/speech/brooklyn.flac" } ...
Anda harus memiliki izin akses yang sesuai untuk membaca file Google Cloud Storage, seperti salah satu dari berikut ini:
- Dapat dibaca secara publik (seperti sampel file audio kami).
- Dapat dibaca oleh akun layanan Anda, jika menggunakan otorisasi akun layanan.
- Dapat dibaca oleh akun pengguna, jika menggunakan 3-legged OAuth untuk otorisasi akun pengguna.
Informasi selengkapnya tentang cara mengelola akses ke Google Cloud Storage tersedia di bagian Membuat dan Mengelola Daftar Kontrol Akses dalam dokumentasi Google Cloud Storage.
Respons Speech-to-Text API
Seperti yang ditunjukkan sebelumnya, respons Speech-to-Text API sinkron mungkin memerlukan waktu beberapa lama untuk menampilkan hasil, sesuai dengan durasi audio yang disediakan. Setelah diproses, API akan menampilkan respons seperti yang ditunjukkan di bawah:
{ "results": [ { "alternatives": [ { "confidence": 0.98267895, "transcript": "how old is the Brooklyn Bridge" } ] } ] }
Kolom-kolom ini dijelaskan di bawah:
results
berisi daftar hasil (dengan jenisSpeechRecognitionResult
) di mana setiap hasil bersesuaian dengan satu segmen audio (segmen audio dipisahkan oleh jeda). Setiap hasil akan terdiri atas satu atau beberapa kolom berikut:alternatives
berisi daftar transkripsi yang mungkin, dengan jenisSpeechRecognitionAlternatives
. Apakah alternatif yang ditampilkan lebih dari satu atau tidak bergantung pada apakah Anda meminta lebih dari satu alternatif (dengan menetapkanmaxAlternatives
ke nilai yang lebih besar daripada1
) dan apakah Speech-to-Text menghasilkan alternatif dengan kualitas cukup tinggi. Setiap alternatif akan terdiri atas kolom berikut:transcript
berisi teks yang ditranskripsikan. Lihat Menangani Transkripsi di bawah.confidence
berisi nilai antara 0 dan 1 yang menunjukkan tingkat keyakinan Speech-to-Text pada transkripsi yang ditentukan. Lihat Menafsirkan Tingkat Keyakinan di bawah.
Jika audio yang disediakan tidak mengandung ucapan yang dapat dikenali, daftar results
tidak akan menampilkan item.
Ucapan yang tidak dikenali biasanya merupakan akibat dari audio dengan kualitas sangat buruk, atau kode bahasa, encoding, atau nilai frekuensi sampel yang tidak cocok dengan audio yang diberikan.
Komponen respons ini dijelaskan di bagian berikut.
Setiap respons Speech-to-Text API sinkron menampilkan serangkaian hasil, bukan satu hasil yang berisi semua audio yang dikenali. Daftar audio yang dikenali (dalam elemen transcript
) akan muncul secara berurutan.
Memilih alternatif
Setiap hasil dalam respons pengenalan sinkron yang berhasil dapat berisi satu atau beberapa alternatives
(jika nilai maxAlternatives
untuk permintaan lebih besar daripada 1
). Jika Speech-to-Text menentukan bahwa sebuah alternatif memiliki Tingkat Kepercayaan memadai, alternatif tersebut akan disertakan dalam respons. Alternatif pertama dalam respons selalu merupakan alternatif (yang kemungkinan besar) paling baik.
Menetapkan maxAlternatives
ke nilai di atas 1
tidak menyiratkan atau menjamin bahwa beberapa alternatif akan ditampilkan. Secara umum, alternatif lebih dari satu lebih sesuai untuk memberikan opsi real-time kepada pengguna yang mendapatkan hasil melalui Permintaan Pengenalan Aliran Data.
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.
Kode Python berikut mengiterasi daftar hasil dan menyambung beberapa transkripsi bersama-sama. Perhatikan bahwa, dalam semua kasus, alternatif pertama (ke-0) selalu diambil.
response = service_request.execute() recognized_text = 'Transcribed Text: \n' for i in range(len(response['results'])): recognized_text += response['results'][i]['alternatives'][0]['transcript']
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 atau tidak 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.
Permintaan Asinkron dan Responsnya
Permintaan Speech-to-Text API asinkron ke metode LongRunningRecognize memiliki format yang sama persis dengan permintaan Speech-to-Text API sinkron. Namun, alih-alih menampilkan respons, permintaan asinkron akan memulai Operasi yang Berjalan Lama (dengan jenis Operation) dan segera mengembalikan operasi ini ke tujuan panggilan. Anda dapat menggunakan pengenalan ucapan asinkron dengan audio yang berdurasi maksimal 480 menit.
Respons operasi umum ditampilkan di bawah ini:
{ "name": "operation_name", "metadata": { "@type": "type.googleapis.com/google.cloud.speech.v1.LongRunningRecognizeMetadata" "progressPercent": 34, "startTime": "2016-08-30T23:26:29.579144Z", "lastUpdateTime": "2016-08-30T23:26:29.826903Z" } }
Perhatikan bahwa belum ada hasil apa pun yang ditampilkan. Speech-to-Text akan terus memproses audio dan menggunakan operasi ini untuk menyimpan hasilnya. Hasil akan muncul di kolom response
dari operasi yang ditampilkan setelah permintaan LongRunningRecognize
selesai.
Respons lengkap setelah permintaan selesai ditampilkan di bawah:
{ "name": "1268386125834704889", "metadata": { "lastUpdateTime": "2016-08-31T00:16:32.169Z", "@type": "type.googleapis.com/google.cloud.speech.v1.LongrunningRecognizeMetadata", "startTime": "2016-08-31T00:16:29.539820Z", "progressPercent": 100 } "response": { "@type": "type.googleapis.com/google.cloud.speech.v1.LongRunningRecognizeResponse", "results": [{ "alternatives": [{ "confidence": 0.98267895, "transcript": "how old is the Brooklyn Bridge" }]}] }, "done": True, }
Perhatikan bahwa done
telah ditetapkan ke True
dan bahwa response
operasi ini berisi sekumpulan hasil dengan jenis SpeechRecognitionResult—sama dengan jenis yang ditampilkan oleh permintaan pengenalan Speech-to-Text API sinkron.
Secara default, respons REST asinkron akan menetapkan done
ke False
, nilai default-nya. Namun, karena JSON tidak mengharuskan adanya nilai default dalam suatu kolom, saat menguji apakah operasi sudah selesai atau belum, Anda harus menguji bahwa kolom done
ada dan tetapkan ke True
.
Permintaan Pengenalan Aliran Data Speech-to-Text API
Panggilan pengenalan aliran data Speech-to-Text API dirancang untuk perekaman dan pengenalan audio secara real-time, dalam aliran data dua arah. Aplikasi Anda dapat mengirim audio pada aliran data permintaan, lalu menerima hasil pengenalan sementara atau final pada aliran data respons secara real time. Hasil sementara mewakili hasil pengenalan saat ini untuk suatu bagian audio, sedangkan hasil pengenalan final mewakili tebakan terakhir dan terbaik untuk bagian audio tersebut.
Permintaan aliran data
Tidak seperti panggilan sinkron dan asinkron, di mana Anda mengirim konfigurasi dan audio dalam satu permintaan, panggilan Speech API aliran data mengharuskan pengiriman beberapa permintaan. StreamingRecognizeRequest
pertama harus berisi konfigurasi dengan jenis StreamingRecognitionConfig tanpa audio apa pun yang menyertainya. StreamingRecognizeRequest
berikutnya yang dikirim melalui aliran data yang sama harus berisi frame berurutan untuk byte audio mentah.
StreamingRecognitionConfig
terdiri atas kolom berikut:
config
- (wajib) berisi informasi konfigurasi untuk audio, dengan jenis RecognitionConfig dan sama dengan yang ditampilkan dalam permintaan sinkron dan asinkron.single_utterance
- (opsional, default-nya ditetapkan kefalse
) menunjukkan apakah permintaan ini harus otomatis berakhir setelah ucapan tidak lagi terdeteksi. Jika disetel, Speech-to-Text akan mendeteksi jeda, senyap, atau audio non-ucapan untuk menentukan kapan harus mengakhiri pengenalan. Jika tidak disetel, aliran data akan terus mendengarkan dan memproses audio hingga aliran data tersebut ditutup secara langsung, atau batas durasinya terlampaui. Menyetelsingle_utterance
ketrue
berguna untuk memproses perintah suara.interim_results
- (opsional, default-nya ditetapkan kefalse
) menunjukkan bahwa permintaan aliran data ini harus menampilkan hasil sementara yang kualitasnya dapat ditingkatkan pada lain waktu (setelah memproses lebih banyak audio). Hasil sementara akan dicatat dalam respons dengan menetapkanis_final
kefalse
.
Respons aliran data
Hasil pengenalan ucapan aliran data ditampilkan dalam serangkaian respons dengan jenis StreamingRecognitionResponse. Respons tersebut terdiri atas kolom berikut:
speechEventType
berisi peristiwa dengan jenis SpeechEventType. Nilai peristiwa ini akan menunjukkan kapan sebuah ucapan tunggal ditentukan sebagai telah selesai. Peristiwa ucapan berfungsi sebagai penanda dalam respons aliran data Anda.results
berisi daftar hasil, yang dapat berupa hasil sementara atau final, dengan jenis StreamingRecognitionResult. Daftarresults
berisi sub-kolom berikut:alternatives
berisi daftar transkripsi alternatif.isFinal
menunjukkan apakah hasil yang diperoleh dalam entri daftar ini bersifat sementara atau final. Google dapat menampilkan beberapa hasilisFinal=true
di sepanjang aliran data tunggal, tetapi hasilisFinal=true
hanya dijamin setelah aliran data tulis ditutup (setengah tertutup).stability
menunjukkan ketidakstabilan hasil yang diperoleh sejauh ini, dengan0.0
menunjukkan ketidakstabilan penuh, sementara1.0
menunjukkan stabilitas penuh. Perlu diperhatikan bahwa tidak seperti tingkat keyakinan, yang memperkirakan benar tidaknya transkripsi,stability
memperkirakan apakah hasil parsial yang ditentukan dapat berubah atau tidak. JikaisFinal
ditetapkan ketrue
,stability
tidak akan ditetapkan.