Codificar contenido de audio en Base64

Cuando envías datos de audio a la API Speech-to-Text, puedes hacerlo directamente (en el campo content de la solicitud) o bien puedes hacer que la API realice el reconocimiento de forma remota en los datos almacenados en un segmento de Cloud Storage. Para ello, especifica el objeto de almacenamiento en el campo uri de la solicitud.

Los datos de audio del campo content de las solicitudes HTTP deben estar en formato base64. En esta página se describe cómo convertir audio de un archivo binario a datos codificados en Base64.

Usar la línea de comandos

En una solicitud gRPC, puedes escribir datos binarios directamente. Sin embargo, se usa JSON al hacer una solicitud REST. JSON es un formato de texto que no admite directamente datos binarios, por lo que tendrás que convertir esos datos binarios en texto mediante la codificación Base64.

La mayoría de los entornos de desarrollo contienen una utilidad base64 nativa para codificar un archivo binario en datos de texto ASCII. Para codificar un archivo, sigue estos pasos:

Linux

Codifica el archivo con la herramienta de línea de comandos base64. Asegúrate de evitar el salto de línea con la marca -w 0:

base64 INPUT_FILE -w 0 > OUTPUT_FILE

macOS

Codifica el archivo con la herramienta de línea de comandos base64:

base64 -i INPUT_FILE -o OUTPUT_FILE

Windows

Codifica el archivo con la herramienta Base64.exe:

Base64.exe -e INPUT_FILE > OUTPUT_FILE

PowerShell

Codifica el archivo con el método Convert.ToBase64String:

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

Crea un archivo de solicitud JSON insertando los datos codificados en base64:

JSON

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

Usar bibliotecas de cliente

No es recomendable ni práctico insertar datos binarios en solicitudes a través de editores de texto. En la práctica, insertará archivos codificados en base64 en el código del cliente. Todos los lenguajes de programación admitidos tienen mecanismos integrados para codificar contenido en Base64.

Python

En Python, codifica los archivos de audio en base64 de la siguiente manera:

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

Go

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)