Encoder du contenu audio en base64

Vous trouverez sur cette page la procédure à suivre pour convertir le contenu audio d'un fichier binaire en données encodées en base64.

Pour transmettre du contenu audio à l'API Speech, utilisez l'URI d'un fichier situé sur Google Cloud Storage ou intégrez les données audio directement dans le champ content de la requête.

Intégrer du contenu audio encodé en base64

Les données audio sont des données binaires. Dans une requête gRPC, vous pouvez écrire directement les données binaires. Cependant, une requête REST utilise JSON. JSON est un format de texte qui n'est pas directement compatible avec les données binaires. Vous devez donc convertir ces données binaires en texte en utilisant l'encodage base64.

Pour encoder un fichier audio en base64, procédez comme suit :

Linux

  1. Encodez le fichier audio à l'aide de l'outil de ligne de commande base64, en veillant à empêcher tout retour à la ligne grâce à l'option -w 0 :
        $ base64 source_audio_file -w 0 > dest_audio_file
    

2. Créez un fichier de requête JSON en intégrant l'audio encodé en base64 dans le champ content de la requête :

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

macOS

  1. Encodez le fichier audio à l'aide de l'outil de ligne de commande base64 :
        $ base64 source_audio_file > dest_audio_file
    

2. Créez un fichier de requête JSON en intégrant l'audio encodé en base64 dans le champ content de la requête :

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

Windows

  1. Encodez le fichier audio à l'aide de l'outil Base64.exe :
        C:> Base64.exe -e source_audio_file > dest_audio_file
    

2. Créez un fichier de requête JSON en intégrant l'audio encodé en base64 dans le champ content de la requête :

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

Intégrer du contenu audio de façon automatisée

L'intégration de données binaires audio dans des requêtes via des éditeurs de texte n'est pas plus souhaitable qu'elle n'est pratique. Concrètement, vous allez incorporer des fichiers encodés en base64 dans le code client. Tous les langages de programmation compatibles intègrent des mécanismes d'encodage de contenu en base64 :

Python

En Python, vous pouvez encoder les fichiers audio en base64 comme suit :

# 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, base64 encode les fichiers audio comme suit, où audioFile correspond aux données audio encodées en binaire :

// 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

En Java, appliquez la méthode statique encodeBase64 disponible dans org.apache.commons.codec.binary.Base64 pour encoder des fichiers binaires en base64 :

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

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