Nozioni di base su Speech-to-Text

Mantieni tutto organizzato con le raccolte Salva e classifica i contenuti in base alle tue preferenze.

Panoramica

Questo documento è una guida alle nozioni di base sull'utilizzo di Speech-to-Text. Questa guida concettuale illustra i tipi di richieste che puoi inviare a Speech-to-Text, come strutturare tali richieste e come gestire le relative risposte. Consigliamo a tutti gli utenti di Speech-to-Text di leggere questa guida e uno dei tutorial associati prima di immergersi nell'API stessa.

Provalo

Se non hai mai utilizzato Google Cloud, crea un account per valutare le prestazioni di Speech-to-Text in scenari reali. I nuovi clienti ricevono anche 300 $ di crediti gratuiti per l'esecuzione, il test e il deployment dei carichi di lavoro.

Prova Speech-to-Text senza costi aggiuntivi

Richieste vocali

Speech-to-Text ha tre metodi principali per eseguire il riconoscimento vocale. Di seguito sono elencati:

  • Il riconoscimento sincrono (REST e gRPC) invia i dati audio all'API Speech-to-Text, esegue il riconoscimento su questi dati e restituisce i risultati dopo l'elaborazione di tutto l'audio. Le richieste di riconoscimento sincrono sono limitate a dati audio di 1 minuto o meno.

  • Il riconoscimento asincrono (REST e gRPC) invia i dati audio all'API Speech-to-Text e avvia un'operazione a lunga esecuzione. Utilizzando questa operazione, puoi eseguire periodicamente sondaggi per i risultati del riconoscimento. Utilizza richieste asincrone per i dati audio di qualsiasi durata fino a 480 minuti.

  • Il riconoscimento dei flussi di dati (solo gRPC) esegue il riconoscimento dei dati audio forniti in uno stream bidirezionale gRPC. Le richieste di streaming sono progettate per scopi di riconoscimento in tempo reale, come l'acquisizione di audio in diretta da un microfono. Il riconoscimento dello streaming fornisce risultati interi durante l'acquisizione dell'audio, consentendo la visualizzazione dei risultati, ad esempio mentre l'utente sta ancora parlando.

Le richieste contengono parametri di configurazione e dati audio. Le seguenti sezioni descrivono questo tipo di richieste di riconoscimento, le risposte che generano e come gestirle in modo più dettagliato.

Riconoscimento API Speech-to-Text

Una richiesta di riconoscimento sincrono dell'API Speech-to-Text è il metodo più semplice per eseguire il riconoscimento sui dati audio della voce. Speech-to-Text può elaborare fino a 1 minuto di dati audio vocali inviati in una richiesta sincrona. Dopo aver elaborato e riconosciuto tutto l'audio in Speech-to-Text, restituisce una risposta.

Una richiesta sincrona viene bloccata, il che significa che Speech-to-Text deve restituire una risposta prima di elaborare la richiesta successiva. Speech-to-Text elabora in genere l'audio più velocemente del tempo reale, elaborando in media 30 secondi di audio in 15 secondi. In caso di scarsa qualità audio, la tua richiesta di riconoscimento potrebbe richiedere molto più tempo.

Speech-to-Text ha entrambi i metodi REST e gRPC per chiamare le richieste API Speech-to-Text sincrone e asincrone. Questo articolo illustra l'API REST perché è più semplice mostrarla e spiegare l'utilizzo di base dell'API. Tuttavia, la configurazione di base di una richiesta REST o gRPC è abbastanza simile. Le richieste di riconoscimento di flussi di dati sono supportate solo da gRPC.

Richieste di riconoscimento vocale sincrono

Una richiesta API Speech-to-Text sincrona è composta da una configurazione del riconoscimento vocale e da dati audio. Di seguito è riportato un esempio di richiesta:

{
    "config": {
        "encoding": "LINEAR16",
        "sampleRateHertz": 16000,
        "languageCode": "en-US",
    },
    "audio": {
        "uri": "gs://bucket-name/path_to_audio_file"
    }
}

Tutte le richieste di riconoscimento sincrono dell'API Speech-to-Text devono includere un campo di riconoscimento vocale config (di tipo RecognitionConfig). Un RecognitionConfig contiene i seguenti sottocampi:

  • encoding: (obbligatorio) specifica lo schema di codifica dell'audio fornito (di tipo AudioEncoding). Se hai una scelta nel codec, preferisci una codifica senza perdita come FLAC o LINEAR16 per ottenere le migliori prestazioni. Per ulteriori informazioni, consulta la sezione Codifica audio. Il campo encoding è facoltativo per i file FLAC e WAV in cui la codifica è inclusa nell'intestazione del file.
  • sampleRateHertz: (obbligatorio) specifica la frequenza di campionamento (in Hertz) dell'audio fornito. Per maggiori informazioni sulle frequenze di campionamento, consulta la sezione Frequenza di campionamento di seguito. Il campo sampleRateHertz è facoltativo per i file FLAC e WAV in cui la frequenza di campionamento è inclusa nell'intestazione del file.
  • languageCode - (obbligatorio) contiene la lingua + la regione/l'area geografica da utilizzare per il riconoscimento vocale dell'audio fornito. Il codice lingua deve essere un identificatore BCP-47. Tieni presente che i codici lingua in genere sono costituiti da tag della lingua principale e sottotag di area geografica secondaria che indicano i dialetti (ad esempio, 'en' per l'inglese e 'US' per gli Stati Uniti nell'esempio riportato sopra). Per un elenco delle lingue supportate, consulta la sezione Lingue supportate.
  • maxAlternatives: (facoltativo, il valore predefinito è 1) indica il numero di trascrizioni alternative da fornire nella risposta. Per impostazione predefinita, l'API Speech-to-Text fornisce una trascrizione principale. Se vuoi valutare alternative diverse, imposta maxAlternatives su un valore più alto. Tieni presente che Speech-to-Text restituisce solo le alternative se il riconoscimento determina che le alternative sono di qualità sufficiente; in generale, le alternative sono più adatte per le richieste in tempo reale che richiedono il feedback degli utenti (ad esempio, i comandi vocali), pertanto sono più adatte per le richieste di riconoscimento dello streaming.
  • profanityFilter - (facoltativo) indica se filtrare parole o frasi volgari. Le parole filtrate escludono la prima lettera e gli asterischi per i caratteri rimanenti (ad es. f***). Il filtro per il linguaggio volgare agisce su singole parole e non rileva discorsi offensivi o offensivi che sono una frase o una combinazione di parole.
  • speechContext - (facoltativo) contiene informazioni contestuali aggiuntive per l'elaborazione di questo audio. Un contesto contiene il seguente sottocampo:
    • phrases: contiene un elenco di parole e frasi che forniscono suggerimenti per l'attività di riconoscimento vocale. Per ulteriori informazioni, consulta le informazioni sul contesto vocale.

L'audio viene fornito a Speech-to-Text tramite il parametro audio di tipo RecognitionAudio. Il campo audio contiene uno dei seguenti sottocampi:

  • content contiene l'audio da valutare, incorporato nella richiesta. Per saperne di più, consulta la sezione Incorporare contenuti audio di seguito. L'audio trasmesso direttamente all'interno di questo campo è limitato a 1 minuto di durata.
  • uri contiene un URI che rimanda ai contenuti audio. Il file non deve essere compresso (ad esempio, gzip). Attualmente, questo campo deve contenere un URI Google Cloud Storage (di formato gs://bucket-name/path_to_audio_file). Consulta la sezione Passaggio di riferimento all'audio tramite un URI di seguito.

Di seguito sono riportate ulteriori informazioni su questi parametri di richiesta e risposta.

Frequenza di campionamento

Specifica la frequenza di campionamento dell'audio nel campo sampleRateHertz della configurazione della richiesta e deve corrispondere alla frequenza di campionamento dei contenuti o stream audio associati. La frequenza di campionamento tra 8000 Hz e 48000 Hz è supportata in Speech-to-Text. Puoi specificare la frequenza di campionamento per un file FLAC o WAV nell'intestazione del file anziché utilizzare il campo sampleRateHertz. Un file FLAC deve contenere la frequenza di campionamento nell'intestazione FLAC per poter essere inviato all'API Speech-to-Text.

Se puoi scegliere durante la codifica del materiale di origine, acquisisci l'audio utilizzando una frequenza di campionamento di 16000 Hz. Valori inferiori potrebbero compromettere la precisione del riconoscimento vocale e i livelli più alti non hanno un effetto apprezzabile sulla qualità del riconoscimento vocale.

Tuttavia, se i dati audio sono già stati registrati a una frequenza di campionamento esistente diversa da 16000 Hz, non ricampionare l'audio a 16000 Hz. La maggior parte degli audio di telefonia legacy, ad esempio, utilizza frequenze di campionamento di 8000 Hz, il che potrebbe fornire risultati meno precisi. Se devi utilizzare tale audio, forniscilo all'API Speech alla frequenza di campionamento nativa.

Linguaggi

Il motore di riconoscimento di Speech-to-Text supporta una varietà di lingue e dialetti. Devi specificare la lingua (e il dialetto nazionale o regionale) del tuo audio nel campo languageCode della configurazione della richiesta, utilizzando un identificatore BCP-47.

Un elenco completo delle lingue supportate per ogni funzionalità è disponibile nella pagina Assistenza per le lingue.

Offset ora (timestamp)

Speech-to-Text può includere valori di offset temporale (timestamp) per l'inizio e la fine di ogni parola pronunciata riconosciuta nell'audio fornito. Un valore di offset temporale rappresenta il tempo trascorso dall'inizio dell'audio, in incrementi di 100 ms.

Gli offset di tempo sono particolarmente utili per analizzare file audio più lunghi, in cui potresti dover cercare una determinata parola nel testo riconosciuto e individuarla (cercare) nell'audio originale. Gli offset di tempo sono supportati per tutti i metodi di riconoscimento: recognize, streamingrecognize e longrunningrecognize.

I valori di offset temporale sono inclusi solo per la prima alternativa fornita nella risposta di riconoscimento.

Per includere degli offset di orario nei risultati della richiesta, imposta il parametro enableWordTimeOffsets su true nella configurazione delle richieste. Per esempi che utilizzano l'API REST o le librerie client, consulta Utilizzo degli offset di tempo (timestamp). Ad esempio, puoi includere il parametro enableWordTimeOffsets nella configurazione della richiesta, come mostrato di seguito:

{
"config": {
  "languageCode": "en-US",
  "enableWordTimeOffsets": true
  },
"audio":{
  "uri":"gs://gcs-test-data/gettysburg.flac"
  }
}

Il risultato restituito dall'API Speech-to-Text conterrà i valori di offset temporale per ogni parola riconosciuta come mostrato di seguito:

{
  "name": "6212202767953098955",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.speech.v1.LongRunningRecognizeMetadata",
    "progressPercent": 100,
    "startTime": "2017-07-24T10:21:22.013650Z",
    "lastUpdateTime": "2017-07-24T10:21:45.278630Z"
  },
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.cloud.speech.v1.LongRunningRecognizeResponse",
    "results": [
      {
        "alternatives": [
          {
            "transcript": "Four score and twenty...(etc)...",
            "confidence": 0.97186122,
            "words": [
              {
                "startTime": "1.300s",
                "endTime": "1.400s",
                "word": "Four"
              },
              {
                "startTime": "1.400s",
                "endTime": "1.600s",
                "word": "score"
              },
              {
                "startTime": "1.600s",
                "endTime": "1.600s",
                "word": "and"
              },
              {
                "startTime": "1.600s",
                "endTime": "1.900s",
                "word": "twenty"
              },
              ...
            ]
          }
        ]
      },
      {
        "alternatives": [
          {
            "transcript": "for score and plenty...(etc)...",
            "confidence": 0.9041967,
          }
        ]
      }
    ]
  }
}

Selezione del modello

Speech-to-Text può utilizzare uno dei diversi modelli di machine learning per trascrivere il file audio. Google ha addestrato questi modelli di riconoscimento vocale per sorgenti e tipi di audio specifici.

Quando invii una richiesta di trascrizione di audio a Speech-to-Text, puoi migliorare i risultati che ricevi specificando la sorgente dell'audio originale. In questo modo, l'API Speech-to-Text può elaborare i tuoi file audio utilizzando un modello di machine learning addestrato a riconoscere l'audio vocale da quel particolare tipo di sorgente.

Per specificare un modello di riconoscimento vocale, includi il campo model nell'oggetto RecognitionConfig per la tua richiesta, specificando il modello che vuoi utilizzare.

Speech-to-Text può utilizzare i seguenti tipi di modelli di machine learning per trascrivere i file audio.

Tipo Costante di enumerazione Descrizione
Più recente latest_long

Utilizza questo modello per qualsiasi tipo di contenuti di durata estesa, come contenuti multimediali o conversazioni spontanee e multimediali. Ti consigliamo di utilizzare questo modello anziché il modello del video, soprattutto se non è disponibile nella tua lingua di destinazione. Puoi anche utilizzare questo modello al posto del modello predefinito.

Short più recente latest_short

Utilizza questo modello per brevi frasi della durata di alcuni secondi. È utile per tentare di acquisire comandi o altri casi d'uso di sintesi vocale diretti. Valuta la possibilità di utilizzare questo modello anziché il modello di comando e ricerca.

Video video

Utilizza questo modello per trascrivere audio da video clip o altre fonti (come i podcast) che hanno più altoparlanti. Questo modello è spesso anche la scelta migliore per l'audio registrato con un microfono di alta qualità o con molto rumore di fondo. Per ottenere risultati ottimali, fornisci un audio registrato a una frequenza di campionamento pari o superiore a 16.000 Hz.

Nota: questo è un modello premium che ha un costo superiore alla tariffa standard.

Telefonata phone_call

Utilizza questo modello per trascrivere l'audio da una telefonata. In genere, l'audio del telefono viene registrato con una frequenza di campionamento di 8000 Hz.

Nota: il modello avanzato del telefono è un modello premium che costa più della tariffa standard.

ASR: comando e ricerca command_and_search

Utilizza questo modello per trascrivere clip audio più brevi. Alcuni esempi includono comandi vocali o ricerca vocale.

ASR: predefinito default

Usa questo modello se l'audio non rientra in nessun altro modello descritto in questa tabella. Ad esempio, puoi utilizzarlo per le registrazioni audio di lunga durata che prevedono un unico altoparlante. Il modello predefinito produrrà risultati di trascrizione per qualsiasi tipo di audio, inclusi i video clip che hanno un modello separato personalizzato su misura. Tuttavia, il riconoscimento dell'audio dei video clip utilizzando il modello predefinito vorrebbe ottenere risultati di qualità inferiore rispetto all'utilizzo del modello video. Idealmente, l'audio è ad alta fedeltà, registrato con una frequenza di campionamento pari o superiore a 16.000 Hz.

Dettatura medica medical_dictation

Utilizza questo modello per trascrivere note dettate da un medico.

Conversazione medica medical_conversation

Utilizza questo modello per trascrivere una conversazione tra un medico e un paziente.

Contenuti audio incorporati

L'audio incorporato è incluso nella richiesta di riconoscimento vocale quando trasmetti un parametro content nel campo audio della richiesta. Per l'audio incorporato fornito come contenuto all'interno di una richiesta gRPC, tale audio deve essere compatibile con la serializzazione Proto3 e fornito come dati binari. Per l'audio incorporato fornito come contenuto all'interno di una richiesta REST, tale audio deve essere compatibile con la serializzazione JSON e prima avere la codifica Base64. Per ulteriori informazioni, consulta la sezione Codifica di Base64 per l'audio.

Quando crei una richiesta utilizzando una libreria client di Google Cloud, in genere scrivi questi dati binari (o codificati in base 64) direttamente nel campo content.

Trasmettere audio a cui si fa riferimento in un URI

Più in genere, trasmetti un parametro uri nel campo audio della richiesta di riconoscimento vocale e rimanda a un file audio (in formato binario, non base64) situato su Google Cloud Storage nel seguente formato:

gs://bucket-name/path_to_audio_file

Ad esempio, la seguente parte di una richiesta Speech fa riferimento al file audio di esempio utilizzato all'interno di Quickstart:

...
    "audio": {
        "uri":"gs://cloud-samples-tests/speech/brooklyn.flac"
    }
...

Devi disporre di autorizzazioni di accesso adeguate per leggere i file Google Cloud Storage, ad esempio uno dei seguenti:

  • Può essere letto pubblicamente (come i nostri file audio di esempio)
  • Può essere letto dall'account di servizio, se utilizzi l'autorizzazione dell'account di servizio.
  • Può essere letto da un account utente, se utilizza OAuth a tre vie per l'autorizzazione dell'account utente.

Ulteriori informazioni sulla gestione dell'accesso a Google Cloud Storage sono disponibili nella pagina relativa alla creazione e gestione degli elenchi di controllo dell'accesso nella documentazione di Google Cloud Storage.

Risposte dell'API Speech-to-Text

Come indicato in precedenza, una risposta sincrona dell'API Speech-to-Text potrebbe richiedere del tempo per restituire risultati, proporzionale alla durata dell'audio fornito. Al termine dell'elaborazione, l'API restituirà una risposta come mostrato di seguito:

{
  "results": [
    {
      "alternatives": [
        {
          "confidence": 0.98267895,
          "transcript": "how old is the Brooklyn Bridge"
        }
      ]
    }
  ]
}

Questi campi sono illustrati di seguito:

  • results contiene l'elenco dei risultati (di tipo SpeechRecognitionResult), in cui ogni risultato corrisponde a un segmento di audio (i segmenti di audio sono separati da pause). Ogni risultato è costituito da uno o più dei seguenti campi:
    • alternatives contiene un elenco di possibili trascrizioni, di tipo SpeechRecognitionAlternatives. Il modo in cui viene visualizzata più di un'alternativa dipende dal fatto che tu ne abbia richieste più di una (impostando maxAlternatives su un valore maggiore di 1) e dal fatto che Speech-to-Text abbia prodotto alternative di qualità sufficientemente elevata. Ogni alternativa è costituita dai seguenti campi:

Se non è stato riconosciuto alcun parlato dell'audio fornito, l'elenco results restituito non conterrà alcun elemento. Generalmente i discorsi non riconosciuti sono il risultato di audio di scarsa qualità oppure di valori di codice lingua, codifica o frequenza di campionamento che non corrispondono all'audio fornito.

I componenti di questa risposta sono illustrati nelle sezioni seguenti.

Ogni risposta sincrona dell'API Speech-to-Text restituisce un elenco di risultati, anziché un singolo risultato contenente tutto l'audio riconosciuto. L'elenco di contenuti audio riconosciuti (all'interno degli elementi transcript) verrà visualizzato in ordine contiguo.

Seleziona alternative

Ogni risultato all'interno di una risposta di riconoscimento sincrono riuscito può contenere uno o più alternatives (se il valore maxAlternatives della richiesta è maggiore di 1). Se Speech-to-Text determina che un'alternativa ha un Valore di affidabilità sufficiente, tale alternativa sarà inclusa nella risposta. La prima alternativa nella risposta è sempre la migliore (più probabilmente) alternativa.

L'impostazione di un valore maxAlternatives superiore a 1 non implica né garantisce che verranno restituite più alternative. In generale, più di un'alternativa è più appropriata per fornire opzioni in tempo reale agli utenti che ottengono risultati tramite una richiesta di riconoscimento streaming.

Gestire le trascrizioni

Ogni alternativa fornita all'interno della risposta conterrà un elemento transcript, contenente il testo riconosciuto. Se sono presenti alternative sequenziali, dovresti concatenare queste trascrizioni insieme.

Il codice Python seguente esegue l'iterazione di un elenco di risultati e concatena le trascrizioni insieme. Tenete presente che utilizziamo la prima alternativa (il n°) in tutti i casi.

response = service_request.execute()
recognized_text = 'Transcribed Text: \n'
for i in range(len(response['results'])):
    recognized_text += response['results'][i]['alternatives'][0]['transcript']

Valori di affidabilità

Il valore confidence è una stima compresa tra 0,0 e 1,0. Viene calcolato aggregando i valori di probabilità assegnati a ciascuna parola nell'audio. Un numero più alto indica una maggiore probabilità stimata che le singole parole siano state riconosciute correttamente. In genere questo campo viene fornito solo per l'ipotesi principale e solo per i risultati in cui is_final=true. Ad esempio, puoi utilizzare il valore confidence per decidere se mostrare all'utente dei risultati alternativi o per chiedere conferma all'utente.

Tuttavia, tieni presente che il modello determina il "migliore" risultato migliore in base a un maggior numero di indicatori rispetto al solo punteggio confidence (ad esempio il contesto della frase). Per questo motivo, in alcuni casi il risultato migliore non ha il punteggio di affidabilità più alto. Se non hai richiesto più risultati alternativi, il singolo risultato "migliore" potrebbe avere un valore di confidenza inferiore rispetto al previsto. Ciò può verificarsi, ad esempio, nei casi in cui vengono utilizzate parole rare. A una parola usata raramente può essere assegnato un valore di "probabilità" basso, anche se viene riconosciuto correttamente. Se il modello determina che la parola rara è l'opzione più probabile in base al contesto, il risultato viene restituito in alto anche se il valore confidence del risultato è inferiore a quello delle opzioni alternative.

Richieste e risposte asincrone

Una richiesta API Speech-to-Text asincrona al metodo LongRunningRecognize è identica a una richiesta API Speech-to-Text sincrona. Tuttavia, invece di restituire una risposta, la richiesta asincrona avvia un'operazione a lunga esecuzione (di tipo operazione) e restituisce immediatamente questa operazione al chiamante. Puoi utilizzare il riconoscimento vocale asincrono con audio di qualsiasi durata fino a 480 minuti.

Di seguito è riportata una risposta tipica di operazione:

{
  "name": "operation_name",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.speech.v1.LongRunningRecognizeMetadata"
    "progressPercent": 34,
    "startTime": "2016-08-30T23:26:29.579144Z",
    "lastUpdateTime": "2016-08-30T23:26:29.826903Z"
  }
}

Tieni presente che non sono ancora presenti risultati. Speech-to-Text continuerà a elaborare l'audio e utilizzerà questa operazione per archiviare i risultati. I risultati verranno visualizzati nel campo response dell'operazione al termine della richiesta LongRunningRecognize.

Di seguito è riportata una risposta completa dopo il completamento della richiesta:

{
  "name": "1268386125834704889",
  "metadata": {
    "lastUpdateTime": "2016-08-31T00:16:32.169Z",
    "@type": "type.googleapis.com/google.cloud.speech.v1.LongrunningRecognizeMetadata",
    "startTime": "2016-08-31T00:16:29.539820Z",
    "progressPercent": 100
  }
  "response": {
    "@type": "type.googleapis.com/google.cloud.speech.v1.LongRunningRecognizeResponse",
    "results": [{
      "alternatives": [{
        "confidence": 0.98267895,
        "transcript": "how old is the Brooklyn Bridge"
      }]}]
  },
  "done": True,
}

Tieni presente che done è stato impostato su True e che l'operazione response contiene un insieme di risultati di tipo SpeechSpeechResult, che è dello stesso tipo restituito da una richiesta sincrona di riconoscimento dell'API Speech-to-Text.

Per impostazione predefinita, una risposta REST asincrona imposterà done come valore predefinito. Tuttavia, poiché JSON non richiede valori predefiniti all'interno di un campo, quando si verifica se un'operazione è completata, è necessario verificare sia che il campo done sia presente sia che sia impostato su True.

Richieste di riconoscimento API Streaming Speech-to-Text

Una chiamata di riconoscimento dell'API Speech-to-Text di streaming è progettata per l'acquisizione e il riconoscimento in tempo reale dell'audio, all'interno di uno stream bidirezionale. La tua applicazione può inviare audio nello stream della richiesta e ricevere risultati provvisori e di riconoscimento finale nello stream della risposta in tempo reale. I risultati provvisori rappresentano il risultato di riconoscimento corrente per una sezione di audio, mentre il risultato di riconoscimento finale rappresenta l'ultima e migliore ipotesi per quella sezione di audio.

Richieste di streaming

A differenza delle chiamate sincrone e asincrone, in cui invii sia la configurazione che l'audio all'interno di una singola richiesta, la chiamata all'API di streaming Speech richiede l'invio di più richieste. I primi StreamingRecognizeRequest devono contenere una configurazione di tipo StreamingRiconoscimentoConfig senza audio associato. I StreamingRecognizeRequest successivi inviati nello stesso stream saranno quindi costituiti da frame consecutivi di byte audio non elaborati.

Un StreamingRecognitionConfig è costituito dai seguenti campi:

  • config: (obbligatorio) contiene le informazioni di configurazione per l'audio di tipo RecognitionConfig ed è lo stesso mostrato nelle richieste sincrone e asincrone.
  • single_utterance: (facoltativo, il valore predefinito è false) indica se la richiesta deve terminare automaticamente dopo che il rilevamento vocale non viene più rilevato. Se impostato, Speech-to-Text rileverà pause, silenzio o audio non vocale per determinare quando interrompere il riconoscimento. Se non è impostato, lo stream continuerà ad ascoltare ed elaborare l'audio finché non verrà chiuso direttamente o finché la sua lunghezza massima non sarà stata superata. L'impostazione di single_utterance su true è utile per l'elaborazione dei comandi vocali.
  • interim_results - (facoltativo, valore predefinito: false) indica che questa richiesta di streaming dovrebbe restituire risultati temporanei che possono essere perfezionati in un secondo momento (dopo l'elaborazione di più audio). I risultati provvisori verranno annotati nelle risposte tramite l'impostazione di is_final su false.

Streaming delle risposte

I risultati del riconoscimento vocale di audio in streaming vengono restituiti in una serie di risposte di tipo StreamingRecognitionResponse. Questa risposta è composta dai seguenti campi:

  • speechEventType contiene eventi di tipo SpeechEventType. Il valore di questi eventi indicherà quando è stata determinata una singola frase. Gli eventi vocali vengono utilizzati come indicatori all'interno della risposta dello stream.
  • results contiene l'elenco dei risultati, che possono essere risultati provvisori o finali, di tipo StreamingRecognitionResult. L'elenco results contiene i seguenti campi secondari:
    • alternatives contiene un elenco di trascrizioni alternative.
    • isFinal indica se i risultati ottenuti all'interno di questa voce dell'elenco sono provvisori o definitivi. Google potrebbe restituire più risultati isFinal=true in un singolo stream, ma il risultato isFinal=true è garantito solo dopo la chiusura dello stream in scrittura (metà chiusura).
    • stability indica la volatilità dei risultati ottenuti finora, con 0.0 che indica instabilità completa, mentre 1.0 indica stabilità completa. Tieni presente che, a differenza di questa operazione, che stima se una trascrizione è corretta, stability stima se il risultato parziale può cambiare. Se il isFinal è impostato su true, stability non verrà impostato.