Questo documento è una guida alle nozioni di base sull'utilizzo di Speech-to-Text. Questa guida concettuale illustra i tipi di richieste che puoi effettuare a Speech-to-Text, come creare queste richieste e come a gestire le sue risposte. Prima di iniziare a utilizzare l'API stessa, consigliamo a tutti gli utenti di Speech-to-Text di leggere questa guida e uno dei tutorial associati.
Provalo
Se non hai mai utilizzato Google Cloud, crea un account per valutare in che modo Speech-to-Text funziona nel mondo reale diversi scenari. I nuovi clienti ricevono anche 300 $ di crediti gratuiti per l'esecuzione, il test e il deployment dei carichi di lavoro.
Prova Speech-to-Text gratuitamenteRichieste vocali
Speech-to-Text prevede tre metodi principali per eseguire il riconoscimento vocale. Si tratta di elencate di seguito:
Il riconoscimento sincrono (REST e gRPC) invia i dati audio all'API Speech-to-Text, esegue il riconoscimento sui dati e restituisce i risultati dopo tutto l'audio è stata elaborata. Le richieste di riconoscimento sincrono sono limitate ai dati audio di durata pari o inferiore a 1 minuto.
Il riconoscimento asincrono (REST e gRPC) invia i dati audio all'API Speech-to-Text e avvia un'operazione a lunga esecuzione. Utilizzando questa operazione, puoi con un sondaggio periodico per ottenere i risultati del riconoscimento. Utilizza richieste asincrone per dati audio di qualsiasi durata fino a 480 minuti.
Il riconoscimento in streaming (solo gRPC) esegue il riconoscimento dei dati audio forniti all'interno di uno stream bidirezionale gRPC. Le richieste di streaming sono progettate per scopi di riconoscimento in tempo reale, ad esempio per acquisire audio in tempo reale da un microfono. Il riconoscimento in streaming fornisce risultati intermedi durante l'acquisizione dell'audio, consentendo la visualizzazione del risultato, ad esempio, mentre un utente sta ancora parlando.
Le richieste contengono parametri di configurazione e dati audio. Le seguenti queste sezioni descrivono questo tipo di richieste di riconoscimento, le risposte che generate e come gestirle in modo più dettagliato.
Riconoscimento dell'API Speech-to-Text
Una richiesta di riconoscimento sincrono dell'API Speech-to-Text è il metodo più semplice per eseguire il riconoscimento sui dati audio vocali. Speech-to-Text può elaborare fino a 1 minuto di dati audio vocale inviati in una richiesta sincrona. Dopo Speech-to-Text elabora e riconosce tutto l'audio, restituisce una risposta.
Una richiesta sincrona sta bloccando, il che significa che Speech-to-Text deve e restituire una risposta prima di elaborare la successiva. Speech-to-Text in genere elabora l'audio più velocemente del tempo reale, con l'elaborazione di 30 secondi di audio in media in 15 secondi. In caso di scarsa qualità audio, la richiesta di riconoscimento può richiedere molto più tempo.
Speech-to-Text dispone di metodi sia REST che gRPC per chiamare le richieste sincrone e asincrone dell'API Speech-to-Text. Questo articolo illustra le API REST perché è più semplice mostrare e spiegare l'utilizzo di base dell'API. Tuttavia, la composizione di base di una richiesta REST o gRPC è molto simile. Le richieste di riconoscimento dello streaming sono disponibili solo supportate da gRPC.
Richieste di riconoscimento vocale sincrono
Una richiesta sincrona dell'API Speech-to-Text è composta da una configurazione di riconoscimento vocale e da dati audio. Di seguito è riportata una richiesta di esempio:
{ "config": { "encoding": "LINEAR16", "sampleRateHertz": 16000, "languageCode": "en-US", }, "audio": { "uri": "gs://bucket-name/path_to_audio_file" } }
Tutte le richieste di riconoscimento sincrona dell'API Speech-to-Text devono includere un riconoscimento vocale
Campo config
(di tipo
RecognitionConfig). R
RecognitionConfig
contiene i seguenti campi secondari:
encoding
(obbligatorio) specifica lo schema di codifica del token fornito (di tipoAudioEncoding
). Se puoi scegliere il codec, preferisci una codifica senza perdita di dati comeFLAC
oLINEAR16
per le migliori prestazioni. Per ulteriori informazioni, consulta la sezione Codifiche audio. Il campoencoding
è facoltativo per i fileFLAC
eWAV
in cui il valore la codifica è inclusa nell'intestazione del file.sampleRateHertz
- (obbligatorio) specifica la frequenza di campionamento (in Hertz) del fornito l'audio. Per ulteriori informazioni sulle frequenze di campionamento, consulta la sezione Frequenze di campionamento di seguito. Il camposampleRateHertz
è facoltativo per i fileFLAC
eWAV
in cui la frequenza di campionamento è inclusa nell'intestazione del file.languageCode
- (obbligatorio) contiene la lingua + la regione/regione da utilizzare per il riconoscimento vocale dell'audio fornito. Il codice lingua deve essere un Identificatore BCP-47. Tieni presente che i codici lingua generalmente consistono di tag lingua principali e di sottotag regione secondari per indicare i dialetti (ad esempio, "it" per l'italiano e "US" per gli Stati Uniti nel l'esempio precedente). Per un elenco delle lingue supportate, consulta Lingue supportate.maxAlternatives
(facoltativo, il valore predefinito è1
) indica il numero di trascrizioni alternative da fornire nella risposta. Per impostazione predefinita, L'API Speech-to-Text fornisce una trascrizione principale. Per valutare diverse alternative, impostamaxAlternatives
su un valore più alto. Tieni presente che Text-to-Speech restituirà le alternative solo se il sistema di riconoscimento ritiene che siano di qualità sufficiente. In generale, le alternative sono più appropriate per le richieste in tempo reale che richiedono il feedback dell'utente (ad esempio i comandi vocali) e sono quindi più adatte per le richieste di riconoscimento in streaming.profanityFilter
- (facoltativo) indica se escludere le parole o le frasi profane. Al posto delle parole escluse, verrà visualizzata la prima lettera della parola e un asterisco per ogni carattere rimanente (ad esempio c****). Il filtro per il linguaggio volgare agisce su singole parole e non rileva il linguaggio offensivo o illecito che si presenta sotto forma di frase o combinazione di parole.speechContext
- (facoltativo) contiene informazioni contestuali aggiuntive per l'elaborazione dell'audio. Un contesto contiene i seguenti campi secondari:boost
: contiene un valore che assegna un peso per riconoscere un determinato una parola o una frase.phrases
: contiene un elenco di parole e frasi che forniscono suggerimenti all'attività di riconoscimento vocale. Per ulteriori informazioni, consulta informazioni su adattamento vocale.
L'audio viene fornito a Speech-to-Text tramite il parametro audio
del tipo
RecognitionAudio. La
Il campo audio
contiene uno dei seguenti campi secondari:
content
contiene l'audio da valutare, incorporato nella richiesta. Per saperne di più, consulta la sezione Incorporare contenuti audio di seguito. L'audio trasmesso direttamente all'interno di questo campo ha una durata massima di 1 minuto.uri
contiene un URI che rimanda ai contenuti audio. Il file non deve essere compresso (ad esempio gzip). Al momento, deve contenere un URI Google Cloud Storage (di formatogs://bucket-name/path_to_audio_file
). Consulta: Passaggio del riferimento audio tramite un URI di seguito.
Di seguito sono riportate ulteriori informazioni su questi parametri di richiesta e risposta.
Frequenze di campionamento
La frequenza di campionamento dell'audio deve essere specificata nel campo sampleRateHertz
della configurazione della richiesta e deve corrispondere a quella dei contenuti o dello stream audio associati. Sono supportate frequenze di campionamento comprese tra 8000 Hz e 48.000 Hz
all'interno di Speech-to-Text. Puoi specificare la frequenza di campionamento per un file FLAC
o
WAV
nell'intestazione del file anziché utilizzare il campo sampleRateHertz
.
Un file FLAC
deve contenere la frequenza di campionamento nell'intestazione FLAC
per poter essere inviato all'API Speech-to-Text.
Se puoi scegliere di codificare il materiale di origine, acquisisci l'audio utilizzando una di campionamento a 16000 Hz. Valori inferiori a questo valore potrebbero compromettere il riconoscimento vocale precisione e livelli più alti non influiscono in modo significativo sul riconoscimento vocale qualità.
Tuttavia, se i dati audio sono già stati registrati a una frequenza di campionamento esistente diversa da 16000 Hz, non eseguire il campionamento dell'audio a 16000 Hz. La maggior parte dell'audio di telefonia legacy, ad esempio, utilizza frequenze di campionamento di 8000 Hz, il che potrebbe dare risultati meno accurati. Se devi utilizzare audio di questo tipo, fornisci l'audio al sistema vocale all'API alla sua frequenza di campionamento nativa.
Linguaggi
Il motore di riconoscimento di Speech-to-Text supporta una varietà di lingue e
dialetti. Specifica la lingua (e il dialetto nazionale o regionale) dell'audio nel campo languageCode
della configurazione della richiesta utilizzando un identificatore BCP-47.
Un elenco completo delle lingue supportate per ogni funzionalità è disponibile nella pagina Supporto delle lingue.
Offset temporali (timestamp)
Speech-to-Text può includere valori di offset temporale (timestamp) per l'inizio e la fine di ogni parola pronunciata riconosciuta nell'audio fornito. Un orario rappresenta la quantità di tempo trascorso dall'inizio dell'audio in incrementi di 100 ms.
Gli offset temporali sono particolarmente utili per analizzare i file audio più lunghi, in cui
potrebbe essere necessario cercare una parola particolare nel testo riconosciuto
localizzala (cerca) nell'audio originale. Gli offset temporali sono supportati
i nostri metodi di riconoscimento: recognize
, streamingrecognize
e
longrunningrecognize
.
I valori di offset temporale sono inclusi solo per la prima alternativa fornita in risposta al riconoscimento.
Per includere gli offset di tempo nei risultati della richiesta, imposta il parametroenableWordTimeOffsets
su true nella configurazione della richiesta. Per
di esempio utilizzando l'API REST o le librerie client, consulta
Utilizzo degli scarti temporali (timestamp).
Ad esempio, puoi includere il parametro enableWordTimeOffsets
nella
come mostrato qui:
{ "config": { "languageCode": "en-US", "enableWordTimeOffsets": true }, "audio":{ "uri":"gs://gcs-test-data/gettysburg.flac" } }
Il risultato restituito dall'API Speech-to-Text conterrà i valori di offset temporale per ogni parola riconosciuta, come mostrato di seguito:
{ "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, } ] } ] } }
Selezione del modello
Speech-to-Text può utilizzare uno di diversi modelli di machine learning per trascrivere il file audio. Google ha addestrato questi modelli di riconoscimento vocale per sorgenti e tipi di audio specifici.
Quando invii una richiesta di trascrizione audio a Speech-to-Text, puoi migliorare i risultati che ricevi specificando la sorgente dell'audio originale. Ciò consente API Speech-to-Text per elaborare i file audio utilizzando un addestrato per riconoscere l'audio vocale da quel modello particolare tipo di origine.
Per specificare un modello per il riconoscimento vocale, includi il campo model
nell'oggetto RecognitionConfig
per la richiesta, specificando il modello che vuoi utilizzare.
Consulta l'elenco dei modelli di trascrizione di Speech-to-Text per i modelli di machine learning disponibili.
Contenuti audio incorporati
L'audio incorporato è incluso nella richiesta di riconoscimento vocale quando viene passato un parametro content
all'interno del campo audio
della richiesta. L'audio incorporato fornito come contenuto all'interno di una richiesta gRPC deve essere compatibile con la serializzazione Proto3 e fornito come dati binari. L'audio incorporato fornito come contenuto all'interno di una richiesta REST deve essere compatibile con la serializzazione JSON e deve essere prima codificato in Base64. Consulta:
Codifica Base64 dell'audio per ulteriori informazioni.
Quando crei una richiesta utilizzando
libreria client di Google Cloud,
di solito scriverai questi dati binari (o con codifica Base64)
direttamente nel campo content
.
Passare l'audio a cui fa riferimento un URI
Più in genere, passerai un parametro uri
all'interno del campo
Campo audio
, che punta a un file audio (in formato binario, non in base64)
che si trovano in Google Cloud Storage con il seguente modulo:
gs://bucket-name/path_to_audio_file
Ad esempio, la parte seguente di una richiesta vocale fa riferimento all'audio di esempio file utilizzato nella Guida rapida:
... "audio": { "uri":"gs://cloud-samples-tests/speech/brooklyn.flac" } ...
Devi disporre delle autorizzazioni di accesso appropriate per leggere i file di Google Cloud Storage, in uno dei seguenti modi:
- Leggibili pubblicamente (come i nostri file audio di esempio)
- Leggibile dal tuo account di servizio, se utilizzi l'autorizzazione dell'account di servizio.
- Leggibile da un account utente, se utilizzi OAuth a tre vie per l'autorizzazione dell'account utente.
Ulteriori informazioni sulla gestione dell'accesso a Google Cloud Storage sono disponibili all'indirizzo Creazione e gestione degli elenchi di controllo dell'accesso nella documentazione di Google Cloud Storage.
Risposte dell'API Speech-to-Text
Come indicato in precedenza, una risposta dell'API Speech-to-Text sincrona potrebbe richiedere del tempo per restituire i risultati, in proporzione alla durata dell'audio fornito. Una volta elaborati, l'API restituirà una risposta come mostrato di seguito:
{ "results": [ { "alternatives": [ { "confidence": 0.98267895, "transcript": "how old is the Brooklyn Bridge" } ] } ] }
Questi campi sono descritti di seguito:
results
contiene l'elenco dei risultati (di tipoSpeechRecognitionResult
) dove ogni risultato corrisponde a un segmento di audio (i segmenti di audio sono separati da pause). Ogni risultato sarà costituito da uno o più dei seguenti campi:alternatives
contiene un elenco di possibili trascrizioni di tipoSpeechRecognitionAlternatives
. Se più alternative dipende dalla richiesta di più alternative (impostandomaxAlternatives
su un valore maggiore di1
) e a seconda se Speech-to-Text ha prodotto alternative di qualità sufficientemente elevata. Ogni alternativa sarà composta dai seguenti campi:transcript
contiene il testo trascritto. Consulta: Consulta la sezione Gestione delle trascrizioni riportata di seguito.confidence
contiene un valore compreso tra 0 e 1 che indica come con certezza che Speech-to-Text sia della trascrizione fornita. Consulta la sezione Interpretazione dei valori di confidenza di seguito.
Se non è stato possibile riconoscere alcun parlato dall'audio fornito,
l'elenco results
restituito non conterrà elementi.
Le parole non riconosciute sono spesso il risultato di un audio di pessima qualità.
oppure da valori di codice lingua, codifica o frequenza di campionamento che non corrispondono
l'audio fornito.
I componenti di questa risposta sono descritti nelle sezioni seguenti.
Ogni risposta sincrona dell'API Speech-to-Text restituisce un elenco di risultati.
anziché un singolo risultato contenente tutto l'audio riconosciuto. L'elenco di
l'audio riconosciuto (entro gli elementi transcript
) verrà visualizzato
in un ordine contiguo.
Seleziona le alternative
Ogni risultato all'interno di una risposta di riconoscimento sincrono riuscita può contenere uno o più alternatives
(se il valore maxAlternatives
per la richiesta è superiore a 1
). Se Speech-to-Text determina che un'alternativa ha un valore di confidenza sufficiente, questa viene inclusa nella risposta. La prima alternativa nella risposta è sempre la migliore
(molto probabilmente) alternativa.
L'impostazione di maxAlternatives
su un valore superiore a 1
non implica né garantisce che verranno restituite più alternative. In generale, più di una
un'alternativa è più appropriata per offrire opzioni in tempo reale agli utenti
risultati tramite una richiesta di riconoscimento dello streaming.
Gestione delle trascrizioni
Ogni alternativa fornita nella risposta conterrà un transcript
contenente il testo riconosciuto. Quando vengono fornite alternative sequenziali,
devi concatenare queste trascrizioni.
Il seguente codice Python esegue l'iterazione su un elenco di risultati e concatena le trascrizioni. Tieni presente che in tutti i casi scegliamo la prima alternativa (la zero).
response = service_request.execute() recognized_text = 'Transcribed Text: \n' for i in range(len(response['results'])): recognized_text += response['results'][i]['alternatives'][0]['transcript']
Valori di confidenza
Il valore confidence
è una stima compresa tra 0,0 e 1,0. Viene calcolato
aggregando la "probabilità" assegnati a ogni parola
audio. Un numero più alto indica una maggiore probabilità stimata che
le singole parole sono state riconosciute correttamente. In genere, questo campo viene fornito solo per l'ipotesi principale e solo per i risultati in cui is_final=true
. Ad esempio, puoi utilizzare il valore confidence
per decidere se mostrare
risultati alternativi
all'utente o chiedere conferma all'utente.
Tieni presente, però, che il modello determina il risultato "migliore" con il ranking più alto in base a più indicatori rispetto al solo punteggio confidence
(ad esempio il contesto della frase).
Per questo motivo, si verificano casi sporadici in cui il risultato principale
con il punteggio di confidenza più alto. Se non hai richiesto più alternative
risultati, il singolo "migliore" il risultato restituito può avere un valore di affidabilità più basso
del previsto. Questo può verificarsi, ad esempio, nei casi in cui vengono utilizzate parole rare. A una parola usata raramente può essere assegnata una bassa "probabilità" valore
anche se viene riconosciuto correttamente. Se il modello determina che la parola rara
l'opzione più probabile in base al contesto, il risultato viene restituito
se il valore confidence
del risultato è inferiore a quello delle opzioni alternative.
Richieste e risposte asincrone
Una richiesta dell'API Speech-to-Text asincrona al metodo LongRunningRecognize. ha la forma identica a quella sincrona Richiesta API Speech-to-Text. Tuttavia, invece di restituire una risposta, la richiesta asincrona avvierà una Operazione a lunga esecuzione (di tipo Operazione) e restituire immediatamente questa operazione al destinatario. Puoi usare la modalità riconoscimento vocale con audio di qualsiasi durata fino a 480 minuti.
Di seguito è riportata una tipica risposta di un'operazione:
{ "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" } }
Nota che non sono ancora presenti risultati. Speech-to-Text continuerà a elaborare l'audio e a utilizzare questa operazione per memorizzare i risultati. I risultati
compaiono nel campo response
della
operazione
restituito quando LongRunningRecognize
completata.
Di seguito è riportata una risposta completa al termine della richiesta:
{ "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, }
Tieni presente che done
è stato impostato su True
e che l'elemento response
dell'operazione
contiene un insieme di risultati di tipo
SpeechRecognitionResult
dello stesso tipo restituito da una richiesta di riconoscimento sincrona dell'API Speech-to-Text.
Per impostazione predefinita, una risposta REST asincrona imposta
done
su False
, il relativo valore predefinito. Tuttavia, poiché
JSON non richiede che i valori predefiniti siano presenti in un campo, quando testi
se un'operazione è stata completata, devi verificare sia che il
campo done
sia presente sia che sia impostato su True
.
Richieste di riconoscimento dell'API Speech-to-Text in streaming
Una chiamata di riconoscimento dell'API Speech-to-Text in streaming è progettata per l'acquisizione e il riconoscimento in tempo reale dell'audio all'interno di uno stream bidirezionale. La tua applicazione può inviare audio sullo stream di richiesta e ricevere risultati di riconoscimento provvisori e finali sullo stream di risposta in tempo reale. I risultati intermedi rappresentano il risultato di riconoscimento corrente per una sezione di audio, mentre il risultato di riconoscimento finale rappresenta l'ultima e migliore supposizione per quella sezione di audio.
Richieste di streaming
A differenza delle chiamate sincrone e asincrone, in cui invii sia il comando
configurazione e audio all'interno di una singola richiesta, chiamando lo streaming di Speech
L'API richiede l'invio di più richieste. Il primo StreamingRecognizeRequest
deve contenere una configurazione di tipo
StreamingRecognitionConfig
senza audio aggiuntivo. I StreamingRecognizeRequest
successivi inviati
sullo stesso stream saranno costituiti da frame consecutivi di byte audio non elaborati.
Un StreamingRecognitionConfig
è costituito dai seguenti campi:
config
- (obbligatorio) contiene le informazioni di configurazione per l'audio, di tipo RecognitionConfig ed è uguale a quello mostrato nelle richieste sincrone e asincrone.single_utterance
- (facoltativo, il valore predefinito èfalse
) indica se questa richiesta deve terminare automaticamente quando non viene più rilevato alcun parlato. Se impostato, Text-to-Speech rileva le interruzioni, i silenzi o l'audio non vocale per determinare quando terminare il riconoscimento. Se non viene configurato, lo stream continuerà ad ascoltare e elaborare l'audio finché lo stream non viene chiuso direttamente o la lunghezza limite è stata superata. L'impostazione disingle_utterance
sutrue
è è utile per elaborare i comandi vocali.interim_results
(facoltativo, il valore predefinito èfalse
) indica che questo la richiesta di streaming deve restituire risultati temporanei che possono essere perfezionati a in un secondo momento (dopo aver elaborato più audio). I risultati temporanei verranno annotati nelle risposte mediante l'impostazione diis_final
sufalse
.
Risposte dinamiche
I risultati del riconoscimento vocale in streaming vengono restituiti all'interno di una serie di risposte di tipo StreamingRecognitionResponse. Questa risposta è composta dai seguenti campi:
speechEventType
contiene eventi di tipo SpeechEventType. Il valore di questi eventi indicherà quando è stato stabilito che un singolo enunciato è stato completato. Gli eventi vocali fungono da indicatori all'interno della risposta sviluppata dallo stream.results
contiene l'elenco dei risultati, che possono essere risultati intermedi o finali, di tipo StreamingRecognitionResult. L'elencoresults
contiene i seguenti campi secondari:alternatives
contiene un elenco di trascrizioni alternative.isFinal
indica se i risultati ottenuti in questa voce dell'elenco sono provvisori o definitivi. Google potrebbe restituire più risultatiisFinal=true
in un singolo stream, ma il risultatoisFinal=true
è garantito solo dopo la chiusura dello stream di scrittura (chiusura parziale).stability
indica la volatilità dei risultati ottenuti finora, con0.0
indica completa instabilità mentre1.0
indica completato la stabilità. Tieni presente che, a differenza dell'affidabilità, che stima se una trascrizione è corretta,stability
stima se il risultato parziale dato può cambiare. Se il criterioisFinal
viene impostato sutrue
,stability
non verrà impostato.