Konstruksi permintaan 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 mempelajari API itu sendiri.

Coba 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 gratis

Permintaan 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 jenis AudioEncoding). Jika memiliki pilihan codec, sebaiknya Anda menggunakan encoding lossless seperti FLAC atau LINEAR16 untuk performa terbaik. (Untuk informasi selengkapnya, lihat Encoding Audio.) Kolom encoding bersifat opsional untuk file FLAC dan WAV, 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.) Kolom sampleRateHertz bersifat opsional untuk file FLAC dan WAV 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 ke 1) 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, tetapkan maxAlternatives 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 format gs://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 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 jenis SpeechRecognitionResult) 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 jenis SpeechRecognitionAlternatives. Apakah alternatif yang ditampilkan lebih dari satu atau tidak bergantung pada apakah Anda meminta lebih dari satu alternatif (dengan menetapkan maxAlternatives ke nilai yang lebih besar daripada 1) 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 ke false) 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. Menyetel single_utterance ke true berguna untuk memproses perintah suara.
  • interim_results - (opsional, default-nya ditetapkan ke false) 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 menetapkan is_final ke false.

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. Daftar results 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 hasil isFinal=true di sepanjang aliran data tunggal, tetapi hasil isFinal=true hanya dijamin setelah aliran data tulis ditutup (setengah tertutup).
    • stability menunjukkan ketidakstabilan hasil yang diperoleh sejauh ini, dengan 0.0 menunjukkan ketidakstabilan penuh, sementara 1.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. Jika isFinal ditetapkan ke true, stability tidak akan ditetapkan.