Contenido de audio codificado en Base64

Cuando envías datos de audio a la API de Speech-to-Text, puedes enviar los datos directamente (dentro del campo content de la solicitud) o tener la API. realizar el reconocimiento de forma remota en los datos almacenados en un bucket de Cloud Storage. Puedes enviar datos directamente en el campo content para el reconocimiento síncrono solo si tus datos de audio son de un máximo de 60 segundos y 10 MB. Todos los datos de audio en el campo content deben estar en formato base64. En esta página, se describe cómo convertir audio de un archivo binario a datos codificados en Base64.

Si tus datos de audio superan los 60 segundos o los 10 MB, deben almacenarse en un bucket de Cloud Storage para su envío a fin de que se los reconozca. Puedes analizarlo de forma asíncrona sin convertirlo al formato base64. Consulta la documentación del reconocimiento asíncrono para obtener más detalles.

Uso de la línea de comandos

Dentro de una solicitud gRPC, simplemente puedes escribir los datos binarios directamente; sin embargo, JSON se utiliza para realizar una solicitud REST. JSON es un formato de texto que no admite directamente datos binarios, por lo que deberás convertir estos 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 objeto binario en datos de texto ASCII. Para codificar un archivo, haz lo siguiente:

Linux

Codifica el archivo con la herramienta de línea de comandos base64 y asegúrate de evitar el ajuste 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 e intercala los datos codificados en Base64:

JSON

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

Uso de las bibliotecas cliente

La incorporación de datos binarios en solicitudes a través de editores de texto no es conveniente ni práctico. En la práctica, incorporarás archivos codificados en Base64 dentro del código del cliente. Todos los lenguajes de programación compatibles tienen mecanismos incorporados para el contenido de codificación en Base64:

Python

En Python, puedes codificar archivos de audio codificados 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):
  audio_content = audio.read()
  return base64.b64encode(audio_content)

Node.js

En Node.js, codifica en Base64 los archivos de audio de la siguiente manera, en la que audioFile es la ruta de acceso al archivo codificado en audio.

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

Java

En Java, usa el método estático encodeBase64 dentro de org.apache.commons.codec.binary.Base64 para codificar los archivos binarios en Base64:

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

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