Contenuti audio con codifica Base64

Quando invii dati audio all'API Speech-to-Text, puoi inviarli direttamente (all'interno del campo content della richiesta) oppure puoi fare in modo che l'API esegua il riconoscimento da remoto sui dati archiviati in un bucket Cloud Storage specificando l'oggetto di archiviazione nel campo uri della richiesta.

Tutti i dati audio nel campo content delle richieste HTTP devono essere in formato base64. Questa pagina descrive come convertire l'audio da un file binario in dati con codifica base64.

Utilizzo della riga di comando

All'interno di una richiesta gRPC, puoi scrivere direttamente i dati binari; tuttavia, viene utilizzato il formato JSON quando si effettua una richiesta REST. JSON è un formato di testo che non supporta direttamente i dati binari, quindi dovrai convertirli in testo utilizzando la codifica Base64.

La maggior parte degli ambienti di sviluppo contiene un'utilità base64 nativa per codificare un file binario in dati di testo ASCII. Per codificare un file:

Linux

Codifica il file utilizzando lo strumento a riga di comando base64, assicurandoti di evitare il ritorno a capo utilizzando il flag -w 0:

base64 INPUT_FILE -w 0 > OUTPUT_FILE

macOS

Codifica il file utilizzando lo strumento a riga di comando base64:

base64 -i INPUT_FILE -o OUTPUT_FILE

Windows

Codifica il file utilizzando lo strumento Base64.exe:

Base64.exe -e INPUT_FILE > OUTPUT_FILE

PowerShell

Codifica il file utilizzando il metodo Convert.ToBase64String:

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

Crea un file di richiesta JSON incorporando i dati con codifica base64:

JSON

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

Utilizzo delle librerie client

L'incorporamento di dati binari nelle richieste tramite editor di testo non è auspicabile né pratico. In pratica, incorporerai file con codifica base64 all'interno del codice client. Tutti i linguaggi di programmazione supportati dispongono di meccanismi integrati per la codifica Base64 dei contenuti.

Python

In Python, codifica i file audio in base64 nel seguente modo:

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

Vai

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)