Cuando envías datos de audio a la API de Cloud Speech-to-Text, puedes enviarlos directamente (dentro
del campo content de la solicitud) o hacer que la API realice el
reconocimiento de forma remota de los datos almacenados en un bucket de Cloud Storage.
Puedes enviar datos de audio directamente en el campo content
para su reconocimiento síncrono
solo si tienen una duración máxima de 60 segundos y un tamaño de 10 MB. Todos los
datos de audio en el campo content deben tener formato de 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 y reconocimiento. Puedes analizarlos de forma asíncrona sin convertirlos al formato de Base64. Consulta la documentación del reconocimiento asíncrono para obtener más detalles.
Usa la línea de comandos
Dentro de una solicitud gRPC, puedes escribir directamente los datos binarios. Sin embargo, JSON se usa para realizar una solicitud REST. JSON es un formato de texto que no admite directamente datos de objetos binarios, por lo que deberás convertirlos en texto con 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 de 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 de 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. Para eso, intercala los datos codificados en Base64:
JSON
{ "config": { "encoding": "FLAC", "sampleRateHertz": 16000, "languageCode": "en-US" }, "audio": { "content": "ZkxhQwAAACIQABAAAAUJABtAA+gA8AB+W8FZndQvQAyjv..." } }
Usa las bibliotecas cliente
La incorporación de datos de objetos binarios en solicitudes a través de editores de texto no es conveniente ni práctica. De hecho, deberás incorporar 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());