Transcrição de voz em texto com a API Cloud Speech-to-Text

A API Cloud Speech faz a transcrição de arquivos de áudio em texto em mais de 80 idiomas.

Neste laboratório, vamos gravar e enviar um arquivo de áudio à API Cloud Speech para transcrição.

O que você vai aprender

  • Como criar uma solicitação da API Speech e chamá-la com curl
  • Como chamar a API Speech com arquivos de áudio em diferentes idiomas

Pré-requisitos

  • Um projeto do Google Cloud Platform
  • Um navegador, como o Chrome ou o Firefox

Como você vai usar este tutorial?

Apenas leitura Leitura e exercícios

Como você classificaria sua experiência com o Google Cloud Platform?

Iniciante Intermediário Proficiente

Configuração de ambiente autoguiada

Se você ainda não tem uma Conta do Google (Gmail ou Google Apps), crie uma. Faça login no Console do Google Cloud Platform (console.cloud.google.com) e crie um projeto:

Captura de tela de 2016-02-10 12:45:26.png

Lembre-se do código do projeto, um nome exclusivo em todos os projetos do Google Cloud. O nome acima já foi escolhido e não servirá para você. Faremos referência a ele mais adiante neste codelab como PROJECT_ID.

Em seguida, ative o faturamento no console do Cloud para usar os recursos do Google Cloud.

A execução por meio deste codelab terá um custo baixo, mas poderá ser mais se você decidir usar mais recursos ou se deixá-los em execução. Consulte a seção "limpeza" no final deste documento.

Novos usuários do Google Cloud Platform têm direito a uma avaliação sem custo financeiro de US$300.

Clique no ícone de menu no canto superior esquerdo da tela.

Selecione o painel APIs e serviços no menu suspenso.

Clique em Ativar APIs e serviços.

Em seguida, digite "speech" na caixa de pesquisa. Clique em API Google Cloud Speech:

Clique em Ativar para ativar a API Cloud Speech:

Aguarde alguns segundos para que ele seja ativado. Quando ele estiver ativado, você verá isto:

O Google Cloud Shell é um ambiente de linha de comando executado na nuvem. Essa máquina virtual baseada em Debian contém todas as ferramentas de desenvolvimento necessárias (gcloud, bq, git e outras) e oferece um diretório principal permanente de 5 GB. Vamos usar o Cloud Shell para criar nossa solicitação à API Speech.

Para começar a usar o Cloud Shell, clique no ícone Screen Shot 2015-06-08 at 5.30.32 PM.png "Ativar o Google Cloud Shell" no canto superior direito da barra de cabeçalho.

Uma sessão do Cloud Shell é aberta em um novo frame na parte inferior do console e um prompt de linha de comando é exibido. Aguarde até que o prompt user@project:~$ apareça.

Como curl será usado para enviar uma solicitação à API Speech, você precisará gerar uma chave de API para transmitir nosso URL de solicitação. Para criar uma chave de API, navegue até a seção APIs e serviços > Credenciais do painel do projeto:

Clique em Criar credenciais:

No menu suspenso, selecione Chave de API:

Em seguida, copie a chave que você acabou de gerar e selecione Fechar (não a restrinja).

Agora salve a chave de API em uma variável de ambiente para não precisar inserir o valor dela em cada solicitação. É possível fazer isso no Cloud Shell. Lembre-se de substituir <your_api_key> pela chave que você copiou.

export API_KEY=<YOUR_API_KEY>

É possível criar sua solicitação para a API Speech em um arquivo request.json. Para criar e editar esse arquivo, você pode usar um dos seus editores de linha de comando preferidos (nano, vim, emacs) ou usar o editor da Web integrado no Cloud Shell:

Crie o arquivo no seu diretório inicial para poder referenciá-lo facilmente e adicione o seguinte ao arquivo request.json :

request.json

{
  "config": {
      "encoding":"FLAC",
      "languageCode": "en-US"
  },
  "audio": {
      "uri":"gs://cloud-samples-tests/speech/brooklyn.flac"
  }
}

O corpo da solicitação tem um objeto config e um audio. Em config, informamos à API Speech como processar a solicitação. O parâmetro encoding informa à API o tipo de codificação de áudio que você está usando para o arquivo de áudio que está enviando para ela. FLAC é o tipo de codificação para arquivos .raw. Consulte a documentação para saber mais sobre o tipo de codificação. Há outros parâmetros que você pode adicionar ao objeto config, mas encoding é o único obrigatório. Se languageCode não for incluído na solicitação, será usado o idioma inglês.

No objeto audio, é possível transmitir à API o URI do arquivo de áudio no Cloud Storage ou o áudio codificado em base64 como uma string. Aqui estávamos usando URLs do Cloud Storage. A próxima etapa é chamar a API Speech.

Agora você pode transmitir o corpo da solicitação para a API Speech, junto com a variável de ambiente da chave de API que você salvou antes, usando o comando curl a seguir (em uma única linha de comando):

curl -s -X POST -H "Content-Type: application/json" --data-binary @request.json "https://speech.googleapis.com/v1/speech:recognize?key=${API_KEY}"

A resposta retornada por esse comando curl será semelhante a esta:

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

O valor de transcript corresponde à transcrição que a API Speech fez do seu arquivo de áudio. O valor de confidence indica o quanto a API considera preciso o texto da transcrição.

Veja que chamamos o método recognize na solicitação acima. A API Speech oferece suporte à fala síncrona e assíncrona para transcrição de texto. Neste exemplo, enviamos um arquivo de áudio completo, mas também é possível usar o método longrunningrecognize para fazer a transcrição de texto enquanto o usuário fala.

Você fala diversos idiomas? A API Speech é compatível com a transcrição de voz em texto em mais de cem idiomas. É possível mudar o parâmetro languageCode em request.json. Confira a lista de idiomas compatíveis neste link.

Vamos usar um arquivo de áudio em francês (escute uma prévia aqui). Mude seu request.json para o seguinte:

request.json

 {
  "config": {
      "encoding":"FLAC",
      "languageCode": "fr"
  },
  "audio": {
      "uri":"gs://speech-language-samples/fr-sample.flac"
  }
}

Você verá a seguinte resposta:

{
  "results": [
    {
      "alternatives": [
        {
          "transcript": "maître corbeau sur un arbre perché tenait en son bec un fromage",
          "confidence": 0.9710122
        }
      ]
    }
  ]
}

Essa é uma frase de um famoso conto infantil francês. Se você tiver arquivos de áudio em outro idioma, tente adicioná-los ao Cloud Storage e altere o parâmetro languageCode na solicitação.

Você aprendeu a usar a transcrição de voz em texto com a API Speech. Neste exemplo, você transmitiu o URI do arquivo de áudio para a API no Google Cloud Storage. Outra opção é enviar uma string codificada em base64 do conteúdo de áudio.

O que vimos

  • Como transmitir o URI de um arquivo de áudio à API Speech no Google Cloud Storage
  • Como criar uma solicitação da API Speech e chamá-la com curl
  • Como chamar a API Speech com arquivos de áudio em diferentes idiomas

Próximas etapas