Miglioramento dei risultati della trascrizione con l'adattamento del modello

Mantieni tutto organizzato con le raccolte Salva e classifica i contenuti in base alle tue preferenze.

Panoramica

Puoi utilizzare la funzionalità di adattamento del modello per consentire a Speech-to-Text di riconoscere parole o frasi specifiche più spesso di altre opzioni che altrimenti potrebbero essere suggerite. Ad esempio, supponiamo che i tuoi dati audio spesso includano la parola "meteo". Quando Speech-to-Text rileva la parola "meteo", vuoi che trascrivi la parola come "meteo" più spesso di "se". In questo caso, potresti utilizzare l'adattamento del modello per bias e una Speech-to-Text per riconoscere il "meteo".

L'adattamento del modello è particolarmente utile nei seguenti casi d'uso:

  • Migliorare l'accuratezza delle parole e delle frasi che si verificano di frequente nei dati audio. Ad esempio, puoi inviare avvisi al modello di riconoscimento ai comandi vocali che vengono solitamente pronunciati dagli utenti.

  • Espansione del vocabolario delle parole riconosciute da Speech-to-Text Speech-to-Text include un vocabolario molto grande. Tuttavia, se i dati audio spesso contengono parole rare nell'uso generale del linguaggio (ad esempio nomi propri o parole specifiche del dominio), puoi aggiungerle usando il modello di adattamento.

  • Migliorare la precisione della trascrizione del parlato quando l'audio fornito contiene rumore o non è molto chiaro.

Facoltativamente, puoi perfezionare la differenziazione del modello di riconoscimento utilizzando la funzionalità di boost di adattamento del modello.

Migliora il riconoscimento di parole e frasi

Per aumentare la probabilità che Speech-to-Text riconosca la parola "meteo" quando trascrive i tuoi dati audio, puoi passare la singola parola "meteo" nell'oggetto PhraseSet in una risorsa SpeechAdaptation.

Quando fornisci una frase composta da più parole, Speech-to-Text ha maggiori probabilità di riconoscere le parole in sequenza. Se fornisci una frase, aumenti anche la probabilità di riconoscere parti della frase, incluse singole parole. Consulta la pagina Limiti di contenuti per conoscere i limiti relativi al numero e alle dimensioni di queste frasi.

Migliorare il riconoscimento utilizzando i corsi

Le classi rappresentano concetti comuni che si verificano in un linguaggio naturale, come unità monetarie e date di calendario. Un corso consente di migliorare la precisione della trascrizione per grandi gruppi di parole che corrispondono a un concetto comune, ma che non includono sempre parole o frasi identiche.

Ad esempio, supponiamo che i tuoi dati audio includano le registrazioni di persone che dicono il loro indirizzo. Potresti avere una registrazione audio di qualcuno che dice "La mia casa è 123 Main Street, la quarta casa sulla sinistra". In questo caso, vuoi che Speech-to-Text riconosca la prima sequenza di numeri ("123") come indirizzo anziché come ordinale ("centoventitre"). Tuttavia, non tutte le persone vivono all'indirizzo 123 Main Street. Non è pratico elencare ogni possibile indirizzo in una risorsa PhraseSet. Puoi invece utilizzare una classe per indicare che un numero civico deve essere riconosciuto a prescindere dal numero effettivo. In questo esempio, Speech-to-Text potrebbe quindi trascrivere in modo più accurato frasi come "123 Main Street" e "987 Grand Boulevard", poiché sono entrambi riconosciuti come numeri di indirizzo.

Token di classe

Per utilizzare una classe nell'adattamento del modello, includi un token di classe nel campo phrases di una risorsa PhraseSet. Consulta l'elenco dei token di classe supportati per vedere quali token sono disponibili per la tua lingua. Ad esempio, per migliorare la trascrizione dei numeri di indirizzo dall'audio di origine, fornisci il valore $ADDRESSNUM nell'oggetto SpeechContext.

Puoi utilizzare le classi come elementi autonomi nell'array di phrases oppure per incorporare uno o più token di classe in frasi composte da più parole. Ad esempio, puoi indicare un numero di indirizzo in una frase più grande includendo il token della classe in una stringa: ["my address is $ADDRESSNUM"]. Tuttavia, questa frase non è di aiuto nei casi in cui l'audio contenga una frase simile, ma non identica, come "Sono in 123 Main Street". Per favorire il riconoscimento di frasi simili, è importante includere anche il token del corso da solo: ["my address is $ADDRESSNUM", "$ADDRESSNUM"]. Se utilizzi un token di classe non valido o non valido, Speech-to-Text ignora il token senza attivare un errore, ma utilizza comunque il resto della frase per il contesto.

Corsi personalizzati

Puoi anche creare un CustomClass personalizzato, una classe composta dal tuo elenco personalizzato di elementi o valori correlati. Ad esempio, trascrivi dati audio che potrebbero contenere il nome di uno dei vari ristoranti regionali. I nomi dei ristoranti sono relativamente rari nel discorso generale e pertanto sono meno propensi a essere scelti come risposta "corretta" dal modello di riconoscimento. Puoi differenziare il modello di riconoscimento in modo che identifichi correttamente questi nomi quando appaiono nel tuo audio utilizzando una classe personalizzata.

Per utilizzare una classe personalizzata, crea una risorsa CustomClass che includa il nome di ogni ristorante come ClassItem. Le classi personalizzate funzionano allo stesso modo dei token di classe predefiniti. Un phrase può includere sia token preconfigurati che classi personalizzate.

Ottimizza i risultati della trascrizione usando la modalità Boost

Per impostazione predefinita, l'adattamento del modello fornisce un effetto relativamente piccolo, soprattutto per le frasi di una parola. La funzionalità di aumento del volume dell'adattamento del modello consente di aumentare la distorsione del modello di riconoscimento assegnando un peso maggiore ad alcune frasi rispetto ad altre. Ti consigliamo di implementare il booster se 1) hai già implementato l'adattamento del modello e 2) vuoi regolare ulteriormente l'intensità degli effetti di adattamento del modello nei risultati di trascrizione. Per verificare se la funzionalità boost è disponibile per la tua lingua, consulta la pagina di assistenza per le lingue.

Ad esempio, hai molte registrazioni di persone che fanno domande sulla "tariffa per arrivare alla fiera della contea", con la parola "fair" che si verifica più spesso di "fare". In questo caso, puoi utilizzare l'adattamento del modello per aumentare la probabilità che il modello riconosca "fair" e "fare" aggiungendoli come phrases in una risorsa PhraseSet. In questo modo, Speech-to-Text riconoscerà "fair" e "fare" più spesso di quanto non sia, ad esempio, "hare" o "lair".

Tuttavia, il termine "fair" dovrebbe essere riconosciuto più spesso di "fare" a causa delle sue apparizioni più frequenti nell'audio. Forse hai già trascritto l'audio utilizzando l'API Speech-to-Text e trovato un numero elevato di errori che riconoscono la parola corretta ("fair"). In questo caso, potresti utilizzare la funzionalità boost per assegnare un valore di aumento superiore a "fair" rispetto a "fare". Il valore ponderato più elevato assegnato a "fair" privilegia l'utilizzo dell'API Speech-to-Text per scegliere "fair" più frequentemente di "fare". Senza valori boost, il modello di riconoscimento riconoscerà il "fair" e il "fare" con la stessa probabilità.

Nozioni di base su boost

Quando utilizzi il booster, assegni un valore ponderato agli elementi phrase in una risorsa PhraseSet. Speech-to-Text si riferisce a questo valore ponderato quando si seleziona una possibile trascrizione delle parole nei dati audio. Più elevato è il valore, maggiore è la probabilità che Speech-to-Text scelga tale parola o frase tra le possibili alternative.

Se assegni un valore di aumento a una frase composta da più parole, il valore viene applicato all'intera frase e solo all'intera frase. Ad esempio, se vuoi assegnare un valore di potenziamento alla frase "La mia mostra preferita all'American Museum of Natural History è la balena blu". Se aggiungi la frase a un oggetto phrase e assegni un valore di aumento di priorità, il modello di riconoscimento avrà maggiori probabilità di riconoscere la frase nella sua interezza, parola per parola.

Se non ottieni i risultati che cerchi aumentando una frase di più parole, ti consigliamo di aggiungere tutti i bigram (2 parole, in ordine) che compongono la frase come elementi phrase aggiuntivi e assegnare valori di aumento a ciascuno. Continuando nell'esempio precedente, puoi prendere in considerazione l'aggiunta di altri bigrama e endgrammi (più di 2 parole), come "la mia preferita", "la mia mostra preferita", "la mia mostra preferita", "la mia mostra preferita all'American Museum of Natural History", "il Museo americano di storia naturale", "la balena blu" e così via. È quindi più probabile che il modello di riconoscimento STT riconosca le frasi correlate nell'audio che contengono parti della frase originale aumentata, ma non corrispondono parola per parola.

Imposta i valori del booster

I valori boost devono essere un valore in virgola mobile maggiore di 0. Il limite massimo pratico per i valori boost è 20. Per ottenere i migliori risultati, prova i tuoi risultati di trascrizione aumentando o diminuendo i valori di boost fino a ottenere risultati di trascrizione precisi.

Valori di aumento più elevati possono comportare meno falsi negativi, che si verificano nei casi in cui la parola o la frase è stata presente nell'audio, ma non è stata riconosciuta correttamente da Speech-to-Text. Tuttavia, il boosting può anche aumentare la probabilità di falsi positivi, ovvero casi in cui la parola o la frase appare nella trascrizione anche se non è avvenuta nell'audio.

Esempio di utilizzo per l'adattamento del modello

L'esempio seguente illustra la procedura di utilizzo dell'adattamento del modello per trascrivere una registrazione audio di una persona che dice "Chiamami bontà e caspita, che ne dici? In questo caso è importante che il modello identifichi correttamente "fionity" e "ionity".

Il comando seguente esegue il riconoscimento sull'audio senza adattamento del modello. La trascrizione che ne risulta è errata: "chiamami Fiona tea e oh mio Dio, cosa ho qui che possiedo un giorno?"

   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"}}'
   

Esempio di richiesta:

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

Migliora la trascrizione usando PhraseSet

  1. Crea un 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"}'
    

    Esempio di richiesta:

    {
       "phraseSetId":"test-phrase-set-1"
    }
    
  2. Scarica 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. Aggiungi le frasi "fionity" e "ionity" a PhraseSet e assegna un valore boost di 10 a ognuna:

    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 è stato aggiornato a:

    {
      "phrases":[
         {
              "value":"ionity",
              "boost":10
           },
           {
              "value":"fionity",
              "boost":10
           }
        ]
     }
    
  4. Riconoscere l'audio di nuovo, questa volta utilizzando l'adattamento del modello e PhraseSetcreato in precedenza. I risultati trascritti sono ora corretti: "Chiamami bontà, e caspita, che ne dici?

    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"}}'
    

    Esempio di richiesta:

    {
       "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"
       }
    }
    

Migliora i risultati della trascrizione utilizzando un CustomClass

  1. Crea un 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"}'
    

    Esempio di richiesta:

    {
       "phraseSetId":"test-phrase-set-1"
    }
    
  2. Scarica 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. Riconoscere il clip audio di prova. Il campo CustomClass è vuoto, pertanto la trascrizione restituita è ancora errata: "Chiamami Fiona tea e oh da Dio, che cosa abbiamo qui? Possiedo un giorno":

    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"}}'
    

    Esempio di richiesta:

      {
       "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. Aggiungi le frasi "fionity" e "ionity" alla classe personalizzata:

    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"}]}'
    

    La classe personalizzata viene aggiornata come segue:

    {
       "items":[
          {
             "value":"ionity"
          },
          {
             "value":"fionity"
          }
       ]
    }
    
  5. Riconosci di nuovo l'audio di esempio, questa volta con "fionity" e "ionity" in CustomClass. La trascrizione ora è corretta: "Chiamami bontà e oh mio Dio. Che c'è qui?

    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"}}'
    

    Esempio di richiesta:

    {
       "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"
       }
    }
    

Fai riferimento a un CustomClass in PhraseSet

  1. Aggiorna la risorsa PhraseSet creata in precedenza per fare riferimento a 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}]}'
    

    Esempio di richiesta:

    {
       "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. Riconoscere l'audio utilizzando la risorsa PhraseSet (che fa riferimento alla CustomClass). La trascrizione è corretta: "Chiamami fionity e oh mio Dio che c'è qui".

    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"}}'
    

    Esempio di richiesta:

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

Elimina CustomClass e PhraseSet

  1. Elimina la 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. Elimina la 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"
    

Passaggi successivi