Speech-to-Text è una delle tre API preaddestrate di Vertex AI sull'appliance con air gap di Google Distributed Cloud (GDC). Il servizio Speech-to-Text riconosce la voce nei file audio e la trascrive in testo. Speech-to-Text soddisfa i requisiti di localizzazione e conformità dei dati.
La tabella seguente descrive le funzionalità principali di Speech-to-Text:
Funzionalità chiave | |
---|---|
Trascrizione | Applica gli avanzati algoritmi di rete neurale di deep learning per il riconoscimento vocale automatico. |
Modelli | Esegui il deployment di modelli di riconoscimento di dimensioni inferiori a 1 GB e che consumano risorse minime. |
Compatibilità con l'API | Utilizza l'API Speech-to-Text e le relative librerie client per inviare audio e ricevere una trascrizione del testo dal servizio Speech-to-Text. |
Codifiche audio supportate per Speech-to-Text
L'API Speech-to-Text supporta diversi tipi di codifica. La tabella seguente elenca i codec audio supportati:
Codec | Nome | Senza perdita | Note sull'utilizzo |
---|---|---|---|
FLAC |
Codec audio senza perdita di dati | Sì | 16 bit o 24 bit richiesti per gli stream |
LINEAR16 |
PCM lineare | Sì | Codifica Pulse-Code Modulation (PCM) lineare a 16 bit. L'intestazione deve contenere la frequenza di campionamento. |
MULAW |
μ-law | No | Codifica PCM a 8 bit |
OGG_OPUS |
Frame audio codificati con Opus in un container Ogg | No | La frequenza di campionamento deve essere 8000 Hz, 12000 Hz, 16000 Hz, 24000 Hz o 48000 Hz |
FLAC
è sia un codec audio che un formato di file audio. Per trascrivere file audio
utilizzando la codifica FLAC
, devi fornirli nel formato di file .FLAC
,
che include un'intestazione contenente i metadati.
Speech-to-Text supporta i file WAV
con audio codificato LINEAR16
o MULAW
.
Se hai la possibilità di scegliere la codifica del materiale di origine, utilizza una codifica lossless
come FLAC
o LINEAR16
per un migliore riconoscimento vocale.
Funzionalità di Speech-to-Text
Speech-to-Text sull'appliance GDC con air gap prevede tre metodi per eseguire il riconoscimento vocale:
Riconoscimento sincrono: invia i dati audio all'API Speech-to-Text, esegue il riconoscimento su questi dati e restituisce i risultati dopo l'elaborazione dell'audio. Le richieste di riconoscimento sincrono sono limitate a un minuto o meno di dati audio.
Riconoscimento asincrono: invia dati audio all'API Speech-to-Text e avvia un'operazione a lunga esecuzione. Utilizzando questa operazione, puoi eseguire periodicamente il polling per i risultati del riconoscimento. Utilizza le richieste asincrone per dati audio di qualsiasi durata fino a 480 minuti.
Riconoscimento streaming: esegue il riconoscimento sui dati audio forniti all'interno di uno stream bidirezionale. Le richieste di streaming sono progettate per il riconoscimento in tempo reale, ad esempio per acquisire l'audio in diretta da un microfono. Il riconoscimento in streaming fornisce risultati provvisori durante l'acquisizione dell'audio, consentendo la visualizzazione dei risultati, ad esempio, mentre un utente sta ancora parlando.
Le richieste contengono parametri di configurazione e dati audio. Le sezioni seguenti descrivono in modo più dettagliato queste richieste di riconoscimento, le risposte che generano e come gestirle.
Richieste e risposte sincrone
Una richiesta di riconoscimento sincrono Speech-to-Text è il metodo più semplice per eseguire il riconoscimento sui dati audio del parlato. Speech-to-Text può elaborare fino a un minuto di dati audio vocali inviati in una richiesta sincrona. Dopo che Speech-to-Text elabora e riconosce tutto l'audio, restituisce una risposta.
Speech-to-Text deve restituire una risposta prima di elaborare la richiesta successiva. Puoi trascrivere fino a sette minuti di audio al minuto, equivalenti a sette secondi di audio trascritti al secondo in ogni unità di elettrodomestico. In caso di scarsa qualità audio, la richiesta di riconoscimento può richiedere molto più tempo.
Richieste di riconoscimento vocale
Una richiesta API Speech-to-Text sincrona comprende una configurazione del riconoscimento vocale e dati audio. L'esempio seguente mostra una richiesta:
{
"config": {
"encoding": "LINEAR16",
"sample_rate_hertz": 16000,
"language_code": "en-US",
},
"audio": {
"content": "ZkxhQwAAACIQABAAAAUJABtAA+gA8AB+W8FZndQvQAyjv..."
}
}
Tutte le richieste di riconoscimento sincrono Speech-to-Text devono includere un campo di riconoscimento vocale config
di tipo RecognitionConfig
. Un oggetto RecognitionConfig
contiene i seguenti campi secondari obbligatori:
encoding
: specifica lo schema di codifica dell'audio fornito. Questo campo è di tipoAudioEncoding
. Se hai la possibilità di scegliere un codec, preferisci una codifica lossless comeFLAC
oLINEAR16
per ottenere le migliori prestazioni. Per un elenco dei formati di codifica audio supportati, consulta Codifiche audio supportate per la sintesi vocale. Il campoencoding
è facoltativo per i fileFLAC
eWAV
, che includono la codifica nell'intestazione del file.sample_rate_hertz
: specifica la frequenza di campionamento dell'audio fornito in hertz. Per ulteriori informazioni sulle frequenze di campionamento, consulta la sezione Frequenze di campionamento. Il camposample_rate_hertz
è facoltativo per i fileFLAC
eWAV
, che includono la frequenza di campionamento nell'intestazione del file.language_code
: contiene la lingua e la regione da utilizzare per il riconoscimento vocale dell'audio fornito. Il codice lingua deve essere un identificatore BCP-47. I codici lingua sono costituiti da tag di lingua principali e da tag secondari di regione per indicare i dialetti. Nell'esempio,en
indica l'inglese eUS
gli Stati Uniti. Per un elenco delle lingue supportate, consulta Lingue supportate.
Fornisci l'audio a Speech-to-Text tramite il parametro audio
di tipo
RecognitionAudio
. Il campo audio
contiene il seguente campo secondario:
content
: contiene l'audio da valutare, incorporato nella richiesta. I byte dei dati audio vengono codificati utilizzando una rappresentazione binaria pura. Le rappresentazioni JSON utilizzano Base64. Per saperne di più, consulta la sezione Contenuti audio incorporati. L'audio trasmesso direttamente in questo campo è limitato a un minuto di durata.
Frequenze di campionamento
Specifichi la frequenza di campionamento dell'audio nel campo sample_rate_hertz
della
configurazione della richiesta e deve corrispondere alla frequenza di campionamento dei contenuti
audio associati. Speech-to-Text supporta frequenze di campionamento comprese tra 8000 Hz e 48.000 Hz. Puoi specificare la frequenza di campionamento per un file FLAC
o WAV
nell'intestazione del file anziché utilizzare il campo sample_rate_hertz
. Tuttavia, il
campo sample_rate_hertz
è obbligatorio per tutti gli altri formati audio.
Se hai la possibilità di scegliere la codifica del materiale sorgente, acquisisci l'audio utilizzando una frequenza di campionamento di 16.000 Hz. Valori inferiori potrebbero compromettere l'accuratezza del riconoscimento vocale, mentre valori superiori non hanno un effetto apprezzabile sulla qualità del riconoscimento vocale.
Tuttavia, se hai registrato i dati audio a una frequenza di campionamento diversa da 16000 Hz, non ricampionare l'audio a 16000 Hz. La maggior parte dell'audio di telefonia legacy, ad esempio, utilizza frequenze di campionamento di 8000 Hz, che potrebbero fornire risultati meno accurati. Se devi utilizzare questo tipo di audio, fornisci l'API Speech-to-Text alla frequenza di campionamento originale.
Lingue
Il motore di riconoscimento di Speech-to-Text supporta una serie di lingue e
dialetti. Specifichi la lingua dell'audio (e il dialetto nazionale o regionale)
nel campo language_code
della configurazione della richiesta utilizzando un
identificatore BCP-47.
La pagina Lingue supportate contiene un elenco completo delle lingue supportate per ogni funzionalità.
Selezione del modello
Quando invii una richiesta di trascrizione audio a Speech-to-Text, puoi elaborare i tuoi file audio utilizzando un modello di machine learning addestrato a riconoscere l'audio vocale di quel 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. Speech-to-Text sull'appliance GDC air-gapped supporta solo il modello default
.
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. Per l'audio incorporato
fornito come contenuto all'interno di una richiesta REST, l'audio deve essere compatibile con
la serializzazione JSON.
Puoi inviare i dati direttamente nel campo content
per il riconoscimento sincrono
solo se i dati audio durano al massimo 60 secondi e pesano 10 MB. Tutti i dati audio nel
campo content
devono essere in formato Base64.
Quando crei una richiesta utilizzando una libreria client,
scrivi questi dati binari o codificati in Base64 direttamente nel campo content
.
La maggior parte degli ambienti di sviluppo è dotata di un'utilità base64
per codificare un file binario
in dati di testo ASCII, fornendoti gli strumenti e il supporto necessari.
Inoltre, Python dispone di meccanismi integrati per la codifica Base64 dei contenuti. I
seguenti esempi mostrano come codificare un file:
Linux
Codifica il file utilizzando lo strumento a riga di comando base64
. Evita il ritorno a capo utilizzando il flag -w 0
:
base64 INPUT_FILE -w 0 > OUTPUT_FILE
Python
In Python, codifica i file audio in Base64 nel seguente modo:
# Import the base64 encoding library.
import base64
# Pass the audio data to an encoding function.
def encode_audio(audio):
audio_content = audio.read()
return base64.b64encode(audio_content)
Risposte del riconoscimento vocale
Una risposta sincrona dell'API Speech-to-Text potrebbe richiedere del tempo per restituire i risultati. Una volta elaborata, l'API restituisce una risposta come nell'esempio seguente:
{
"results": [
{
"alternatives": [
{
"transcript": "how old is the Brooklyn Bridge",
"words": [
{
"word": "how"
},
{
"word": "old"
},
{
"word": "is"
},
{
"word": "the"
},
{
"word": "Brooklyn"
},
{
"word": "Bridge"
}
]
}
]
}
]
}
Tutte le risposte di riconoscimento sincrono dell'API Speech-to-Text includono risultati di riconoscimento vocale di tipo RecognizeResponse
. Un oggetto RecognizeResponse
contiene i seguenti campi:
results
: contiene l'elenco dei risultati di tipoSpeechRecognitionResult
, dove ogni risultato corrisponde a un segmento audio. Ogni risultato è costituito da uno o più dei seguenti campi secondari:alternatives
: contiene un elenco di possibili trascrizioni di tipoSpeechRecognitionAlternative
. La prima alternativa nella risposta è sempre la più probabile. Ogni alternativa è composta dai seguenti sottocampi:transcript
: contiene il testo trascritto. Quando vengono fornite alternative sequenziali, puoi concatenare queste trascrizioni tra loro.words
: contiene un elenco di informazioni specifiche per ogni parola riconosciuta.
Richieste e risposte asincrone
Una richiesta asincrona dell'API Speech-to-Text è identica a una richiesta sincrona. Tuttavia, anziché restituire una risposta, la richiesta asincrona avvia un'operazione a lunga esecuzione e la restituisce immediatamente. Puoi utilizzare il riconoscimento vocale asincrono con audio di qualsiasi durata fino a 480 minuti.
Di seguito è riportato un esempio di risposta dell'operazione:
{
"name": "OPERATION_NAME",
"metadata": {
"@type": "type.googleapis.com/google.cloud.speech_v1p1beta1.LongRunningRecognizeMetadata"
"progressPercent": 34,
"startTime": "2016-08-30T23:26:29.579144Z",
"lastUpdateTime": "2016-08-30T23:26:29.826903Z"
}
}
Tieni presente che i risultati non sono ancora presenti. Speech-to-Text continua a elaborare l'audio e utilizza questa operazione per archiviare i risultati. I risultati vengono visualizzati nel campo
response
dell'operazione restituita al termine della richiesta
LongRunningRecognize
.
Di seguito è riportato un esempio di risposta completa dopo il completamento della richiesta:
{
"name": "1268386125834704889",
"metadata": {
"lastUpdateTime": "2016-08-31T00:16:32.169Z",
"@type": "type.googleapis.com/google.cloud.speech_v1p1beta1.LongRunningRecognizeMetadata",
"startTime": "2016-08-31T00:16:29.539820Z",
"progressPercent": 100
}
"response": {
"@type": "type.googleapis.com/google.cloud.speech_v1p1beta1.LongRunningRecognizeResponse",
"results": [{
"alternatives": [{
"transcript": "how old is the Brooklyn Bridge",
"words": [
{
"word": "how"
},
{
"word": "old"
},
{
"word": "is"
},
{
"word": "the"
},
{
"word": "Brooklyn"
},
{
"word": "Bridge"
}
]
}]}]
},
"done": True
}
Tieni presente che done
è impostato su True
e che response
dell'operazione contiene un
insieme di risultati di tipo SpeechRecognitionResult
, lo stesso tipo restituito da una
richiesta di riconoscimento sincrono.
Flussi di dati per richieste e risposte
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 un flusso bidirezionale. La tua applicazione può inviare audio nel flusso di richieste e ricevere risultati di riconoscimento provvisori e finali in tempo reale nel flusso di risposte. I risultati provvisori rappresentano il risultato del riconoscimento corrente per una sezione audio, mentre il risultato finale del riconoscimento rappresenta l'ultima e migliore ipotesi per quella sezione audio.
Richieste di riconoscimento di audio in streaming
A differenza delle chiamate sincrone e asincrone, in cui invii sia la configurazione che l'audio in un'unica richiesta, la chiamata all'API Speech-to-Text di streaming richiede l'invio di più richieste. Il primo
StreamingRecognizeRequest
deve contenere una configurazione di tipo
StreamingRecognitionConfig
.
Un StreamingRecognitionConfig
è costituito dal campo config
, che contiene
le informazioni di configurazione per l'audio di tipo RecognitionConfig
ed è uguale a quello mostrato nelle richieste sincrone e asincrone.
Risposte di riconoscimento in streaming
I risultati del riconoscimento vocale di audio in streaming restituiscono una serie di risposte di tipo
StreamingRecognizeResponse
. Una risposta di questo tipo è costituita dai seguenti campi:
speech_event_type
: contiene eventi di tipoSpeechEventType
. Il valore di questi eventi indica quando una singola espressione è stata completata. Gli eventi vocali fungono da indicatori all'interno della risposta dello stream.results
: contiene l'elenco dei risultati, che possono essere risultati provvisori o finali di tipoStreamingRecognitionResult
. L'elencoresults
include i seguenti sottocampi:alternatives
: contiene un elenco di trascrizioni alternative.is_final
: indica se i risultati ottenuti all'interno di questa voce dell'elenco sono provvisori o definitivi.result_end_time
: indica l'offset temporale della fine di questo risultato rispetto all'inizio dell'audio.