Scopri i passaggi per la risoluzione dei problemi, utili in caso di problemi nell'utilizzo di Speech-to-Text.
Impossibile eseguire l'autenticazione in Speech-to-Text
Potresti ricevere un messaggio di errore che indica che le "Credenziali predefinite dell'applicazione" non sono disponibili o potresti chiederti come ottenere una chiave API da utilizzare quando chiami Speech-to-Text.
Speech-to-Text utilizza le credenziali predefinite dell'applicazione (ADC) per l'autenticazione.
Le credenziali per l'ADC devono essere disponibili nel contesto in cui chiami l'API Speech-to-Text. Ad esempio, se configuri l'ADC nel terminale, ma esegui il codice nel debugger dell'IDE, il contesto di esecuzione del codice potrebbe non avere accesso alle credenziali. In questo caso, la tua richiesta di conversione di Speech-to-Text potrebbe non andare a buon fine.
Per scoprire come fornire le credenziali all'ADC, consulta Configurare le credenziali predefinite dell'applicazione.
Speech-to-Text restituisce una risposta vuota
Esistono diversi motivi per cui Speech-to-Text potrebbe restituire una risposta vuota. La fonte del problema può essere il RecognitionConfig
o l'audio stesso.
Risolvere i problemi relativi a RecognitionConfig
L'oggetto RecognitionConfig
(o StreamingRecognitionConfig
) fa parte di una
richiesta di riconoscimento Speech-to-Text. Esistono due categorie principali di campi che devono essere impostati per eseguire correttamente una trascrizione:
- Configurazione audio.
- Modello e lingua.
Una delle cause più comuni delle risposte vuote (ad esempio, ricevi una risposta JSON {}
vuota) è la fornitura di informazioni errate sui metadati audio. Se i campi di configurazione audio non sono impostati correttamente, la trascrizione
probabilmente non andrà a buon fine e il modello di riconoscimento restituirà risultati vuoti.
La configurazione audio contiene i metadati dell'audio fornito. Puoi ottenere
i metadati del file audio utilizzando il comando ffprobe
, che fa parte
di FFMPEG.
L'esempio seguente mostra come utilizzare ffprobe per ottenere i metadati di https://storage.googleapis.com/cloud-samples-tests/speech/commercial_mono.wav.
$ ffprobe commercial_mono.wav
[...]
Input #0, wav, from 'commercial_mono.wav':
Duration: 00:00:35.75, bitrate: 128 kb/s
Stream #0:0: Audio: pcm_s16le ([1][0][0][0] / 0x0001), 8000 Hz, 1 channels, s16, 128 kb/s
Con il comando riportato sopra, possiamo vedere che il file contiene:
- sample_rate_hertz: 8000
- channels: 1
- codifica LINEAR16 (s16)
Puoi utilizzare queste informazioni in RecognitionConfig
.
Altri motivi relativi all'audio che possono causare una risposta vuota possono essere correlati alla codifica audio. Ecco altri strumenti e cose da provare:
Riproduci il file e ascolta l'output. L'audio è chiaro e il parlato è comprensibile?
Per riprodurre i file, puoi utilizzare il comando
play
SoX (Sound eXchange). Di seguito sono riportati alcuni esempi basati su diverse codifiche audio.I file FLAC includono un'intestazione che indica la frequenza di campionamento, il tipo di codifica e il numero di canali e possono essere riprodotti come segue:
play audio.flac
I file LINEAR16 non includono un'intestazione. Per riprodurli, devi specificare la frequenza di campionamento, il tipo di codifica e il numero di canali. La codifica LINEAR16 deve essere a 16 bit, con numeri interi con segno e little-endian.
play --channels=1 --bits=16 --rate=16000 --encoding=signed-integer \ --endian=little audio.raw
Inoltre, i file MULAW non includono un'intestazione e spesso utilizzano una frequenza di campionamento inferiore.
play --channels=1 --rate=8000 --encoding=u-law audio.raw
Verifica che la codifica audio dei dati corrisponda ai parametri inviati in
RecognitionConfig
. Ad esempio, se la richiesta ha specificato"encoding":"FLAC"
e"sampleRateHertz":16000
, i parametri dei dati audio elencati dal comandoplay
di SoX devono corrispondere a questi parametri, come segue:play audio.flac
deve elencare:
Encoding: FLAC Channels: 1 @ 16-bit Sampleratehertz: 16000Hz
Se la scheda SoX mostra un
Sampleratehertz
diverso da16000Hz
, modifica il valore"sampleRateHertz"
inInitialRecognizeRequest
in modo che corrisponda. SeEncoding
non èFLAC
oChannels
non è1 @ 16-bit
, non puoi utilizzare questo file direttamente e dovrai convertirlo in una codifica compatibile (vedi passaggio successivo).Se il file audio non è in codifica FLAC, prova a convertirlo in FLAC utilizzando SoX e ripeti i passaggi precedenti per riprodurre il file e verificare la codifica, sampleRateHertz e i canali. Ecco alcuni esempi che convertono diversi formati di file audio in codifica FLAC.
sox audio.wav --channels=1 --bits=16 audio.flac sox audio.ogg --channels=1 --bits=16 audio.flac sox audio.au --channels=1 --bits=16 audio.flac sox audio.aiff --channels=1 --bits=16 audio.flac
Per convertire un file raw in FLAC, devi conoscere la codifica audio del file. Ad esempio, per convertire in FLAC un file stereo little-endian a 16 bit con segno a 16000 Hz:
sox --channels=2 --bits=16 --rate=16000 --encoding=signed-integer \ --endian=little audio.raw --channels=1 --bits=16 audio.flac
Esegui l'esempio della guida rapida o una delle app di esempio con il file audio di esempio fornito. Una volta che l'esempio viene eseguito correttamente, sostituisci il file audio di esempio con il tuo file audio.
Configurazione del modello e della lingua
La selezione del modello è molto importante per ottenere risultati di trascrizione di alta qualità. Speech-to-Text
fornisce più modelli che sono stati ottimizzati per casi d'uso diversi e devono essere
scelti in modo da corrispondere il più possibile all'audio.
Ad esempio, alcuni modelli (come latest_short
e command_and_search
)
sono modelli nel formato breve, il che significa che sono più adatti ad audio e prompt brevi.
Questi modelli hanno maggiori probabilità di restituire risultati non appena rilevano un periodo di silenzio. I modelli nel formato lungo, invece, come latest_short, phone_call, video and default
, sono più adatti per audio più lunghi e non sono così sensibili all'interpretazione del silenzio come la fine dell'audio.
Se il riconoscimento termina troppo bruscamente o non torna rapidamente, ti consigliamo di controllare e sperimentare altri modelli per vedere se puoi migliorare la qualità della trascrizione. Puoi sperimentare con più modelli utilizzando la UI Speech.
Risultati imprevisti del riconoscimento vocale
Se i risultati restituiti da Speech-to-Text non sono quelli che ti aspettavi:
- Controlla la risposta per verificare la presenza di messaggi di errore.
Prendi nota di Quote e limiti.
Per migliorare l'accuratezza del riconoscimento, segui le linee guida riportate nelle Best practice.