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, é possível 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, é possível 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ê incorporará 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());