Base64-Codierung von Audioinhalten

Auf dieser Seite wird beschrieben, wie Audiodaten aus einer Binärdatei in base64-codierte Daten umgewandelt werden.

Wenn Sie eine Audiodatei an die Speech API übergeben möchten, können Sie entweder den URI einer Datei übergeben, die sich in Google Cloud Storage befindet, oder die Audiodaten direkt in der Anfrage in das Feld content einbetten.

Base64-codierte Audiodaten einbetten

Audiodaten sind binäre Daten. 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.

So codieren Sie eine Audiodatei mit base64:

Linux

  1. Codieren Sie die Audiodatei mit dem base64-Befehlszeilentool und achten Sie darauf, dass Zeilenumbrüche verhindert werden. Verwenden Sie dazu das Flag -w 0:
        $ base64 source_audio_file -w 0 > dest_audio_file
    

2. Erstellen Sie eine JSON-Anfragedatei, die das base64-codierte Audio im Feld content des Anfragebereichs enthält:

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

Mac OSX

  1. Codieren Sie die Audiodatei mit dem Befehlszeilentool base64:
        $ base64 source_audio_file > dest_audio_file
    

2. Erstellen Sie eine JSON-Anfragedatei, die das base64-codierte Audio im Feld content des Anfragebereichs enthält:

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

Windows

  1. Codieren Sie die Audiodatei mit dem Befehlszeilentool Base64.exe:
        C:> Base64.exe -e source_audio_file > dest_audio_file
    

2. Erstellen Sie eine JSON-Anfragedatei, die das base64-codierte Audio im Feld content des Anfragebereichs enthält:

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

Audioinhalte programmgesteuert einbetten

Binäre Audiodaten 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-codierten 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 die binärcodierten Audiodaten sind:

// Imports the Google Cloud client library
    const fs = require('fs');
    const speech = require('@google-cloud/speech');

    // Creates a client
    const client = new speech.SpeechClient();

    /**
     * TODO(developer): Uncomment the following lines before running the sample.
     */
    // const filename = 'Local path to audio file, e.g. /path/to/audio.raw';
    // const encoding = 'Encoding of the audio file, e.g. LINEAR16';
    // const sampleRateHertz = 16000;
    // const languageCode = 'BCP-47 language code, e.g. en-US';

    const config = {
      encoding: encoding,
      sampleRateHertz: sampleRateHertz,
      languageCode: languageCode,
    };
    const audio = {
      content: fs.readFileSync(filename).toString('base64'),
    };

    const request = {
      config: config,
      audio: audio,
    };

    // Detects speech in the audio file
    const [response] = await client.recognize(request);
    const transcription = response.results
      .map(result => result.alternatives[0].transcript)
      .join('\n');
    console.log('Transcription: ', transcription);

Java

Mit der statischen Methode encodeBase64 in org.apache.commons.codec.binary.Base64 in Java codieren Sie 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());