Princípios básicos do Cloud Speech-to-Text

Este documento é um guia dos princípios básicos do uso do Cloud Speech-to-Text. Neste guia conceitual, são abordados os tipos de solicitações que podem ser feitas para o Speech-to-Text, como construir essas solicitações e como lidar com as respostas. Recomendamos que todos os usuários do Speech-to-Text leiam este guia e um dos tutoriais associados antes de se aprofundar na API em si.

Solicitações de fala

O Speech-to-Text tem três métodos principais para realizar o reconhecimento de fala. Eles estão listados abaixo:

  • O reconhecimento síncrono (REST e gRPC) envia dados de áudio para a API Speech-to-Text, executa o reconhecimento nesses dados e retorna os resultados depois que todo o áudio foi processado. As solicitações de reconhecimento síncrono são limitadas a dados de áudio de até um minuto de duração.

  • O reconhecimento assíncrono (REST e gRPC) envia dados de áudio para a API Speech-to-Text e inicia uma operação de longa duração. Usando essa operação, é possível pesquisar periodicamente resultados de reconhecimento. Use solicitações assíncronas para dados de áudio de qualquer duração de até 480 minutos.

  • O reconhecimento de streaming (somente gRPC) realiza reconhecimento em dados de áudio fornecidos em um stream gRPC bidirecional. As solicitações de streaming são projetadas para fins de reconhecimento em tempo real, como captura de áudio ao vivo de um microfone. O reconhecimento em streaming oferece resultados provisórios enquanto o áudio está sendo capturado, permitindo que o resultado apareça, por exemplo, enquanto um usuário ainda está falando.

As solicitações contêm parâmetros de configuração, bem como dados de áudio. Nas seções a seguir, descrevemos com mais detalhes esses tipos de solicitações de reconhecimento, as respostas que geram e como lidar com essas respostas.

Reconhecimento da Speech-to-Text API

Uma solicitação de reconhecimento síncrono da API Speech-to-Text é o método mais simples para executar o reconhecimento em dados de áudio de fala. O Speech-to-Text pode processar até um minuto de dados de áudio de fala enviados em uma solicitação síncrona. Depois que o Speech-to-Text processa e reconhece todo o áudio, ele retorna uma resposta.

Uma solicitação síncrona é um bloqueio. O Speech-to-Text normalmente processa o áudio mais rápido do que o tempo real, processando 30 segundos de áudio em 15 segundos, em média. Em casos de má qualidade de áudio, sua solicitação de reconhecimento pode demorar muito mais tempo.

O Speech-to-Text tem os métodos REST e gRPC para chamar solicitações assíncronas e síncronas da API Speech-to-Text. Neste artigo, demonstramos a API REST porque é mais simples mostrar e explicar o uso básico da API com ela. No entanto, a composição básica de uma solicitação REST ou gRPC é muito parecida. As solicitações de reconhecimento em streaming só são compatíveis com o gRPC.

Solicitações síncronas de reconhecimento de fala

Uma solicitação síncrona da Speech-to-Text API consiste em uma configuração de reconhecimento de fala e dados de áudio. Uma solicitação de amostra é mostrada abaixo:

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

Todas as solicitações de reconhecimento síncrono da API Speech-to-Text precisam incluir um campo config de reconhecimento de fala, do tipo RecognitionConfig. Um RecognitionConfig contém os seguintes subcampos:

  • encoding: obrigatório. Especifica o esquema de codificação do áudio fornecido (do tipo AudioEncoding). Se você tiver uma opção de codec, prefira uma codificação sem perdas, como FLAC ou LINEAR16 para ter melhor desempenho. Para saber mais informações, consulte Codificações de áudio. O campo encoding é opcional para arquivos FLAC e WAV em que a codificação está incluída no cabeçalho do arquivo.
  • sampleRateHertz: obrigatório. Especifica a taxa da amostra (em Hertz) do áudio fornecido. Para saber mais informações sobre essa taxa, consulte as Taxas de amostras abaixo. O campo sampleRateHertz é opcional para arquivos FLAC e WAV em que a taxa da amostra está incluída no cabeçalho do arquivo.
  • languageCode: obrigatório. Contém idioma mais região/localidade para usar o reconhecimento de fala do áudio fornecido. O código de idioma precisa ser um identificador BCP-47. Observe que os códigos de idioma geralmente consistem em tags de idioma principais e subtags de região secundárias para indicar dialetos. No exemplo acima, "en" para inglês e "US" para os Estados Unidos. Para ver uma lista de idiomas compatíveis, consulte Idiomas compatíveis.
  • maxAlternatives: opcional, o padrão é 1. Indica o número de transcrições alternativas para oferecer na resposta. Por padrão, a API Speech-to-Text fornece uma transcrição principal. Se você quiser avaliar diferentes alternativas, configure maxAlternatives para um valor maior. Observe que o Speech-to-Text só retornará alternativas se o reconhecedor determinar que elas têm qualidade suficiente. De modo geral, elas são mais apropriadas para solicitações em tempo real que exigem feedback do usuário (por exemplo, comandos de voz) e, portanto, são mais adequadas para solicitações de reconhecimento de streaming.
  • profanityFilter: opcional. Indica se é necessário filtrar palavras ou frases impróprias. As palavras filtradas contêm a primeira letra e asteriscos no lugar dos caracteres restantes (por exemplo, f***). O filtro de palavras impróprias opera em palavras isoladas e não detecta discurso abusivo ou ofensivo em uma frase ou uma combinação de palavras.
  • speechContext: opcional. Contém mais informações contextuais para o processamento desse áudio. Um contexto contém o seguinte subcampo:
    • phrases: contém uma lista de palavras e frases que oferecem dicas para a tarefa de reconhecimento de fala. Consulte Dicas de frase abaixo.

O áudio é fornecido à API Speech por meio do parâmetro audio do tipo RecognitionAudio. O campo audio contém um dos seguintes subcampos:

  • content contém o áudio a ser avaliado, incorporado na solicitação. Para mais informações, consulte Como incorporar conteúdo de áudio a seguir. O áudio passado diretamente neste campo é limitado a um minuto de duração.
  • uri contém um URI apontando para o conteúdo de áudio. O arquivo não pode estar compactado (por exemplo, gzip). Atualmente, este campo precisa conter um URI do Google Cloud Storage no formato gs://bucket-name/path_to_audio_file. Consulte Como passar o áudio referenciado por um URI a seguir.

Mais informações sobre esses parâmetros de resposta e solicitação podem ser vistas abaixo.

Taxas de amostra

Você especifica a taxa de amostragem do áudio no campo sampleRateHertz da configuração da solicitação, e ela precisa corresponder à taxa de amostragem do stream ou conteúdo de áudio associado. Taxas de amostragem entre 8.000 Hz e 48.000 Hz são aceitas no Speech-to-Text. A taxa de amostragem de um arquivo FLAC ou WAV pode ser determinada a partir do cabeçalho do arquivo, e não do campo sampleRateHertz.

Se houver uma escolha ao codificar o material de origem, capture o áudio usando uma taxa de amostragem de 16.000 Hz. Valores inferiores a esse podem prejudicar a precisão do reconhecimento de fala, e níveis mais altos não têm efeito apreciável na qualidade do reconhecimento de fala.

No entanto, se os dados de áudio já foram gravados a uma taxa de amostra existente que não seja 16.000 Hz, não recrie seu áudio para 16.000 Hz. A maior parte do áudio de telefonia legado, por exemplo, usa taxas de amostra de 8.000 Hz, que pode oferecer resultados menos precisos. Se você precisa usar esse áudio, apresente-o à Speech API com a taxa de amostra nativa.

Idiomas

O mecanismo de reconhecimento do Speech-to-Text é compatível com vários idiomas e dialetos. Especifique o idioma e o dialeto nacional ou regional do áudio no campo languageCode da configuração da solicitação usando um identificador BCP-47.

Uma lista completa de idiomas compatíveis e a explicação das tags do identificador BCP-47 estão disponíveis na página Compatibilidade de idiomas.

Ajustes de horário (carimbos de data/hora)

O Speech-to-Text pode incluir valores de ajuste de horário (carimbos de data/hora) referentes ao início e ao fim de cada palavra falada que é reconhecida no áudio fornecido. Um valor de ajuste de horário representa a quantidade de tempo decorrido desde o início do áudio, em incrementos de 100 ms.

Os ajustes de horário são especialmente úteis para analisar arquivos de áudio mais longos, quando for necessário pesquisar uma determinada palavra no texto reconhecido e localizá-la (procurar) no áudio original. Os ajustes de horário são compatíveis com todos os métodos de reconhecimento: recognize, streamingrecognize e longrunningrecognize.

Os valores de ajuste de horário só são incluídos para a primeira alternativa apresentada na resposta de reconhecimento.

Para incluir um ajuste de horário nos resultados da solicitação, defina o parâmetro enableWordTimeOffsets como true na configuração da solicitação. Para exemplos que usam a REST API ou as bibliotecas de cliente, consulte Como usar ajustes de horário (carimbos de data/hora). Por exemplo, é possível incluir o parâmetro enableWordTimeOffsets na configuração da solicitação, conforme mostrado aqui:

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

O resultado retornado pela Speech-to-Text API conterá valores de ajuste de horário para cada palavra reconhecida conforme mostrado a seguir:

{
  "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,
          }
        ]
      }
    ]
  }
}

Como selecionar modelos

O Speech-to-Text pode usar um dos vários modelos de machine learning para transcrever seu arquivo de áudio. O Google treinou esses modelos de reconhecimento de fala para origens e tipos de áudio específicos.

Ao enviar uma solicitação de transcrição de áudio para o Speech-to-Text, é possível melhorar os resultados recebidos especificando a origem do áudio original. Isso permite que a API Speech-to-Text processe seus arquivos de áudio usando um modelo de machine learning treinado para reconhecer o áudio de fala daquele tipo específico de origem.

Para especificar um modelo de reconhecimento de fala, inclua o campo model no objeto RecognitionConfig da sua solicitação, definindo o modelo que você quer usar.

O Speech-to-Text pode usar os tipos de modelos de machine learning a seguir para transcrever seus arquivos de áudio.

Tipo Constante de enum Descrição Idiomas compatíveis
Vídeo video

Use este modelo para transcrever áudio em clipes de vídeo ou que inclua vários interlocutores. Para conseguir melhores resultados, forneça áudio gravado a uma taxa de amostragem de 16.000 Hz ou mais.

Observação: este é um modelo especial que custa mais do que a taxa padrão.

Somente para en-US
Chamada telefônica phone_call

Use este modelo para transcrever áudio de uma chamada telefônica. Normalmente, o áudio do smartphone é gravado a uma taxa de amostragem de 8.000 Hz.

Observação: este é um modelo premium que custa mais do que a taxa padrão.

Somente para en-US
Comando e pesquisa command_and_search

Use este modelo para transcrever clipes de áudio mais curtos. Alguns exemplos incluem comandos de voz ou pesquisa por voz.

Todos os idiomas disponíveis
Padrão default

Use este modelo se o áudio não se encaixar em um dos modelos descritos anteriormente. Por exemplo, você pode usá-lo para gravações de áudio de formato longo que apresentam apenas um único interlocutor. O ideal é que o áudio seja de alta fidelidade, gravado a uma taxa de amostragem de 16.000 Hz ou mais.

Todos os idiomas disponíveis

Dicas de frase

Para qualquer tarefa de reconhecimento, também é possível passar um speechContext, do tipo SpeechContext, que apresenta informações para auxiliar no processamento do áudio em questão. Atualmente, um contexto pode conter uma lista de phrases para atuar como "dicas" para o reconhecedor. Essas frases podem aumentar a probabilidade de reconhecimento de tais palavras ou frases.

É possível usar essas dicas de frases de algumas maneiras:

  • Melhorar a precisão de palavras e frases específicas que tendem a ser representadas demais em dados de áudio. Por exemplo, se comandos específicos forem normalmente falados pelo usuário, ofereça-os como dicas de frases. Essas frases adicionais podem ser particularmente úteis se o áudio fornecido contém ruído ou se a fala não é muito clara.

  • Acrescentar palavras ao vocabulário da tarefa de reconhecimento. O Speech-to-Text inclui um vocabulário muito extenso. No entanto, se nomes próprios ou palavras específicas de domínio estiverem fora do vocabulário, adicione-as às frases apresentadas no speechContext da solicitação.

As frases podem ser fornecidas tanto como pequenos grupos de palavras quanto como palavras únicas. Consulte Limites de conteúdo para limites no número e no tamanho dessas frases. Quando apresentadas como frases de várias palavras, as dicas aumentam a probabilidade de reconhecer essas palavras em sequência, mas também, em menor extensão, aumentam a probabilidade de reconhecer partes da frase, incluindo palavras individuais.

Por exemplo, o arquivo commercial_mono contém um nome de produto, "Chromecast". Se o reconhecimento for realizado sem fornecer essas palavras fora do vocabulário, o reconhecedor não retornará a transcrição que você quer. Em vez disso, ele pode não retornar palavras que estão no vocabulário, como "Chrome cast".

{
  "config": {
    "encoding":"LINEAR16",
    "sampleRateHertz": 8000,
    "languageCode":"en-US"
  },
  "audio":{
      "uri":"gs://cloud-samples-tests/speech/commercial_mono.wav"
  }
}

No entanto, quando essas palavras fora do vocabulário são fornecidas com a solicitação de reconhecimento, o reconhecedor retorna uma resposta mais precisa, incluindo as transcrições corretas do "Chromecast".

{
  "config": {
    "encoding":"LINEAR16",
    "sampleRateHertz": 8000,
    "languageCode":"en-US",
    "speechContexts": [{
      "phrases": ["Chromecast"]
     }]
  },
  "audio":{
    "uri":"gs://cloud-samples-tests/speech/commercial_mono.wav"
  }
}

Como alternativa, se certas palavras são ditas juntas em uma frase, é possível agrupá-las, o que pode aumentar a probabilidade de que o Speech-to-Text as reconheça.

{
  "config": {
    "encoding":"LINEAR16",
    "sampleRateHertz": 8000,
    "languageCode":"en-US",
    "speechContexts": [{
      "phrases": ["Chromecast", "Chromecast model"]
     }]
  },
  "audio":{
    "uri":"gs://cloud-samples-tests/speech/commercial_mono.wav"
  }
}

Em geral, tenha cuidado ao oferecer dicas de contexto de fala. Uma melhor precisão de reconhecimento pode ser alcançada limitando as frases apenas àquelas que se espera que sejam faladas. Por exemplo, se houver vários estados de diálogo ou modos de operação de dispositivo, forneça apenas as dicas que correspondam ao estado atual, em vez de fornecer sugestões para todos os estados possíveis.

Como incorporar conteúdo de áudio

O áudio incorporado é incluído na solicitação de reconhecimento de fala durante a passagem de um parâmetro content no campo audio da solicitação. O áudio incorporado apresentado como conteúdo dentro de uma solicitação do gRPC precisa ser compatível com a serialização Proto3 e oferecido como dados binários. O áudio incorporado apresentado como conteúdo dentro de uma solicitação da REST precisa ser compatível com serialização JSON e primeiro ser codificado em Base64. Consulte Como codificar o áudio em Base64 para mais informações.

Ao criar uma solicitação usando uma biblioteca de cliente do Google Cloud, geralmente você grava esses dados binários ou codificados em base64 diretamente no campo content

Por exemplo, o código Python a seguir leva um arquivo de áudio passado, o Base64 codifica os dados de áudio e, em seguida, constrói uma solicitação de reconhecimento síncrono:

import base64
import googleapiclient.discovery

with open(speech_file, 'rb') as speech:
    # Base64 encode the binary audio file for inclusion in the JSON
    # request.
    speech_content = base64.b64encode(speech.read())

# Construct the request
service = googleapiclient.discovery.build('speech', 'v1')
service_request = service.speech().recognize(
    body={
        "config": {
            "encoding": "LINEAR16",  # raw 16-bit signed LE samples
            "sampleRateHertz": 16000,  # 16 khz
            "languageCode": "en-US",  # a BCP-47 language tag
        },
        "audio": {
            "content": speech_content
            }
        })

Como passar o áudio referenciado por um URI

Normalmente você passará um parâmetro uri no campo de audio da solicitação de Speech, apontando para um arquivo de áudio (em formato binário, não base64) localizado no Google Cloud Storage da seguinte maneira:

gs://bucket-name/path_to_audio_file

Por exemplo, a parte a seguir de uma solicitação de Speech faz referência ao arquivo de áudio de amostra usado no Guia de início rápido:

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

Você precisa ter permissões de acesso apropriadas para ler arquivos do Google Cloud Storage, como uma das mostradas a seguir:

  • Leitura pública (como de arquivos de áudio de amostra).
  • Leitura pela conta de serviço, se estiver usando a autorização da conta de serviço.
  • Leitura por uma conta de usuário, se estiver usando o OAuth de três etapas para autorização da conta de usuário.

Mais informações sobre como gerenciar o acesso ao Google Cloud Storage estão disponíveis em Como criar e gerenciar listas de controle de acesso na documentação do Google Cloud Storage.

Respostas da Speech-to-Text API

Como indicado anteriormente, uma resposta síncrona da Speech-to-Text API pode levar algum tempo para retornar resultados, que é proporcional à duração do áudio fornecido. Depois de processado, a API retornará uma resposta conforme mostrado abaixo:

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

Estes campos são explicados abaixo:

  • results contém a lista de resultados (do tipo SpeechRecognitionResult) em que cada resultado corresponde a um segmento de áudio (esses segmentos são separados por pausas). Cada resultado consistirá em um ou mais dos seguintes campos:
    • alternatives contém uma lista de possíveis transcrições, do tipo SpeechRecognitionAlternatives. A exibição de mais de uma alternativa depende de sua solicitação por mais alternativas (configurando maxAlternatives para um valor maior que 1) e da produção de alternativas pelo Speech-to-Text com qualidade suficientemente alta. Cada alternativa consistirá nos seguintes campos:

Se nenhum discurso do áudio fornecido puder ser reconhecido, a lista de results retornados não conterá itens. O discurso não reconhecido é geralmente o resultado de áudio de qualidade muito baixa ou de códigos de idioma, codificação ou valores de taxa de amostra que não correspondem ao áudio apresentado.

Os componentes dessa resposta são explicados nas seções a seguir.

Cada resposta síncrona da Speech-to-Text API retorna uma lista de resultados, em vez de um único resultado que contém todo o áudio reconhecido. A lista de áudios reconhecidos (dentro dos elementos da transcript) aparecerá em ordem contígua.

Como selecionar alternativas

Cada resultado dentro de uma resposta de reconhecimento síncrona bem-sucedida pode conter uma ou mais alternatives (se o valor maxAlternatives para a solicitação for maior que 1). Se o Speech-to-Text determinar que uma alternativa tem um valor de confiança suficiente, ela será incluída na resposta. A primeira opção na resposta é sempre a melhor alternativa (a mais provável).

Configurar maxAlternatives como um valor maior que 1 não implica ou garante que várias alternativas serão retornadas. Em geral, mais de uma alternativa é mais apropriada para oferecer opções em tempo real aos usuários que conseguem resultados por meio de uma Solicitação de reconhecimento de stream.

Como manipular transcrições

Cada alternativa oferecida dentro da resposta terá uma transcript contendo o texto reconhecido. Quando forem apresentadas alternativas sequenciais, você deverá concatenar essas transcrições juntas.

O seguinte código do Python itera sobre uma lista de resultados e concatena as transcrições juntas. Observe que tomamos a primeira alternativa (o zero) em todos os casos.

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

Valores de confiança

O valor de confidence é uma estimativa entre 0,0 e 1,0. Um número maior indica uma maior probabilidade estimada de que as palavras reconhecidas estejam corretas. Esse campo geralmente é oferecido apenas para a melhor hipótese e apenas para resultados em que is_final=true. Por exemplo, você pode usar o valor de confidence para decidir se mostra resultados alternativos ao usuário ou se pede a confirmação dele. Se a confidence para o maior valor for alta, é provável que ele esteja correto. Quando a confidence para o maior valor for menor, há uma chance maior de que uma das alternativas seja mais precisa. O campo confidence não deve ser requisitado pelo seu código porque não é garantido que ele seja preciso ou esteja definido em qualquer um dos resultados.

Respostas e solicitações assíncronas

Uma solicitação assíncrona da API Speech-to-Text ao método LongRunningRecognize tem o formato idêntico ao de uma solicitação síncrona da API Speech-to-Text. Porém, em vez de retornar uma resposta, a solicitação assíncrona iniciará uma operação de longa duração (do tipo Operation) e retornará essa operação ao chamador imediatamente.

Uma resposta de operação típica é mostrada abaixo:

{
  "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"
  }
}

Observe que nenhum resultado ainda está presente. O Speech-to-Text continuará processando o áudio fornecido e usará essa operação para armazenar os possíveis resultados, que serão exibidos no campo response da operação (do tipo LongRunningRecognizeResponse) após a conclusão da solicitação.

Uma resposta completa após a conclusão da solicitação aparece abaixo:

{
  "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,
}

Observe que done foi definido como True e que a response da operação contém um conjunto de resultados do tipo SpeechRecognitionResult, que é o mesmo tipo retornado por uma solicitação de reconhecimento síncrono da API Speech-to-Text.

Por padrão, uma resposta assíncrona de REST definirá done como False, o valor padrão. Porém, como o JSON não exige que os valores padrão estejam presentes em um campo, ao testar se uma operação foi concluída, teste se o campo done está presente e se está definido como True.

Como fazer streaming de solicitações de reconhecimento da Speech-to-Text API

Uma chamada de reconhecimento da Speech-to-Text API em streaming é projetada para captura e reconhecimento em tempo real do áudio em um fluxo bidirecional. Seu aplicativo pode enviar áudio no stream de solicitação e receber resultados de reconhecimento provisórios e finais no stream de resposta em tempo real. Resultados provisórios representam o resultado de reconhecimento atual para uma seção de áudio, enquanto o resultado de reconhecimento final apresenta a última e melhor sugestão para essa seção de áudio.

Solicitações de streaming

Ao contrário das chamadas síncronas e assíncronas, em que você envia tanto a configuração quanto o áudio em uma única solicitação, chamar a Speech API de streaming exige o envio de várias solicitações. O primeiro StreamingRecognizeRequest precisa conter uma configuração do tipo StreamingRecognitionConfig sem nenhum áudio complementar. As StreamingRecognizeRequests subsequentes enviadas sobre o mesmo stream consistirão em frames consecutivos de bytes de áudio bruto.

Um StreamingRecognitionConfig consiste nos seguintes campos:

  • config: obrigatório. Contém informações de configuração do áudio, do tipo RecognitionConfig, o mesmo exibido em solicitações síncronas e assíncronas.
  • single_utterance: opcional, o padrão é false. Indica se essa solicitação terminará automaticamente depois que a fala não for mais detectada. Se configurado, o Speech-to-Text detectará pausas, silêncio ou áudio sem fala para determinar quando encerrar o reconhecimento. Se não estiver configurado, o streaming continuará a ouvir e processar o áudio até que seja fechado diretamente ou que o comprimento limite seja excedido. A configuração de single_utterance como true é útil para processar comandos de voz.
  • interim_results: opcional, o padrão é false. Indica que essa solicitação de streaming retornará resultados provisórios que podem ser refinados mais tarde, depois de processar mais áudio. Os resultados provisórios serão observados nas respostas por meio da configuração de is_final como false.

Respostas de streaming

Os resultados de reconhecimento de fala em streaming são retornados dentro de uma série de respostas do tipo StreamingRecognitionResponse. Essa resposta consiste nos seguintes campos:

  • speechEventType contém eventos do tipo SpeechEventType. O valor desses eventos indicará quando uma única fala for determinada como concluída. Os eventos de fala servem como marcadores dentro da resposta de streaming.
  • results contém a lista de resultados, que podem ser provisórios ou finais, do tipo StreamingRecognitionResult. A lista de results contém os seguintes subcampos:
    • alternatives contém uma lista de transcrições alternativas.
    • isFinal indica se os resultados apresentados dentro desta entrada de lista são provisórios ou finais.
    • stability indica a volatilidade dos resultados conseguidos até agora, com 0.0 indicando instabilidade completa, enquanto 1.0 indica estabilidade completa. Observe que, ao contrário da confiança, que avalia se uma transcrição está correta, a stability calcula se o resultado parcial dado pode mudar. Se isFinal estiver definido como true, a stability não será definida.
Esta página foi útil? Conte sua opinião sobre:

Enviar comentários sobre…

Documentação do Cloud Speech-to-Text
Precisa de ajuda? Acesse nossa página de suporte.