Risolvere i problemi

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

Impossibile eseguire l'autenticazione su Speech-to-Text

Potresti ricevere un messaggio di errore che indica che le tue "Credenziali predefinite dell'applicazione" non sono disponibili o ti stai chiedendo come ottenere una chiave API da utilizzare quando chiami Speech-to-Text.

Speech-to-Text utilizza le credenziali predefinite delle applicazioni per l'autenticazione.

Devi avere un account di servizio per il tuo progetto, scaricare la chiave (file JSON) per il tuo account di servizio nel tuo ambiente di sviluppo, quindi impostare la posizione di tale file JSON su una variabile di ambiente denominata GOOGLE_APPLICATION_CREDENTIALS.

Inoltre, la variabile di ambiente GOOGLE_APPLICATION_CREDENTIALS deve essere disponibile nel contesto chiamato l'API Speech-to-Text. Ad esempio, se imposti la variabile da una sessione del terminale, ma esegui il codice nel debugger del tuo IDE, il contesto di esecuzione del codice potrebbe non avere accesso alla variabile. In tale circostanza, la richiesta a Speech-to-Text potrebbe non riuscire per mancanza di autenticazione corretta.

Per ulteriori informazioni su come impostare le GOOGLE_APPLICATION_CREDENTIALS variabili di ambiente, consulta le guide Speech-to-Text o la documentazione su utilizzando 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 causa del problema può essere RecognitionConfig o l'audio.

Risolvere i problemi relativi a RecognitionConfig

L'oggetto RecognitionConfig (o StreamingRecognitionConfig) fa parte di una richiesta di riconoscimento di Speech-to-Text. Per eseguire correttamente una trascrizione, è necessario impostare due categorie principali di campi:

  • Configurazione audio.
  • Modello e lingua.

Una delle cause più comuni delle risposte vuote (ad esempio, è che tu riceva una risposta JSON {} vuota) fornisce informazioni errate sui metadati audio. Se i campi di configurazione audio non sono impostati correttamente, molto probabilmente la trascrizione 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 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:

  • sample_rate_hertz: 8000
  • canali: 1
  • codifica di LINEAR16 (s16)

Puoi utilizzare queste informazioni nella tua RecognitionConfig.

Altri motivi relativi all'audio di una risposta vuota possono essere correlati alla codifica audio. Ecco alcuni altri strumenti e cose da provare:

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

    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 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 di LINEAR16 deve essere a 16 bit, con numero intero e end-end.

    play --channels=1 --bits=16 --rate=16000 --encoding=signed-integer \
    --endian=little audio.raw

    I file MULAW non includono inoltre 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 che hai inviato in RecognitionConfig. Ad esempio, se la tua richiesta specificava "encoding":"FLAC" e "sampleRateHertz":16000, i parametri dei dati audio elencati dal comando SoX play dovrebbero corrispondere a questi parametri, come indicato di seguito:

    play audio.flac

    deve indicare:

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

    Se nella scheda SoX viene visualizzato un valore diverso da Sampleratehertz, 16000Hz, modifica il valore "sampleRateHertz" in InitialRecognizeRequest. Se Encoding non è FLAC o Channels non è 1 @ 16-bit, non puoi utilizzare questo file direttamente e dovrai convertirlo in una codifica compatibile (vedi il 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, il valore sampleRateHertz e i canali. Ecco alcuni esempi che convertono vari formati 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 non elaborato in FLAC, devi prima conoscere la codifica audio del file. Ad esempio, per convertire stereo end-endian a 16 bit 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 Quickstart o una delle Sample Application con il file audio di esempio fornito. Una volta eseguito correttamente l'esempio, sostituisci il file audio di esempio con il file audio.

Configurazione modello e lingua

La selezione del modello è molto importante per ottenere risultati di trascrizione di alta qualità. Speech-to-Text fornisce più modelli che sono stati adattati a diversi casi d'uso e devono essere scelti in modo da corrispondere meglio all'audio. Ad esempio, alcuni modelli (come latest_short e command_and_search) sono modelli brevi, il che significa che sono più adatti ad audio e messaggi brevi. Questi modelli potrebbero restituire risultati non appena rilevano un periodo di silenzio. I modelli lunghi, invece, come ad esempio latest_short, phone_call, video and default, sono più adatti per un audio più lungo e non sono sensibili all'interpretazione del silenzio come alla fine dell'audio.

Se il riconoscimento termina improvvisamente o non ritorna rapidamente, puoi provare a utilizzare altri modelli e provare a migliorare la 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 la risposta per verificare se sono presenti messaggi di errore.
  • Tieni presente Quote e limiti.

  • Per migliorare la precisione del riconoscimento, segui le linee guida nella sezione Best practice.