Risoluzione dei problemi

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:

  1. 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
  2. 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 SoX play 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 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 direttamente questo file e dovrai convertirlo in una codifica compatibile (vedi il passaggio successivo).

  3. 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
    
  4. 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.