Scopri i passaggi per la risoluzione dei problemi, utili in caso di problemi con Speech-to-Text.
Impossibile eseguire l'autenticazione in Speech-to-Text
Potresti ricevere un messaggio di errore che indica che le tue "Credenziali predefinite dell'applicazione" non sono disponibili o potresti chiederti come ottenere una chiave API da utilizzare per la chiamata a Speech-to-Text.
Speech-to-Text utilizza le Credenziali predefinite dell'applicazione (ADC) per l'autenticazione.
Le credenziali per ADC devono essere disponibili nel contesto che chiami l'API Speech-to-Text. Ad esempio, se configuri 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 a Speech-to-Text potrebbe non riuscire.
Per scoprire come fornire le credenziali ad ADC, vedi 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. L'origine del problema può essere RecognitionConfig
o l'audio stesso.
Risolvi i problemi relativi a RecognitionConfig
L'oggetto RecognitionConfig
(o StreamingRecognitionConfig
) fa parte di una
richiesta di riconoscimento Speech-to-Text. Esistono due categorie di campi principali che devono essere impostati per eseguire correttamente una trascrizione:
- Configurazione audio.
- modello e linguaggio.
Una delle cause più comuni delle risposte vuote (ad esempio, se ricevi una risposta JSON {}
vuota) è la fornitura di informazioni errate sui metadati audio. Se i campi di configurazione audio non sono impostati correttamente, è molto probabile che la trascrizione non vada 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 l'utilizzo di ffprobe per ottenere i metadati per 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 ha:
- sample_rate_hertz: 8000
- canali: 1
- codifica LINEAR16 (s16)
Puoi usare queste informazioni nel tuo RecognitionConfig
.
Ulteriori motivi legati all'audio per 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 usare il comando SoX (Sound eXchange)
play
. Di seguito sono riportati alcuni esempi basati su diverse codifiche audio.I file FLAC includono un'intestazione che indica frequenza di campionamento, tipo di codifica e numero di canali e possono essere riprodotti nel seguente modo:
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 numero intero firmato, small-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 tuoi dati corrisponda ai parametri inviati in
RecognitionConfig
. Ad esempio, se la tua richiesta specifica"encoding":"FLAC"
e"sampleRateHertz":16000
, i parametri di dati audio elencati dal comando SoXplay
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 valore
Sampleratehertz
diverso da16000Hz
, modifica il valore"sampleRateHertz"
inInitialRecognizeRequest
in modo che corrisponda. SeEncoding
non èFLAC
oChannels
non è1 @ 16-bit
, non puoi utilizzare direttamente questo file e dovrai convertirlo in una codifica compatibile (vedi il passaggio successivo).Se il file audio non è codificato in formato FLAC, prova a convertirlo in formato FLAC utilizzando SoX e ripeti i passaggi precedenti per riprodurre il file e verificare la codifica, il sampleRateHertz e i canali. Ecco alcuni esempi che convertono vari 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 il formato small-endian stereo a 16 bit firmato a 16000 Hz in FLAC:
sox --channels=2 --bits=16 --rate=16000 --encoding=signed-integer \ --endian=little audio.raw --channels=1 --bits=16 audio.flac
Esegui l'esempio di guida rapida o una delle Sample Applications con il file audio di esempio in dotazione. Dopo aver eseguito correttamente l'esempio, sostituisci il file audio di esempio con il tuo file audio.
Configurazione modello e linguaggio
La selezione del modello è molto importante per ottenere risultati di trascrizione di alta qualità. Speech-to-Text fornisce più modelli ottimizzati per diversi casi d'uso che devono essere scelti in modo che corrispondano il più possibile al tuo 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.
È probabile che questi modelli restituiscano 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 sensibili all'interpretazione del silenzio come
della fine dell'audio.
Se il riconoscimento termina troppo bruscamente o non ritorna rapidamente, potresti voler controllare e sperimentare con altri modelli per vedere se puoi ottenere una migliore qualità della trascrizione. Puoi sperimentare più modelli utilizzando l'UI di Speech.
Risultati imprevisti dal riconoscimento vocale
Se i risultati restituiti da Speech-to-Text non sono quelli che ti aspettavi:
- Controlla se nella risposta sono presenti messaggi di errore.
Osserva Quote e limiti.
Per migliorare l'accuratezza del riconoscimento, segui le linee guida nella sezione Best practice.