Codificação em Base64 de conteúdo de áudio

Quando envia dados de áudio para a API Speech-to-Text, pode enviar os dados diretamente (no campo content do pedido) ou fazer com que a API execute o reconhecimento remotamente em dados armazenados num contentor do Cloud Storage especificando o objeto de armazenamento no campo uri do pedido.

Todos os dados de áudio no campo content em pedidos HTTP têm de estar no formato base64. Esta página descreve como converter áudio de um ficheiro binário em dados codificados em Base64.

Usar a linha de comandos

Num pedido gRPC, pode simplesmente escrever dados binários diretamente; no entanto, o JSON é usado quando faz um pedido REST. O JSON é um formato de texto que não suporta diretamente dados binários, pelo que tem de converter esses dados binários em texto através da codificação Base64.

A maioria dos ambientes de programação contém um utilitário base64 nativo para codificar um ficheiro binário em dados de texto ASCII. Para codificar um ficheiro:

Linux

Codifique o ficheiro através da ferramenta de linha de comandos base64, certificando-se de que impede a mudança de linha com a marca -w 0:

base64 INPUT_FILE -w 0 > OUTPUT_FILE

macOS

Codifique o ficheiro com a ferramenta de linha de comandos base64:

base64 -i INPUT_FILE -o OUTPUT_FILE

Windows

Codifique o ficheiro com a ferramenta Base64.exe:

Base64.exe -e INPUT_FILE > OUTPUT_FILE

PowerShell

Codifique o ficheiro através do método Convert.ToBase64String:

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

Crie um ficheiro de pedido JSON, incorporando os dados codificados em base64:

JSON

{
  "recognizer": "projects/PROJECT_ID/locations/global/recognizers/_",
  "content": "ZkxhQwAAACIQABAAAAUJABtAA+gA8AB+W8FZndQvQAyjv..."
}

Usar bibliotecas de cliente

Incorporar dados binários em pedidos através de editores de texto não é desejável nem prático. Na prática, vai incorporar ficheiros codificados em base64 no código do cliente. Todas as linguagens de programação suportadas têm mecanismos incorporados para codificar conteúdo em base64.

Python

Em Python, codifique ficheiros de áudio em base64 da seguinte forma:

# Import the base64 encoding library.
import base64

# Pass the audio data to an encoding function.
def encode_audio(audio_file):
    with open(audio_file, "rb") as f:
        encoded_content = base64.b64encode(f.read())
    return encoded_content

Node.js

// Read the file into memory.
var fs = require('fs');
var audioFile = fs.readFileSync('/full/path/to/audio/file.wav');

// Convert the audio data to a Buffer and base64 encode it.
var encoded = Buffer.from(audioFile).toString('base64');

Java

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

// Encode the audio.
byte[] audioData = Base64.encodeBase64(audioFile.getBytes());
String encodedString = Base64.getEncoder().encodeToString(audioData);

Ir

import (
    "bufio"
    "encoding/base64"
    "io"
    "os"
)

// Open audio file.
f, _ := os.Open("/full/path/to/audio/file.wav")

// Read entire audio into byte slice.
reader := bufio.NewReader(f)
content, _ := io.ReadAll(reader)

// Encode audio as base64.
base64.StdEncoding.EncodeToString(content)