Base64-Codierung von Audioinhalten

Wenn Sie Audiodaten an die Speech-to-Text API senden, können Sie die Daten entweder direkt (im Feld content der Anfrage) senden oder die API so einrichten, dass sie remote eine Spracherkennung für Daten durchführt, die in einem Cloud Storage-Bucket gespeichert sind. Daten können zur synchronen Erkennung nur direkt im Feld content gesendet werden, wenn sie maximal 60 Sekunden und 10 MB groß sind. Alle Audiodaten im Feld content müssen das base64-Format haben. Auf dieser Seite wird beschrieben, wie Audiodaten aus einer Binärdatei in base64-codierte Daten umgewandelt werden.

Wenn Ihre Audiodaten 60 Sekunden oder 10 MB überschreiten, müssen sie in einem Cloud Storage-Bucket gespeichert werden, damit sie zur Erkennung gesendet werden können. Sie können sie asynchron analysieren, ohne sie in das base64-Format zu konvertieren. Weitere Informationen finden Sie in der Dokumentation zur asynchronen Erkennung.

Befehlszeile verwenden

Innerhalb einer gRPC-Anfrage können Sie die Binärdaten einfach direkt ausschreiben. Bei einer REST-Anfrage müssen Sie jedoch JSON verwenden. JSON ist ein Textformat, das Binärdaten nicht direkt unterstützt, weshalb diese mit der base64-Codierung in Text umgewandelt werden müssen.

Die meisten Entwicklungsumgebungen enthalten ein natives base64-Dienstprogramm, um ein Binärbild als ASCII-Textdaten zu codieren. So codieren Sie eine Datei:

Linux

Codieren Sie die Datei mithilfe des base64-Befehlszeilentools und achten Sie darauf, Zeilenumbrüche mithilfe des Flags -w 0 zu verhindern:

base64 INPUT_FILE -w 0 > OUTPUT_FILE

macOS

Codieren Sie die Datei mit dem base64-Befehlszeilentool:

base64 -i INPUT_FILE -o OUTPUT_FILE

Windows

Codieren Sie die Datei mit dem Tool Base64.exe:

Base64.exe -e INPUT_FILE > OUTPUT_FILE

PowerShell

Codieren Sie die Datei mit der Methode Convert.ToBase64String:

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

Erstellen Sie eine JSON-Anfragedatei, die die base64-codierten Daten enthält:

JSON

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

Clientbibliotheken verwenden

Binäre Daten mit Texteditoren in Anfragen einzubetten, ist weder wünschenswert noch praktisch. In der Praxis betten Sie base64-codierte Dateien in den Clientcode ein. Alle unterstützten Programmiersprachen haben integrierte Mechanismen für die base64-codierte Inhalte:

Python

So codieren Sie Audiodateien mit base64 in Python:

# 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

So codieren Sie Audiodateien mit base64 in Node.js, wobei audioFile der Pfad zur audiocodierten Datei ist:

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

Java

Mit der statischen Methode encodeBase64 in org.apache.commons.codec.binary.Base64 codieren Sie in Java Binärdateien in base64:

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

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