Panoramica
Puoi utilizzare la funzionalità di adattamento dei modelli per aiutare Speech-to-Text a riconoscere parole o frasi specifiche più spesso di altre opzioni che potrebbero essere altrimenti suggerite. Ad esempio, supponiamo che i tuoi dati audio spesso includano la parola "meteo". Quando Speech-to-Text rileva la parola "meteo", vuoi che trascriva la parola come "meteo" più spesso di "che". In questo caso, potresti utilizzare l'adattamento del modello per bias a Speech-to-Text in modo da riconoscere "meteo".
L'adattamento del modello è particolarmente utile nei seguenti casi d'uso:
Migliorare l'accuratezza di parole e frasi che si verificano di frequente nei dati audio. Ad esempio, puoi inviare un avviso al modello di riconoscimento dei comandi vocali che vengono solitamente utilizzati dagli utenti.
Espandere il 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 del linguaggio generale (ad esempio nomi propri o parole specifiche del dominio), puoi aggiungerle utilizzando l'adattamento del modello.
Migliorare la precisione della trascrizione del parlato quando l'audio fornito contiene rumore o non è molto chiaro.
Per verificare se la funzionalità di adattamento dei modelli è disponibile per la tua lingua, consulta la pagina di assistenza per le lingue.
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 inserisci una frase con più parole, Speech-to-Text è più in grado di riconoscere le parole in sequenza. Se fornisci una frase, aumenta anche la probabilità di riconoscerne parti, incluse le singole parole. Consulta la pagina Limiti di contenuti per conoscere i limiti relativi al numero e alle dimensioni di queste frasi.
In via facoltativa, puoi ottimizzare l'adattamento del modello utilizzando la funzionalità di boosting di adattamento del modello.
Migliora il riconoscimento con i corsi
Le classi rappresentano concetti comuni che si utilizzano nel linguaggio naturale, come unità monetarie e date del calendario. Una classe ti 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 la propria via. Potresti sentire la registrazione audio di una persona 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 ("centoventitré"). Tuttavia, non tutti vivono in "Via Verdi 123". Non è pratico elencare ogni possibile indirizzo stradale 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", perché sono entrambe riconosciute 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 scoprire quali sono i token disponibili per la tua lingua. Ad esempio, per migliorare la trascrizione dei numeri degli indirizzi dall'audio di origine, fornisci il valore $ADDRESSNUM
nell'oggetto SpeechContext
.
Puoi utilizzare le classi come elementi autonomi nell'array phrases
o incorporare uno o più token di classe in frasi più lunghe. Ad esempio, puoi indicare un numero indirizzo in una frase più grande includendo il token della classe in una stringa: ["my address is $ADDRESSNUM"]
. Tuttavia, questa frase non è utile nei casi in cui l'audio contenga una frase simile ma non identica, ad esempio "Sono in 123 Main Street". Per facilitare 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 con formato non valido, Speech-to-Text ignora il token senza attivare un errore, ma utilizza comunque il resto della frase per contesto.
Lezioni personalizzate
Puoi anche creare CustomClass
, una classe composta dal tuo elenco personalizzato di elementi o valori correlati. Ad esempio, se vuoi trascrivere dati audio che probabilmente includono il nome di una delle varie centinaia di 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 biaspare il modello di riconoscimento nell'identificare correttamente questi nomi quando vengono visualizzati nel tuo audio utilizzando una classe personalizzata.
Per utilizzare una classe personalizzata, crea una risorsa CustomClass
che includa ogni nome di ristorante come ClassItem
. Le classi personalizzate funzionano come i token predefiniti del corso. phrase
può
includere sia token preconfigurati che classi personalizzate.
Grammatiche ABNF
Puoi anche utilizzare una grammatica in forma ABNF (Backus-Naur) aumentata per specificare modelli di parole. L'inclusione di una grammatica ABNF nell'adattamento del modello della richiesta incrementerà la probabilità che Speech-to-Text riconosca tutte le parole che corrispondono alla grammatica specificata.
Per utilizzare questa funzionalità, includi un oggetto ABNF
grammar
nel campo SpeechAdaptation
della richiesta. Le grammatica di ABNF possono includere anche riferimenti a risorse di CustomClass
e PhraseSet
. Per scoprire di più sulla sintassi per questo campo, consulta Speech Recognition Grammar Specification
e il nostro code sample
di seguito.
Ottimizza i risultati della trascrizione utilizzando la modalità turbo
Per impostazione predefinita, l'adattamento del modello dovrebbe già fornire un effetto sufficiente nella maggior parte dei casi. L'adattamento del modello boost feature consente di aumentare il bias del modello di riconoscimento assegnando più peso ad alcune frasi rispetto ad altre. Ti consigliamo di implementare il boosting solo se 1) hai già implementato l'adattamento del modello e 2) vuoi regolare ulteriormente l'intensità degli effetti di adattamento del modello sui risultati della trascrizione.
Ad esempio, hai molte registrazioni di persone che chiedono "la partecipazione alla fiera della contea", con la parola "fair" che compare 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, in Speech-to-Text sarà in grado di riconoscere "fair" e "fare" più spesso rispetto a "lepre" o "lair".
Tuttavia, "fair" dovrebbe essere riconosciuto più spesso di "fare" a causa delle sue più frequenti apparizioni nell'audio. Potresti aver già trascritto l'audio utilizzando l'API Speech-to-Text e rilevato un numero elevato di errori che riconoscono la parola corretta ("fair"). In questo caso, potresti utilizzare anche le frasi con boost per assegnare un valore di booster maggiore a "fair" rispetto a "fare". Il valore più alto assegnato a "fair" fa sì che l'API Speech-to-Text prenda in considerazione l'uso di "fair" più spesso di "fare". Senza valori di boosting, il modello di riconoscimento riconoscerà "fair" e "fare" con pari probabilità.
Nozioni di base sul boosting
Quando utilizzi il booster, assegni un valore ponderato a phrase
elementi in una
PhraseSet
risorsa. Speech-to-Text fa riferimento a questo valore ponderato quando si seleziona una possibile trascrizione per le parole nei dati audio. Più alto è il valore, maggiore è la probabilità che Speech-to-Text scelga tale parola o frase tra le possibili alternative.
Ad esempio, supponiamo che tu voglia assegnare un valore di boosting 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 boosting, il modello di riconoscimento avrà maggiori probabilità di riconoscere la frase nella sua interezza, parola per parola.
Se non ottieni i risultati che stai cercando aumentando una frase composta da più parole, ti consigliamo di aggiungere tutte le colonne dei termini (2 parole, in ordine) che formano la frase come elementi aggiuntivi di phrase
e assegnare a ciascuna di essi un valore di boosting. Riprendendo l'esempio sopra, potresti eseguire indagini sull'aggiunta di ulteriori grammatica e N-grammi (più di 2 parole), come "il mio preferito", "la mia mostra preferita", "la mia mostra preferita", "la mia mostra preferita all'American Museum of Natural History", "American
Museum of Natural History", "balenottera azzurra" e così via. Il modello di riconoscimento Speech-to-Text questo formato ha quindi maggiori probabilità di riconoscere le frasi correlate nel tuo audio che contengono parti della frase originale originale ma non corrispondono a una parola per parola.
Imposta valori boost
I valori boost devono essere maggiori di 0. Il valore massimo pratico per i valori boost è 20. Per risultati migliori, prova a usare i risultati della trascrizione modificando i valori di boosting verso l'alto o verso il basso fino a ottenere risultati di trascrizione precisi.
Valore di boosting più elevato può comportare meno falsi negativi, ovvero casi in cui la parola o la frase si è verificata 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 compare nella trascrizione anche se non è avvenuta nell'audio.
Ricevi notifiche di timeout
Le risposte Speech-to-Text includono un campo SpeechAdaptationInfo
, che fornisce informazioni sul comportamento di adattamento del modello durante il riconoscimento. Se si è verificato un timeout relativo all'adattamento del modello, adaptationTimeout
sarà true
e timeoutMessage
specificherà quale configurazione di adattamento ha causato il timeout. Quando si verifica un timeout, l'adattamento del modello non ha effetto sulla trascrizione restituita.
Esempio di utilizzo per l'utilizzo del modello
L'esempio seguente ti accompagna nella procedura di utilizzo dell'adattamento del modello per trascrivere una registrazione audio di una persona che dice "Chiamami fenomenale e oh oh mio Dio, che cosa abbiamo qui? In questo caso è importante che il modello identifichi correttamente "fionity" e "ionity".
Il seguente comando esegue il riconoscimento dell'audio senza adattamento del modello. La trascrizione risultante è errata: "chiamami tè Fiona e oh oh mio Dio, cosa abbiamo qui che ho 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 utilizzando un PhraseSet
Crea una
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" }
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"\
Aggiungi le frasi "fionity" e "ionity" a
PhraseSet
e assegna un valoreboost
di 10 a ciascuna: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 e aggiornato:{ "phrases":[ { "value":"ionity", "boost":10 }, { "value":"fionity", "boost":10 } ] }
Premi di nuovo l'audio, questa volta utilizzando l'adattamento del modello e
PhraseSet
l'annuncio creato in precedenza. I risultati trascritti sono ora corretti: "chiamami affollamento e oh mio Dio, che cosa abbiamo 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:
{ "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 usando una classe CustomClass
Crea una
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" }
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"
Riconosci il clip audio del test.
CustomClass
è vuoto, quindi la trascrizione restituita è ancora sbagliata: "chiamami tè Fiona e oh oh mio Dio, cosa abbiamo qui oggi?".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" } }
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" } ] }
Riconosci di nuovo l'audio di esempio, questa volta con "fionity" e "ionity" in
CustomClass
. La trascrizione ora è corretta: "chiamami affollamento e oh, mio Dio che cosa abbiamo 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
Aggiorna la risorsa
PhraseSet
creata in precedenza per fare riferimento aCustomClass
: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" } }
Riconoscere l'audio utilizzando la risorsa
PhraseSet
(che fa riferimento aCustomClass
). La trascrizione è corretta: "Chiamami affollamento e oh oh mio Dio! Che cosa abbiamo 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
Elimina
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"
Elimina
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"
Migliora i risultati della trascrizione usando una classe ABNF Grammar
Riconoscere l'audio utilizzando un
abnf_grammar
. Questo esempio si riferisce a una risorsaCustomClass
: projects/project_id/locations/global/customClass/test-custom-class-1 e a una risorsaPhraseSet
: projects/project_id/locations/global/phraseSets/test-phrase-set-1.Esempio di richiesta:
{ "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" , "$root = $test-phrase-set-1 $name;" , "$name = $title $test-custom-class-1" , "$title = Mr | Mrs | Miss | Dr | Prof ;" ] } } } }
Passaggi successivi
- Scopri come utilizzare l'adattamento del modello in una richiesta a Speech-to-Text.
- Consulta l'elenco dei token di classe supportati.