Conteúdo de áudio com codificação Base64

Quando você envia dados de áudio para a API Speech-to-Text, é possível enviá-los diretamente (no campo content da solicitação) ou solicitar que a API realize remotamente o reconhecimento nos dados armazenados em um bucket do Cloud Storage. É possível enviar dados diretamente no campo content para reconhecimento síncrono apenas se os dados de áudio tiverem no máximo 60 segundos e 10 MB. Todos os dados de áudio no campo content precisam estar no formato Base64. Nesta página, saiba como converter o áudio de um arquivo binário em dados codificados como Base64.

Se os dados de áudio excederem 60 segundos ou 10 MB, eles precisarão ser armazenados em um bucket do Cloud Storage para serem enviados para reconhecimento. Você pode analisá-los de maneira assíncrona sem convertê-los no formato Base64. Consulte a documentação de reconhecimento assíncrono para saber mais.

Como usar a linha de comando

Em uma solicitação gRPC, é possível simplesmente gravar os dados binários diretamente. No entanto, JSON é usado ao fazer uma solicitação REST. Como JSON é um formato de texto que não aceita diretamente dados binários, você precisa converter esses dados em texto usando a codificação Base64.

A maioria dos ambientes de desenvolvimento contém um utilitário base64 nativo para codificar um binário em dados de texto ASCII. Para codificar um arquivo, faça o seguinte:

Linux

Codifique o arquivo de áudio usando a ferramenta de linha de comando base64 e evite a quebra automática de linha usando a flag -w 0:

base64 INPUT_FILE -w 0 > OUTPUT_FILE

macOS

Codifique o arquivo usando a ferramenta de linha de comando base64:

base64 -i INPUT_FILE -o OUTPUT_FILE

Windows

Codifique o arquivo usando a ferramenta Base64.exe:

Base64.exe -e INPUT_FILE > OUTPUT_FILE

PowerShell

Codifique o arquivo usando o método Convert.ToBase64String:

[Convert]::ToBase64String([IO.File]::ReadAllBytes("./INPUT_FILE")) > OUTPUT_FILE

Crie um arquivo de solicitação JSON, incluindo os dados codificados em Base64:

JSON

{
  "config": {
    "encoding": "FLAC",
    "sampleRateHertz": 16000,
    "languageCode": "en-US"
  },
  "audio": {
    "content": "ZkxhQwAAACIQABAAAAUJABtAA+gA8AB+W8FZndQvQAyjv..."
  }
}

Como usar bibliotecas de cliente

Incorporar dados binários de áudio em solicitações por meio de editores de texto não é recomendado nem prático. Na realidade, você vai incorporar arquivos com codificação Base64 no código do cliente. Todas as linguagens de programação disponíveis têm mecanismos integrados para conteúdos com codificação Base64.

Python

Em Python, codifique os arquivos de áudio em base64 da seguinte maneira:

# Import the base64 encoding library.
import base64

# Pass the audio data to an encoding function.
def encode_audio(audio):
  audio_content = audio.read()
  return base64.b64encode(audio_content)

Node.js

Em Node.js, codifique os arquivos de áudio em Base64 da maneira mostrada abaixo, em que audioFile é o caminho para o arquivo de áudio codificado.

const fs = require('fs');
const content = fs.readFileSync(audioFile).toString('base64');

Java

No Java, use o método estático encodeBase64 dentro de org.apache.commons.codec.binary.Base64 para codificar arquivos binários de codificação base64:

// Import the Base64 encoding library.
import org.apache.commons.codec.binary.Base64;

// Encode the speech.
byte[] encodedAudio = Base64.encodeBase64(audio.getBytes());