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

Nesta página, veja como converter áudio de um arquivo binário para dados codificados como Base64.

Ao transmitir áudio para a API Speech, você pode passar o URI de um arquivo localizado no Google Cloud Storage ou incorporar dados de áudio diretamente no campo content da solicitação.

Como incorporar o áudio com codificação Base64

Os dados de áudio são binários. Em uma solicitação gRPC, você pode simplesmente gravar os dados binários diretamente; no entanto, JSON é usado ao fazer uma solicitação REST. JSON é um formato de texto que não suporta diretamente dados binários, então você precisará converter esses dados binários em texto usando a codificação Base64.

Para codificar um arquivo de áudio em base64:

Linux

  1. Codifique o arquivo de áudio usando a ferramenta de linha de comando base64, evitando a quebra automática de linha usando a sinalização -w 0:
    $ base64 source_audio_file -w 0 > dest_audio_file

2. Crie um arquivo de solicitação JSON, colocando o áudio com codificação base64 in-line no campo content da solicitação:

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

Mac OSX

  1. Codifique o arquivo de áudio usando a ferramenta de linha de comando base64:
    $ base64 source_audio_file > dest_audio_file

2. Crie um arquivo de solicitação JSON, colocando o áudio com codificação base64 in-line no campo content da solicitação:

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

Windows

  1. Codifique o arquivo de áudio usando a ferramenta Base64.exe:
    C:> Base64.exe -e source_audio_file > dest_audio_file

2. Crie um arquivo de solicitação JSON, colocando o áudio com codificação base64 in-line no campo content da solicitação:

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

Como incorporar o conteúdo de áudio de modo programático

Incorporar dados binários de áudio em solicitações por meio de editores de texto não é desejável nem prático. Na prática, você estará incorporando arquivos com codificação base64 no código do cliente. Todas as linguagens de programação compatíveis têm mecanismos integrados para o conteúdo de 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 seguinte maneira, sendo que audioFile são os dados de áudio com codificação binária:

// Imports the Google Cloud client library
const fs = require('fs');
const speech = require('@google-cloud/speech');

// Creates a client
const client = new speech.SpeechClient();

/**
 * TODO(developer): Uncomment the following lines before running the sample.
 */
// const filename = 'Local path to audio file, e.g. /path/to/audio.raw';
// const encoding = 'Encoding of the audio file, e.g. LINEAR16';
// const sampleRateHertz = 16000;
// const languageCode = 'BCP-47 language code, e.g. en-US';

const config = {
  encoding: encoding,
  sampleRateHertz: sampleRateHertz,
  languageCode: languageCode,
};
const audio = {
  content: fs.readFileSync(filename).toString('base64'),
};

const request = {
  config: config,
  audio: audio,
};

// Detects speech in the audio file
const [response] = await client.recognize(request);
const transcription = response.results
  .map(result => result.alternatives[0].transcript)
  .join('\n');
console.log('Transcription: ', transcription);

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());