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. Consigliamo a tutti gli utenti di Speech-to-Text leggi questa guida e uno dei tutorial associati prima di approfondire l'API stessa.
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 senza costiRichieste 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 sincrone sono limitate all'audio con una durata massima di 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 del flusso di dati (solo gRPC) esegue il riconoscimento sui dati audio forniti all'interno di un flusso bidirezionale gRPC. Le richieste di flusso sono progettate per scopi di riconoscimento in tempo reale, come acquisire l'audio in diretta da un microfono. Il riconoscimento streaming offre risultati provvisori durante l'acquisizione dell'audio, che consentono 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 sincrona dell'API Speech-to-Text è il metodo più semplice per l'esecuzione del riconoscimento con i 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, il riconoscimento potrebbe richiedere molto più tempo.
Speech-to-Text ha metodi REST e gRPC per le chiamate 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 sincrona
Una richiesta API Speech-to-Text sincrona è composta da una configurazione del riconoscimento vocale, audio e video. 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 vuoi scegliere il codec, una codifica senza perdita di dati comeFLAC
oLINEAR16
per le migliori prestazioni. Per ulteriori informazioni, vedi Codifica 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 Frequenza di campionamento riportata di seguito. Il camposampleRateHertz
è facoltativo per i fileFLAC
eWAV
in cui il valore 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 in genere i codici lingua è composta da tag per la lingua principale e da sottotag per le regioni secondarie per indicare dialetti (ad es. "en" per l'inglese e "US" per gli Stati Uniti in nell'esempio precedente. (Per un elenco delle lingue supportate, vedi 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 Speech-to-Text restituirà alternative solo se il riconoscimento determina le alternative siano di qualità sufficiente; in generale, le alternative sono più appropriati per le richieste in tempo reale che richiedono il feedback degli utenti (ad ad esempio i comandi vocali) e quindi sono più adatti per lo streaming richieste di riconoscimento.profanityFilter
: (facoltativo) indica se filtrare ed escludere contenuti volgari parole o frasi. Le parole escluse contengono la prima lettera e asterischi per i caratteri rimanenti (ad es. f***). Linguaggio volgare il filtro opera su singole parole e non rileva contenuti illeciti o offensivi e parlato, ovvero una frase o una combinazione di parole.speechContext
- (Facoltativo) contiene ulteriori informazioni contestuali per elaborare questo 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 ulteriori informazioni, consulta la sezione Incorporare contenuti audio di seguito. L'audio trasmesso direttamente all'interno di questo campo ha una durata limitata a 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
Puoi specificare la frequenza di campionamento del tuo audio nel campo sampleRateHertz
della configurazione della richiesta e deve corrispondere alla frequenza di campionamento dell'audio associato
contenuti o lo stream. 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 valore FLAC
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
inviate all'API Speech-to-Text.
Se hai la possibilità di scegliere quando codifichi il materiale di origine, acquisisci l'audio usando 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 su un campione esistente diversa da 16000 Hz, non ricampionare l'audio a 16000 Hz. Più legacy l'audio della telefonia, ad esempio, utilizza frequenze di campionamento di 8000 Hz, che potrebbero fornire la precisione dei risultati. 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. Sei tu a specificare la lingua (e il dialetto nazionale o regionale)
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 Lingue supportate.
Compensazioni temporali (timestamp)
Speech-to-Text può includere valori di offset temporale (timestamp) per l'inizio e alla fine di ogni parlato riconosciuto dall'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
individuarla (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 scostamenti temporali nei risultati della richiesta, imposta il valore
Parametro enableWordTimeOffsets
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à l'offset temporale per ogni parola riconosciuta, come illustrato 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 dei numerosi modelli models per trascrivere il tuo 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 ricevuti specificando la fonte dell'audio originale. Ciò consente API Speech-to-Text per elaborare i file audio utilizzando un addestrato per riconoscere l'audio vocale da quel particolare tipo di origine.
Per specificare un modello per il riconoscimento vocale, includi il campo model
nell'oggetto RecognitionConfig
per
specifica il modello che vuoi utilizzare.
Consulta l'elenco dei modelli di trascrizione Speech-to-Text per i modelli di machine learning disponibili.
Contenuti audio incorporati
L'audio incorporato è incluso nella richiesta di riconoscimento vocale durante la trasmissione di un
Parametro content
all'interno del campo audio
della richiesta. Per audio incorporato
fornito come contenuto all'interno di una richiesta gRPC, l'audio deve essere compatibile
Proto3
serializzati e forniti come dati binari. Per l'audio incorporato fornito come
contenuti in una richiesta REST, l'audio deve essere compatibile con JSON
la serializzazione e la codifica 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
.
Trasmetti 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 su 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, come 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 si utilizza OAuth a tre vie per l'account utente autorizzazione.
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 sincrona dell'API Speech-to-Text potrebbe richiedere del tempo per restituire risultati, proporzionali 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 di risultati (di tipoSpeechRecognitionResult
) in cui ogni risultato corrisponde a un segmento di audio (segmenti sono separate 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. Ciascuna sarà costituita 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: Interpretazione dei valori di confidenza di seguito.
Se l'audio fornito non viene riconosciuto,
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 alternative
Ciascun risultato all'interno di una risposta al riconoscimento sincrona con successo può contenere
uno o più alternatives
(se il valore maxAlternatives
per la richiesta
è maggiore di 1
). Se Speech-to-Text determina che un'alternativa
ha un numero sufficiente di
Valore di confidenza, la soluzione alternativa è inclusa nel
la 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 le trascrizioni.
Il seguente codice Python esegue l'iterazione su un elenco di risultati e concatena la delle trascrizioni insieme. Tieni presente che prendiamo la prima alternativa (lo zero) per tutti i casi.
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 di 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. Questo campo è in genere
fornito solo per l'ipotesi superiore 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.
Tuttavia, tieni presente che il modello determina il "migliore" risultato con la posizione più alta
in più indicatori rispetto al solo punteggio confidence
(come il contesto della frase).
Per questo motivo, si verificano casi sporadici in cui il risultato principale
che hanno 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ò accadere, ad esempio, nei casi in cui le parole rare
in uso. 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à
elaborare l'audio e 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, viene impostata una risposta REST asincrona
Da done
a False
, il valore predefinito; ma poiché
JSON non richiede la presenza di valori predefiniti all'interno di un campo durante il test
al completamento di un'operazione, devi verificare sia la
Il campo done
è presente ed è impostato su True
.
Richieste di riconoscimento API Streaming Speech-to-Text
Una chiamata di riconoscimento API Speech-to-Text in modalità flusso è progettata per l'acquisizione e il riconoscimento audio all'interno di uno stream bidirezionale. La tua applicazione può inviare audio nello stream della richiesta e ricevere il riconoscimento temporaneo e finale sul flusso di risposte in tempo reale. I risultati provvisori rappresentano risultato corrente del riconoscimento per una sezione di audio, mentre Il risultato del riconoscimento rappresenta l'ultima ipotesi per quella sezione di audio.
Richieste di flussi di dati
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 alcun audio aggiuntivo. Invio di StreamingRecognizeRequest
s successivi
sullo stesso stream saranno quindi frame consecutivi di byte audio non elaborati.
Un StreamingRecognitionConfig
è costituito dai seguenti campi:
config
: (obbligatorio) contiene le informazioni di configurazione per l'audio, del tipo RecognitionConfig ed è uguale a quello mostrato all'interno delle richieste sincrone e asincrone.single_utterance
- (Facoltativo, il valore predefinito èfalse
) indica se questo dovrebbe terminare automaticamente quando non verrà più rilevata la voce. Se impostato, Speech-to-Text rileva pause, silenzio o audio non vocale per determinare quando interrompere il riconoscimento. Se non viene configurato, lo streaming 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 del tipo StreamingRecognitionResponse. Questa risposta è composta dai seguenti campi:
speechEventType
contiene eventi di tipo SpeechEventType. Il valore di questi eventi indicherà quando si è stabilito che una singola frase completata. Gli eventi vocali fungono da indicatori all'interno dello stream risposta.results
contiene l'elenco dei risultati, che possono essere provvisori o definitivi risultati, 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ùisFinal=true
risultati per un singolo stream, ma il risultatoisFinal=true
è solo garantito dopo la chiusura dello stream di scrittura (mezza chiusura).stability
indica la volatilità dei risultati ottenuti finora, con0.0
indica completa instabilità mentre1.0
indica completato la stabilità. A differenza della confidenza, che stima se un la trascrizione è corretta,stability
stima se la data il risultato parziale potrebbe cambiare. Se il criterioisFinal
viene impostato sutrue
,stability
non verrà impostato.