Meningkatkan hasil transkripsi dengan adaptasi model

Ringkasan

Anda dapat menggunakan fitur adaptasi model untuk membantu Speech-to-Text mengenali kata atau frasa tertentu lebih sering daripada opsi lain yang mungkin disarankan. Misalnya, anggaplah data audio Anda sering menyertakan kata "weather" (cuaca). Saat Speech-to-Text menemukan kata "weather", Anda ingin agar kata tersebut mentranskripsikan kata tersebut sebagai "weather" (cuaca) lebih sering daripada "whether" (apakah). Dalam hal ini, Anda dapat menggunakan adaptasi model agar Speech-to-Text lebih condong mengenalinya sebagai "weather".

Adaptasi model sangat membantu dalam kasus penggunaan berikut:

  • Meningkatkan akurasi kata dan frasa yang sering muncul dalam data audio Anda. Misalnya, Anda dapat memberi tahu model pengenalan terhadap perintah suara yang biasanya diucapkan oleh pengguna Anda.

  • Memperluas kosakata yang dikenali oleh Speech-to-Text. Speech-to-Text mencakup kosakata yang sangat besar. Namun, jika data audio sering kali berisi kata-kata yang langka dalam penggunaan bahasa umum (seperti nama diri atau kata khusus domain), Anda dapat menambahkannya menggunakan adaptasi model.

  • Meningkatkan akurasi transkripsi ucapan jika audio yang disediakan berisi derau atau tidak terlalu jelas.

Untuk mengetahui apakah fitur adaptasi model tersedia untuk bahasa Anda, lihat halaman dukungan bahasa.

Meningkatkan pengenalan kata dan frasa

Untuk meningkatkan kemungkinan Speech-to-Text mengenali kata "weather" (cuaca) saat mentranskripsikan data audio Anda, Anda dapat meneruskan satu kata "weather" di PhraseSet dalam resource SpeechAdaptation.

Saat Anda memberikan frasa yang terdiri dari beberapa kata, Speech-to-Text akan lebih mungkin mengenali kata-kata tersebut dalam satu rangkaian. Menyediakan frasa juga akan meningkatkan kemungkinan mengenali bagian-bagian dari frasa, termasuk setiap kata. Lihat halaman batas konten untuk mengetahui batas jumlah dan ukuran frasa tersebut.

Secara opsional, Anda dapat menyesuaikan kekuatan adaptasi model menggunakan fitur peningkatan adaptasi model.

Meningkatkan pengenalan menggunakan class

Class mewakili konsep umum yang terjadi dalam bahasa alami, seperti unit uang dan tanggal kalender. Class memungkinkan Anda meningkatkan akurasi transkripsi untuk sejumlah besar kata yang mengarah ke konsep umum, tetapi tidak selalu mencakup kata atau frasa yang identik.

Misalnya, anggaplah data audio Anda menyertakan rekaman orang yang menyebutkan alamat mereka. Anda mungkin memiliki rekaman audio seseorang yang berkata "Rumah saya di 123 Main Street, rumah keempat di sebelah kiri." Dalam hal ini, Anda ingin Speech-to-Text mengenali urutan pertama angka ("123") sebagai alamat, bukan sebagai nomor ordinal ("seratus dua puluh tiga"). Namun, tidak semua orang tinggal di "123 Main Street". Sangat tidak praktis untuk mencantumkan setiap alamat jalan yang mungkin dalam resource PhraseSet. Sebagai gantinya, Anda dapat menggunakan class untuk menunjukkan bahwa nomor jalan harus dikenali, apa pun angka itu sebenarnya. Dalam contoh ini, Speech-to-Text dapat mentranskripsikan frasa seperti "123 Main Street" dan "987 Grand Boulevard" dengan lebih akurat karena keduanya dikenali sebagai nomor alamat.

Token class

Untuk menggunakan class dalam adaptasi model, sertakan token class di kolom phrases dari resource PhraseSet. Lihat daftar token class yang didukung untuk mengetahui token yang tersedia untuk bahasa Anda. Misalnya, untuk meningkatkan transkripsi nomor alamat dari audio sumber, berikan nilai $ADDRESSNUM dalam objek SpeechContext Anda.

Anda dapat menggunakan class sebagai item mandiri di array phrases atau menyematkan satu atau beberapa token class dalam frasa yang lebih panjang dengan beberapa kata. Misalnya, Anda dapat menunjukkan nomor alamat dalam frasa yang lebih besar dengan menyertakan token class dalam string: ["my address is $ADDRESSNUM"]. Namun, frasa ini tidak akan membantu jika audio berisi frasa yang serupa, tetapi tidak identik, seperti "Saya berada di 123 Main Street". Untuk membantu pengenalan frasa serupa, penting untuk menyertakan token class saja: ["my address is $ADDRESSNUM", "$ADDRESSNUM"]. Jika Anda menggunakan token class yang tidak valid atau salah format, Speech-to-Text akan mengabaikan token tersebut tanpa memicu error, tetapi tetap menggunakan frasa lainnya untuk konteks.

Class kustom

Anda juga dapat membuat CustomClass sendiri, class yang terdiri dari daftar kustom item atau nilai terkait milik Anda sendiri. Misalnya, Anda mungkin ingin mentranskripsikan data audio yang mungkin menyertakan nama salah satu dari ratusan restoran di suatu wilayah. Nama restoran relatif jarang digunakan dalam ucapan umum, sehingga cenderung tidak dipilih sebagai jawaban yang "benar" oleh model pengenalan. Anda dapat membiaskan model pengenalan agar dapat mengidentifikasi nama-nama tersebut dengan benar saat muncul di audio Anda menggunakan class kustom.

Untuk menggunakan class kustom, buat resource CustomClass yang menyertakan setiap nama restoran sebagai ClassItem. Class kustom berfungsi dengan cara yang sama seperti token class bawaan. phrase dapat menyertakan token class bawaan dan class kustom.

Tata Bahasa ABNF

Anda juga dapat menggunakan tata bahasa dalam bentuk Backus–Naur (ABNF) yang ditingkatkan untuk menentukan pola kata. Menyertakan tata bahasa ABNF dalam adaptasi model permintaan akan meningkatkan kemungkinan bahwa Speech-to-Text akan mengenali semua kata yang cocok dengan tata bahasa yang ditentukan.

Untuk menggunakan fitur ini, sertakan objek ABNF grammar di kolom SpeechAdaptation permintaan Anda. Tata bahasa ABNF juga dapat menyertakan referensi ke resource CustomClass dan PhraseSet. Guna mempelajari sintaksis untuk kolom ini lebih lanjut, lihat Speech Recognition Grammar Specification dan code sample kami di bawah.

Menyesuaikan hasil transkripsi menggunakan penguatan

Secara default, adaptasi model seharusnya sudah memberikan efek yang memadai pada sebagian besar kasus. Fitur penguatan adaptasi model dapat Anda gunakan untuk meningkatkan bias model pengenalan dengan memberikan bobot yang lebih besar pada beberapa frasa daripada yang lain. Sebaiknya terapkan penguatan hanya jika 1) Anda telah menerapkan adaptasi model, dan 2) ingin menyesuaikan lebih lanjut kekuatan efek adaptasi model pada hasil transkripsi.

Misalnya, Anda memiliki banyak rekaman orang yang menanyakan tentang "fare to get into the county fair" (tiket masuk ke pekan raya), di mana kata "fair"(pekan raya) muncul lebih sering daripada "fare" (tarif). Dalam hal ini, Anda dapat menggunakan adaptasi model untuk meningkatkan kemungkinan model mengenali "fair" dan "fare" dengan menambahkannya sebagai phrases dalam resource PhraseSet. Kode ini akan memberi tahu Speech-to-Text untuk mengenali "fair" dan "fare" lebih sering daripada, misalnya, "hare" atau "lair".

Namun, "fair" harus dikenali lebih sering daripada "fare" karena kata ini muncul lebih sering dalam audio. Anda mungkin telah mentranskripsikan audio menggunakan Speech-to-Text API dan menemukan banyak error dalam mengenali kata yang benar ("fair"). Dalam hal ini, Anda mungkin juga ingin menggunakan frasa dengan penguatan untuk menetapkan nilai peningkatan yang lebih tinggi untuk "fair" daripada "fare". Nilai berbobot yang lebih tinggi yang ditetapkan ke "fair" akan membuat Speech-to-Text API lebih sering memilih "fair" daripada "fare". Tanpa nilai penguatan, model pengenalan akan mengenali "fair" dan "fare" dengan probabilitas yang sama.

Dasar-dasar penguatan

Saat menggunakan penguatan, Anda menetapkan nilai berbobot ke item phrase di resource PhraseSet. Speech-to-Text mengacu pada nilai berbobot ini saat memilih kemungkinan transkripsi untuk kata-kata dalam data audio Anda. Semakin tinggi nilainya, semakin tinggi kemungkinan Speech-to-Text memilih kata atau frasa tersebut dari alternatif yang memungkinkan.

Misalnya, Anda ingin menetapkan nilai penguatan untuk frasa "My favorite exhibit at the American Museum of Natural History is the blue whale" (Objek favorit saya di American Museum of Natural History adalah ikan paus biru). Jika Anda menambahkan frasa tersebut ke objek phrase dan menetapkan nilai penguatan, model pengenalan akan lebih cenderung mengenali frasa tersebut secara keseluruhan, kata demi kata.

Jika Anda tidak mendapatkan hasil yang diinginkan dengan penguatan frasa multi-kata, sebaiknya tambahkan semua bigram (2 kata berurutan) yang membentuk frasa tersebut sebagai tambahan phrase item dan tetapkan nilai penguatan ke setiap item. Melanjutkan contoh di atas, Anda dapat menyelidiki penambahan bigram dan N-gram tambahan (lebih dari 2 kata) seperti "my favorite", "my favorite exhibit", "favorite exhibit", "my favorite exhibit at the American Museum of Natural History", "American Museum of Natural History", "blue whale", dan sebagainya. Model pengenalan Speech-to-Text lebih mungkin mengenali frasa terkait dalam audio Anda yang berisi bagian dari frasa asli yang diberi penguatan, tetapi tidak mencocokkannya kata demi kata.

Menetapkan nilai penguatan

Nilai penguatan harus berupa nilai float yang lebih besar dari 0. Batas maksimum praktis untuk nilai penguatan adalah 20. Untuk mendapatkan hasil terbaik, lakukan eksperimen dengan hasil transkripsi dengan menaikkan atau menurunkan nilai penguatan sampai Anda mendapatkan hasil transkripsi yang akurat.

Nilai penguatan yang lebih tinggi dapat menghasilkan negatif palsu (NP) yang lebih sedikit, yang merupakan kasus ketika kata atau frasa muncul dalam audio, tetapi tidak dikenali dengan benar oleh Speech-to-Text. Namun, penguatan juga dapat meningkatkan kemungkinan positif palsu (PP); yaitu kasus saat kata atau frasa muncul dalam transkripsi meskipun tidak muncul dalam audio.

Mendapatkan notifikasi waktu tunggu

Respons Speech-to-Text mencakup kolom SpeechAdaptationInfo, yang memberikan informasi tentang perilaku adaptasi model selama pengenalan. Jika terjadi waktu tunggu yang terkait dengan adaptasi model, adaptationTimeout akan menjadi true dan timeoutMessage akan menentukan konfigurasi adaptasi mana yang menyebabkan waktu tunggu habis. Saat waktu tunggu habis, adaptasi model tidak akan memengaruhi transkrip yang ditampilkan.

Contoh kasus penggunaan yang menggunakan adaptasi model

Contoh berikut memandu Anda melalui proses penggunaan adaptasi model untuk mentranskripsikan rekaman audio seseorang yang mengucapkan "call me fionity and oh my gosh what do we have here ionity". Dalam hal ini, penting bagi model untuk mengidentifikasi "fionity" dan "ionity" dengan benar.

Perintah berikut melakukan pengenalan pada audio tanpa adaptasi model. Transkripsi yang dihasilkan salah: "call me Fiona tea and oh my gosh what do we have here I own a day".

   curl -H "Authorization: Bearer $(gcloud auth
   --impersonate-service-account=$SA_EMAIL print-access-token)" -H
   "Content-Type: application/json; charset=utf-8"
   "https://speech.googleapis.com/v1p1beta1/speech:recognize" -d '{"config":
   {"languageCode": "en-US"}, "audio":
   {"uri":"gs://biasing-resources-test-audio/call_me_fionity_and_ionity.wav"}}'
   

Contoh permintaan:

     {
       "config":{
       "languageCode":"en-US"
       },
       "audio":{
          "uri":"gs://biasing-resources-test-audio/call_me_fionity_and_ionity.wav"
       }
     }
   

Tingkatkan transkripsi menggunakan PhraseSet

  1. Buat PhraseSet:

    curl -X POST -H "Authorization: Bearer $(gcloud auth
    --impersonate-service-account=$SA_EMAIL print-access-token)" -H
    "Content-Type: application/json; charset=utf-8"
    "https://speech.googleapis.com/v1p1beta1/projects/project_id/locations/global/phraseSets"
    -d '{"phraseSetId": "test-phrase-set-1"}'
    

    Contoh permintaan:

    {
       "phraseSetId":"test-phrase-set-1"
    }
    
  2. Dapatkan PhraseSet:

    curl -X GET -H "Authorization: Bearer $(gcloud auth
    --impersonate-service-account=$SA_EMAIL print-access-token)" -H
    "Content-Type: application/json; charset=utf-8"
    "https://speech.googleapis.com/v1p1beta1/projects/project_id>/locations/global/phraseSets/test-phrase-set-1"\
    
  3. Tambahkan frasa "fionity" dan "ionity" ke PhraseSet dan tetapkan nilai boost sebesar 10 untuk setiap frasa:

    curl -X PATCH -H "Authorization: Bearer $(gcloud auth
    --impersonate-service-account=$SA_EMAIL print-access-token)" -H
    "Content-Type: application/json; charset=utf-8"
    "https://speech.googleapis.com/v1p1beta1/projects/project_id/locations/global/phraseSets/test-phrase-set-1?updateMask=phrases"\
    -d '{"phrases": [{"value": "ionity", "boost": 10}, {"value": "fionity", "boost": 10}]}'
    

    PhraseSet kini diperbarui menjadi:

    {
      "phrases":[
         {
              "value":"ionity",
              "boost":10
           },
           {
              "value":"fionity",
              "boost":10
           }
        ]
     }
    
  4. Kenali audio lagi, kali ini menggunakan adaptasi model dan PhraseSetyang telah dibuat sebelumnya. Hasil transkripsi sekarang benar: "call me fionity and oh my gosh what do we have here ionity".

    curl -H "Authorization: Bearer $(gcloud auth --impersonate-service-account=$SA_EMAIL print-access-token)"
    -H "Content-Type: application/json; charset=utf-8"
    "https://speech.googleapis.com/v1p1beta1/speech:recognize" -d '{"config":
    {"adaptation": {"phrase_set_references": ["projects/project_id/locations/global/phraseSets/test-phrase-set-1"]},
    "languageCode": "en-US"}, "audio": {"uri":"gs://biasing-resources-test-audio/call_me_fionity_and_ionity.wav"}}'
    

    Contoh permintaan:

    {
       "config":{
          "adaptation":{
             "phrase_set_references":[
                "projects/project_id/locations/global/phraseSets/test-phrase-set-1"
             ]
          },
          "languageCode":"en-US"
       },
       "audio":{
          "uri":"gs://biasing-resources-test-audio/call_me_fionity_and_ionity.wav"
       }
    }
    

Tingkatkan hasil transkripsi menggunakan CustomClass

  1. Buat CustomClass:

    curl -X POST -H "Authorization: Bearer $(gcloud auth
    --impersonate-service-account=$SA_EMAIL print-access-token)" -H
    "Content-Type: application/json; charset=utf-8"
    "https://speech.googleapis.com/v1p1beta1/projects/project_id/locations/global/customClasses"
    -d '{"customClassId": "test-custom-class-1"}'
    

    Contoh permintaan:

    {
       "customClassId": "test-custom-class-1"
    }
    
  2. Dapatkan CustomClass:

     curl -X GET -H "Authorization: Bearer $(gcloud auth
     --impersonate-service-account=$SA_EMAIL print-access-token)" -H
     "Content-Type: application/json; charset=utf-8"
     "https://speech.googleapis.com/v1p1beta1/projects/project_id/locations/global/customClasses/test-custom-class-1"
     

  3. Kenali klip audio pengujian. CustomClass kosong, sehingga transkripsi yang ditampilkan masih salah: "call me Fiona tea and oh my gosh what do we have here I own a day":

    curl -H "Authorization: Bearer $(gcloud auth
    --impersonate-service-account=$SA_EMAIL print-access-token)" -H
    "Content-Type: application/json; charset=utf-8"
    "https://speech.googleapis.com/v1p1beta1/speech:recognize" -d '{"config":
    {"adaptation": {"phraseSets": [{"phrases": [{"value":
    "${projects/project_idlocations/global/customClasses/test-custom-class-1}",
    "boost": "10"}]}]}, "languageCode": "en-US"}, "audio":
    {"uri":"gs://biasing-resources-test-audio/call_me_fionity_and_ionity.wav"}}'
    

    Contoh permintaan:

      {
       "config":{
          "adaptation":{
             "phraseSets":[
                {
                   "phrases":[
                      {
                         "value":"${projects/project_id/locations/global/customClasses/test-custom-class-1}",
                         "boost":"10"
                      }
                   ]
                }
             ]
          },
          "languageCode":"en-US"
       },
       "audio":{
          "uri":"gs://biasing-resources-test-audio/call_me_fionity_and_ionity.wav"
       }
     }
    
  4. Tambahkan frasa "fionity" dan "ionity" ke class kustom:

    curl -X PATCH -H "Authorization: Bearer $(gcloud auth
    --impersonate-service-account=$SA_EMAIL print-access-token)" -H
    "Content-Type: application/json; charset=utf-8"
    "https://speech.googleapis.com/v1p1beta1/projects/project_id/locations/global/customClasses/test-custom-class-1?updateMask=items"
    -d '{"items": [{"value": "ionity"}, {"value": "fionity"}]}'
    

    Tindakan ini akan memperbarui class kustom menjadi seperti berikut:

    {
       "items":[
          {
             "value":"ionity"
          },
          {
             "value":"fionity"
          }
       ]
    }
    
  5. Kenali kembali sampel audio, kali ini dengan "fionity" dan "ionity" di CustomClass. Transkripnya sekarang benar: "call me fionity and oh my gosh what do we have here ionity".

    curl -H "Authorization: Bearer $(gcloud auth
    --impersonate-service-account=$SA_EMAIL print-access-token)" -H
    "Content-Type: application/json; charset=utf-8"
    "https://speech.googleapis.com/v1p1beta1/speech:recognize" -d '{"config":
    {"adaptation": {"phraseSets": [{"phrases": [{"value":
    "${projects/project_id/locations/global/customClasses/test-custom-class-1}",
    "boost": "10"}]}]}, "languageCode": "en-US"}, "audio":
    {"uri":"gs://biasing-resources-test-audio/call_me_fionity_and_ionity.wav"}}'
    

    Contoh permintaan:

    {
       "config":{
          "adaptation":{
             "phraseSets":[
                {
                   "phrases":[
                      {
    "value":"${projects/project_id/locations/global/customClasses/test-custom-class-1}",
                         "boost":"10"
                      }
                   ]
                }
             ]
          },
          "languageCode":"en-US"
       },
       "audio":{
          "uri":"gs://biasing-resources-test-audio/call_me_fionity_and_ionity.wav"
       }
    }
    

Rujuk ke CustomClass di PhraseSet

  1. Update resource PhraseSet yang dibuat sebelumnya untuk merujuk ke CustomClass:

    curl -X PATCH -H "Authorization: Bearer $(gcloud auth
    --impersonate-service-account=$SA_EMAIL print-access-token)" -H
    "Content-Type: application/json; charset=utf-8"
    "https://speech.googleapis.com/v1p1beta1/projects/project_id/locations/global/phraseSets/test-phrase-set-1?updateMask=phrases"
    -d '{"phrases": [{"value": "${projects/project_id/locations/global/customClasses/test-custom-class-1}", "boost": 10}]}'
    

    Contoh permintaan:

    {
       "config":{
          "adaptation":{
             "phraseSets":[
                {
                   "phrases":[
                      {
                         "value":"${projects/project_id/locations/global/customClasses/test-custom-class-1}",
                         "boost":"10"
                      }
                   ]
                }
             ]
          },
          "languageCode":"en-US"
       },
       "audio":{
          "uri":"gs://biasing-resources-test-audio/call_me_fionity_and_ionity.wav"
       }
    }
    
  2. Kenali audio menggunakan resource PhraseSet (yang merujuk pada CustomClass). Transkripnya benar: "call me fionity and oh my gosh what do we have here ionity".

    curl -H "Authorization: Bearer $(gcloud auth
    --impersonate-service-account=$SA_EMAIL print-access-token)" -H
    "Content-Type: application/json; charset=utf-8"
    "https://speech.googleapis.com/v1p1beta1/speech:recognize" -d '{"config":
    {"adaptation": {"phrase_set_references":
    ["projects/project_id/locations/global/phraseSets/test-phrase-set-1"]},
    "languageCode": "en-US"}, "audio":
    {"uri":"gs://biasing-resources-test-audio/call_me_fionity_and_ionity.wav"}}'
    

    Contoh permintaan:

    {
       "phrases":[
          {
             "value":"${projects/project_id/locations/global/customClasses/test-custom-class-1}",
             "boost":10
          }
       ]
    }
    

Hapus CustomClass dan PhraseSet

  1. Hapus PhraseSet.

    curl -X DELETE -H "Authorization: Bearer $(gcloud auth
    --impersonate-service-account=$SA_EMAIL print-access-token)" -H
    "Content-Type: application/json; charset=utf-8"
    "https://speech.googleapis.com/v1p1beta1/projects/project_id/locations/global/phraseSets/test-phrase-set-1"
    
  2. Hapus CustomClass.

    curl -X DELETE -H "Authorization: Bearer $(gcloud auth
    --impersonate-service-account=$SA_EMAIL print-access-token)" -H
    "Content-Type: application/json; charset=utf-8"
    "https://speech.googleapis.com/v1p1beta1/projects/project_id/locations/global/customClasses/test-custom-class-1"
    

Tingkatkan hasil transkripsi menggunakan ABNF Grammar

  1. Kenali audio menggunakan abnf_grammar. Contoh ini merujuk ke resource CustomClass: projects/project_id/locations/global/customClasses/test-custom-class-1, CustomClass inline: test-custom-class -2, token class: ADDRESSNUM, dan resource PhraseSet: projects/project_id/locations/global/phraseSets/test-phrase-set-1. Aturan pertama dalam string (setelah deklarasi eksternal) akan diperlakukan sebagai root.

    Contoh permintaan:

    {
       "config":{
          "adaptation":{
             "abnf_grammar":{
                "abnf_strings": [
                  "external ${projects/project_id/locations/global/phraseSets/test-phrase-set-1}" ,
                  "external ${projects/project_id/locations/global/customClasses/test-custom-class-1}" ,
                  "external ${test-custom-class-2}" ,
                  "external $ADDRESSNUM" ,
                  "$root = $test-phrase-set-1 $name lives in $ADDRESSNUM;" ,
                  "$name = $title $test-custom-class-1 $test-custom-class-2" ,
                  "$title = Mr | Mrs | Miss | Dr | Prof ;"
                ]
             }
          }
       }
    }
    

Langkah selanjutnya