Princípios básicos da Speech-to-Text

Este documento é um guia sobre os princípios básicos do uso da 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 reconhecimento de Speech-to-Text

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. As solicitações de reconhecimento podem opcionalmente conter um recognizer, uma configuração de reconhecimento armazenada e reutilizável.

Metadados de áudio

Para a maioria dos arquivos de áudio, a API Speech-to-Text pode deduzir automaticamente os metadados de áudio. O Speech-to-Text analisa o cabeçalho do arquivo e o decodifica de acordo com essas informações. Consulte a página Codificação para saber quais tipos de arquivos são compatíveis.

Para arquivos de áudio sem cabeçalho, a API Speech-to-Text permite especificar os metadados de áudio explicitamente na configuração de reconhecimento. Consulte a página de codificação para mais detalhes.

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 à API Speech-to-Text com a taxa de amostra nativa.

Idiomas

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

Veja uma lista completa de idiomas compatíveis para cada recurso na página Suporte a idiomas.

Recursos de reconhecimento

A API Speech-to-Text tem outros recursos de reconhecimento, como pontuação automática e nível de confiança por palavra. Eles são ativados na configuração de reconhecimento nas solicitações. Consulte a amostra de código nos links acima e a página de idiomas para ver a disponibilidade desses recursos.

Seleção de 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. Consulte a documentação sobre seleção de modelos para saber mais sobre os modelos disponíveis e como selecionar um nas suas solicitações.

Conteúdo de áudio incorporado

O áudio incorporado é incluído na solicitação de reconhecimento de fala ao transmitir um parâmetro content dentro do campo audio_source da solicitação. O áudio incorporado apresentado como conteúdo dentro de uma solicitação 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 [Base64 Encoding Your Audio][base64-encoding] para mais informações.

Ao construir uma solicitação usando uma biblioteca de cliente do Google Cloud, você geralmente grava esses dados binários (ou codificados em base-64) diretamente no campo content.

Transmitir o áudio referenciado por um URI

Normalmente, você transmite um parâmetro uri no campo audio_source da solicitação da API Speech-to-Text, apontando para um arquivo de áudio (em formato binário, não base64) localizado no Cloud Storage. com o seguinte formato:

gs://bucket-name/path/to/audio/file

O Speech-to-Text usa uma conta de serviço para acessar os arquivos no Cloud Storage. Por padrão, a conta de serviço tem acesso aos arquivos do Cloud Storage no mesmo projeto.

O endereço de e-mail da conta de serviço é:

service-PROJECT_NUMBER@gcp-sa-speech.iam.gserviceaccount.com

Para transcrever arquivos do Cloud Storage em outro projeto, conceda a essa conta de serviço o papel Agente de serviço do Speech-to-Text no outro projeto:

gcloud projects add-iam-policy-binding PROJECT_ID \
    --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-speech.iam.gserviceaccount.com \
    --role=roles/speech.serviceAgent

Mais informações sobre a política de IAM de projetos estão disponíveis em Gerenciar acesso a projetos, pastas e organizações.

Também é possível atribuir à conta de serviço um acesso mais granular, concedendo permissão a um bucket específico do Cloud Storage:

gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \
    --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-speech.iam.gserviceaccount.com \
    --role=roles/storage.admin

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

Respostas da API Speech-to-Text

Depois que o áudio é processado, a API Speech-to-Text retorna os resultados da transcrição em mensagens SpeechRecognitionResult para solicitações síncronas e em lote e em mensagens StreamingRecognitionResult para solicitações de streaming. Em solicitações síncronas e em lote, a resposta RPC contém uma lista de resultados. A lista de áudios reconhecidos aparece em ordem contígua. Para respostas de streaming, todos os resultados marcados como is_final aparecem em ordem contígua.

Selecione alternativas

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

Configurar max_alternatives com um valor maior do 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 streaming.

Como manipular transcrições

Cada alternativa fornecida na resposta terá um transcript contendo o texto reconhecido. Quando forem apresentadas alternativas sequenciais, você deverá concatenar essas transcrições juntas.

Valores de confiança

O valor confidence é uma estimativa entre 0,0 e 1,0. Ele é calculado agregando os valores de “probabilidade” atribuídos a cada palavra no áudio. Um número maior indica uma probabilidade maior estimada de que as palavras individuais foram reconhecidas corretamente. Esse campo normalmente é fornecido apenas para a hipótese principal e somente para resultados em que is_final=true. Por exemplo, é possível usar o valor confidence para decidir exibir resultados alternativos para o usuário ou solicitar a confirmação do usuário.

No entanto, esteja ciente de que o modelo determina o resultado melhor classificado com base em mais sinais do que a pontuação confidence isoladamente (como o contexto da frase). Por isso, há casos eventuais em que o principal resultado não tem o maior índice de confiança. Se você não solicitou vários resultados alternativos, o único resultado "melhor" retornado pode ter um valor de confiança menor do que o previsto. Isso pode ocorrer, por exemplo, nos casos em que palavras raras estão sendo usadas. Uma palavra que é raramente usada pode receber um valor baixo de “verossimilhança”, mesmo que seja reconhecida corretamente. Se o modelo determinar a palavra rara para ser a opção mais provável com base no contexto, esse resultado será retornado na parte superior, mesmo se o valor confidence do resultado for menor do que as opções alternativas.

A seguir