Risoluzione dei problemi

Scopri i passaggi per la risoluzione dei problemi, utili in caso di problemi nell'utilizzo di Speech-to-Text.

Impossibile eseguire l'autenticazione per 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 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 voce in testo 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 la funzionalità Trascrizione vocale 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 un Richiesta di riconoscimento di Speech-to-Text. Esistono 2 categorie principali di campi che devono essere impostati per eseguire correttamente una trascrizione:

  • Configurazione audio.
  • Modello e linguaggio.

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 dell'audio non sono impostati correttamente, molto probabilmente non riuscirà 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
  • canali: 1
  • codifica LINEAR16 (s16)

Puoi usare queste informazioni nel tuo RecognitionConfig.

Ulteriori motivi relativi all'audio per una risposta vuota possono essere correlati all'audio codifica. Ecco altri strumenti e cose da provare:

  1. Riproduci il file e ascolta l'output. L'audio è chiaro e intelligibile?

    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, la codifica tipo e numero di canali e può essere riprodotto 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, 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
  2. Verificare che la codifica audio dei dati corrisponda ai parametri impostati inviato in RecognitionConfig. Ad esempio, se la tua richiesta specificati "encoding":"FLAC" e "sampleRateHertz":16000, i dati audio elencati dal SoX Il comando play deve corrispondere a questi parametri, come segue:

    play audio.flac

    deve elencare:

    Encoding: FLAC
    Channels: 1 @ 16-bit
    Sampleratehertz: 16000Hz

    Se la voce SoX mostra un Sampleratehertz diverso da 16000Hz, modifica il valore "sampleRateHertz" in InitialRecognizeRequest in modo che corrisponda. Se Encoding non è FLAC o Channels non è 1 @ 16-bit, non puoi utilizzare questo file direttamente e dovrai convertirlo in una codifica compatibile (vedi passaggio successivo).

  3. 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 l'Little-endian stereo a 16 bit con firma Da 16.000 Hz a FLAC:

    sox --channels=2 --bits=16 --rate=16000 --encoding=signed-integer \
    --endian=little audio.raw --channels=1 --bits=16 audio.flac
  4. Esegui la guida rapida. esempio o una delle Applicazioni di esempio con il file audio di esempio fornito. Quando l'esempio è stato 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 trascrizioni di alta qualità che consentono di analizzare i dati e visualizzare i risultati. 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 viene ripristinato rapidamente, puoi provare per 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 dal riconoscimento vocale

Se i risultati restituiti da Speech-to-Text non sono quelli previsti:

  • Controlla se nella risposta sono presenti messaggi di errore.
  • Tieni presente che Quote e Limiti.

  • Per migliorare l'accuratezza del riconoscimento, segui le linee guida riportate nelle Best practice.