Nozioni di base su Speech-to-Text

Panoramica

Questo documento è una guida di base sull'utilizzo di Speech-to-Text. Questa guida concettuale illustra i tipi di richieste che puoi effettuare per Speech-to-Text, come crearle e come gestire le loro risposte. Prima di approfondire l'argomento dell'API, consigliamo a tutti gli utenti di Speech-to-Text di leggere questa guida e uno dei tutorial associati.

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 gratuitamente

Richieste di riconoscimento vocale

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

  • Il riconoscimento sincrono (REST e gRPC) invia dati audio all'API Speech-to-Text, esegue il riconoscimento su tali dati e restituisce risultati dopo l'elaborazione di tutto l'audio. Le richieste di riconoscimento sincrono hanno una durata massima di 1 minuto nei dati audio.

  • 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 effettuare periodicamente sondaggi per conoscere i risultati del riconoscimento. Utilizza richieste asincrone per dati audio di qualsiasi durata fino a 480 minuti.

  • Il riconoscimento in streaming (solo gRPC) esegue il riconoscimento sui dati audio forniti in uno stream bidirezionale gRPC. Le richieste di streaming sono progettate per scopi di riconoscimento in tempo reale, ad esempio per l'acquisizione di audio in diretta da un microfono. Il riconoscimento dello streaming fornisce risultati temporanei 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 relative risposte e come gestire le risposte 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 vocali. 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, 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 solitamente l'audio più velocemente di quanto avviene in tempo reale, elaborando in media 30 secondi di audio in 15 secondi. In caso di scarsa qualità audio, la richiesta di riconoscimento può richiedere molto più tempo.

Speech-to-Text offre metodi REST e gRPC per le chiamate alle API sincrone e asincrone di Speech-to-Text. Questo articolo illustra l'API REST perché è più semplice mostrare 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 sincrone

Una richiesta API Speech-to-Text sincrona consiste in una configurazione del riconoscimento vocale e in dati audio. Di seguito è riportata una richiesta di esempio:

{
    "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 config di riconoscimento vocale (di tipo RecognitionConfig). Un elemento 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 scoprire di più, consulta l'articolo 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 ulteriori informazioni sulle frequenze di esempio, 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 + l'area geografica/il paese da utilizzare per il riconoscimento vocale dell'audio fornito. Il codice della lingua deve essere un identificatore BCP-47. Tieni presente che in genere i codici lingua sono costituiti da tag della lingua principale e sottotag di area geografica secondaria per indicare i dialetti (ad es. 'en' per l'inglese e 'US' per gli Stati Uniti nell'esempio precedente). Per un elenco delle lingue supportate, consulta la pagina 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 restituirà alternative solo se il riconoscimento riconosce 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) e quindi sono più adatte per le richieste di riconoscimento dello streaming.
  • profanityFilter: (facoltativo) indica se filtrare le parole o le frasi volgari. Le parole filtrate conterranno la prima lettera e gli asterischi rimanenti per i caratteri rimanenti (ad esempio f***i). Il filtro per il linguaggio volgare funziona su singole parole, non rileva un linguaggio offensivo o offensivo che sia una frase o una combinazione di parole.
  • speechContext - (facoltativo) contiene ulteriori informazioni contestuali 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 ulteriori informazioni, consulta la sezione Incorporare contenuti audio di seguito. L'audio trasmesso direttamente in 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 di Google Cloud Storage (del formato gs://bucket-name/path_to_audio_file). Consulta la sezione Trasmettere audio di riferimento con un URI di seguito.

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

Frequenza di campionamento

Devi specificare la frequenza di campionamento dell'audio nel campo sampleRateHertz della configurazione della richiesta e deve corrispondere alla frequenza di campionamento dei contenuti o dello stream audio associati. La funzionalità Speech-to-Text è supportata con frequenze di campionamento comprese tra 8000 e 48000 Hz. 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 hai la possibilità di codificare il materiale di origine, acquisisci l'audio utilizzando una frequenza di campionamento di 16000 Hz. I valori inferiori potrebbero compromettere la precisione del riconoscimento vocale e i livelli più elevati non hanno alcun 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 rigenerare 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 accurati. Se devi utilizzare tale audio, forniscilo all'API Speech con la sua 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) dell'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 Supporto lingue.

Offset temporali (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 di tempo rappresenta il tempo trascorso dall'inizio dell'audio, con incrementi di 100 ms.

Gli offset di tempo sono particolarmente utili per analizzare i file audio più lunghi, in cui potresti dover cercare una determinata parola nel testo riconosciuto e individuarla (cercare) nell'audio originale. Gli offset temporali 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 del riconoscimento.

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

{
"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 vari modelli di machine learning per trascrivere il tuo 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. Ciò consente all'API Speech-to-Text di elaborare i file audio utilizzando un modello di machine learning addestrato a riconoscere l'audio vocale da quel tipo specifico di sorgente.

Per specificare un modello per il 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 la trascrizione dei tuoi file audio.

Tipo Costante di enumerazione Descrizione
Ultima lunga latest_long

Utilizza questo modello per qualsiasi tipo di contenuto di lunga durata, come contenuti multimediali o conversazioni spontanee e conversazioni. Considera l'utilizzo di questo modello al posto del modello video, soprattutto se il modello video non è disponibile nella tua lingua di destinazione. Puoi anche utilizzarlo al posto del modello predefinito.

Short più recente latest_short

Utilizza questo modello per frasi brevi di alcuni secondi. È utile per cercare di acquisire comandi o altri casi d'uso relativi alla sintesi vocale diretta. Considera l'utilizzo di questo modello anziché del comando e del modello di ricerca.

Video video

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

Nota: si tratta di un modello premium che costa più della tariffa standard.

Chiamata telefonica 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 di telefono avanzato è un modello premium con un costo superiore alla tariffa standard.

ASR: comando e ricerca command_and_search

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

ASR: predefinito default

Utilizza questo modello se l'audio non corrisponde a nessuno degli altri modelli descritti in questa tabella. Ad esempio, puoi utilizzarlo per le registrazioni audio di lunga durata che hanno un unico speaker. Il modello predefinito produrrà risultati di trascrizione per qualsiasi tipo di audio, inclusi i clip video che hanno un modello separato specificamente adattato. Tuttavia, se riconosci l'audio dei video clip con il modello predefinito, ottieni risultati di qualità inferiore rispetto al modello video. Idealmente l'audio è ad alta fedeltà e viene registrato a una frequenza di campionamento pari o superiore a 16.000 Hz.

Dettatura medica medical_dictation

Usa questo modello per trascrivere le 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 viene 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 deve essere codificato in Base64. Per ulteriori informazioni, consulta la sezione Codificare l'audio in Base64.

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 fa riferimento un URI

Più in genere, trasmetti un parametro uri nel campo audio della richiesta di riconoscimento vocale, puntando a un file audio (in formato binario, non base64) che si trova 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 della Quickstart:

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

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

  • Contenuti leggibili pubblicamente (come i nostri file audio di esempio)
  • Lettura dal tuo account di servizio, se utilizzi l'autorizzazione dell'account di servizio.
  • Leggibile da un account utente, se utilizzi OAuth a tre vie per l'autorizzazione dell'account utente.

Maggiori informazioni sulla gestione dell'accesso a Google Cloud Storage sono disponibili in Creazione e gestione degli elenchi di controllo di accesso nella documentazione di Google Cloud Storage.

Risposte API Speech-to-Text

Come indicato in precedenza, una risposta sincrona all'API Speech-to-Text potrebbe richiedere del tempo per restituire i 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 spiegati di seguito:

  • results contiene l'elenco dei risultati (di tipo SpeechRecognitionResult), in cui ogni risultato corrisponde a un segmento di audio (segmenti di audio separati da pause). Ogni risultato sarà costituito da uno o più dei seguenti campi:
    • alternatives contiene un elenco di possibili trascrizioni, di tipo SpeechRecognitionAlternatives. Il modo per visualizzare più di un'alternativa dipende dalla scelta o meno di più di un'alternativa (impostando maxAlternatives per un valore maggiore di 1) e dal fatto che Speech-to-Text abbia prodotto alternative di qualità sufficientemente elevata. Ogni alternativa sarà composta dai seguenti campi:

Se non è stato riconosciuto alcun discorso dall'audio fornito, l'elenco results restituito non conterrà elementi. Spesso, i discorsi non riconosciuti sono il risultato di audio di bassa qualità o di codice della lingua, codifica o valori di frequenza di campionamento non corrispondenti all'audio fornito.

I componenti di questa risposta sono illustrati nelle seguenti sezioni.

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

Seleziona alternative

Ciascun risultato all'interno di una risposta di riconoscimento sincrono riuscito può contenere uno o più alternatives (se il valore di maxAlternatives per la richiesta è superiore a 1). Se Speech-to-Text determina che un'alternativa ha un Valore di fiducia sufficiente, tale alternativa verrà inclusa nella risposta. La prima alternativa nella risposta è sempre l'alternativa migliore (più probabile).

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 ricevono risultati tramite una richiesta di riconoscimento di flussi di dati.

Gestione delle trascrizioni

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

Il codice Python seguente esegue l'iterazione di un elenco di risultati e concatena le trascrizioni insieme. Prendiamo in considerazione la prima alternativa (la zero) 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 affidabilità

Il valore di confidence è una stima compresa tra 0,0 e 1,0. Viene calcolato aggregando i valori di probabilità assegnati per ogni parola nell'audio. Un numero più alto indica una stima più probabile 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 risultati alternativi all'utente o chiedere conferma all'utente.

Tieni presente, tuttavia, che il modello determina il risultato"migliore"e in base alla posizione in base a più indicatori rispetto al solo punteggio di confidence (ad esempio, il contesto della frase). Per questo motivo, a volte il punteggio di affidabilità non risulta elevato. Se non hai richiesto più risultati alternativi, il singolo risultato restituito potrebbe avere un valore di confidenza inferiore rispetto al previsto. Questo può accadere, ad esempio, nei casi in cui vengono utilizzate parole rare. A una parola meno usata può essere assegnato un basso valore di probabilità, anche se riconosciuto correttamente. Se il modello stabilisce che la parola rara è l'opzione più probabile in base al contesto, il risultato viene restituito in cima anche se il valore di confidence del risultato è inferiore a quello delle opzioni alternative.

Richieste e risposte asincrone

Una richiesta API Speech-to-Text asincrona per il metodo LongRunningRecognize è identica a una richiesta API Speech-to-Text sincrona. Tuttavia, anziché restituire una risposta, la richiesta asincrona avvierà un'operazione a lunga esecuzione (di tipo operazione) e restituirà questa operazione al chiamante immediatamente.

Di seguito è riportata una risposta operativa tipica:

{
  "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 restituito al completamento della richiesta LongRunningRecognize.

Di seguito viene 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 è lo stesso tipo restituito da una richiesta sincrona di riconoscimento vocale.

Per impostazione predefinita, una risposta REST asincrona imposterà done sul valore predefinito. Tuttavia, poiché JSON non richiede la presenza di valori predefiniti all'interno di un campo, quando si verifica se un'operazione è completata, dovresti testare 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 dell'audio in tempo reale all'interno di uno stream bidirezionale. L'applicazione può inviare l'audio nel flusso di richiesta e ricevere i risultati provvisori e di riconoscimento finali nello stream di risposta in tempo reale. I risultati provvisori rappresentano il risultato corrente di riconoscimento di una sezione di audio, mentre il risultato finale di riconoscimento rappresenta l'ultima ipotesi migliore per quella sezione di audio.

Richieste di streaming

A differenza delle chiamate sincrone e asincrone, in cui invii sia la configurazione sia l'audio all'interno di una singola richiesta, richiama l'API Speech in streaming per inviare più richieste. Il primo elemento StreamingRecognizeRequest deve contenere una configurazione di tipo StreamingRecognitionConfig senza audio di accompagnamento. I successivi StreamingRecognizeRequest inviati sullo stesso stream saranno 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 questa richiesta dovrebbe terminare automaticamente dopo che il parlato non viene più rilevato. Se viene impostata, Speech-to-Text rileva le pause, il silenzio o l'audio non vocale per determinare quando terminare il riconoscimento. Se non viene configurato, il flusso continuerà a rimanere in ascolto e a elaborare l'audio finché non verrà chiuso direttamente o fino a quando non verrà superato il limite di durata. 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 potrebbero essere perfezionati in un secondo momento (dopo l'elaborazione di più audio). I risultati provvisori saranno annotati nelle risposte tramite l'impostazione di is_final su false.

Risposte in streaming

I risultati del riconoscimento vocale per lo streaming vengono restituiti all'interno di una serie di risposte di tipo StreamingRecognitionResponse. Tale risposta è costituita dai seguenti campi:

  • speechEventType contiene eventi di tipo SpeechEventType. Il valore di questi eventi indicherà quando è stata stabilita una singola frase. Gli eventi vocali vengono utilizzati come indicatori nella 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 dell'elenco sono provvisori o finali. Google potrebbe restituire più risultati isFinal=true in un singolo stream, ma il risultato isFinal=true è garantito dopo la chiusura dello stream di scrittura (mezza chiusura).
    • stability indica la volatilità dei risultati ottenuti finora, con 0.0 che indica la completa instabilità, mentre 1.0 indica la completa stabilità. Tieni presente che, a differenza di questa metrica, che stima se una trascrizione è corretta, stability stima se il risultato parziale può cambiare. Se isFinal è impostato su true, stability non verrà impostato.