Transcription audio avec l'API Cloud Speech-to-Text

L'API Cloud Speech permet de transcrire des fichiers audio dans plus de 80 langues.

Dans cet atelier, nous allons enregistrer un fichier audio et l'envoyer à l'API Cloud Speech pour transcription.

Points abordés

  • Créer une requête API Speech et appeler l'API avec curl
  • Appeler l'API Speech avec des fichiers audio dans différentes langues

Prérequis

  • Un projet Google Cloud Platform
  • Un navigateur tel que Chrome ou Firefox

Comment allez-vous utiliser ce tutoriel ?

Je vais le lire uniquement Je vais le lire et effectuer les exercices

Quel est votre niveau d'expérience avec Google Cloud Platform ?

Débutant Intermédiaire Expert

Configuration de l'environnement au rythme de chacun

Si vous ne possédez pas encore de compte Google (Gmail ou Google Apps), vous devez en créer un. Connectez-vous à la console Google Cloud Platform (console.cloud.google.com) et créez un projet :

Screenshot from 2016-02-10 12:45:26.png

Mémorisez l'ID du projet. Il s'agit d'un nom unique permettant de différencier chaque projet Google Cloud (le nom ci-dessus est déjà pris ; vous devez en trouver un autre). Il sera désigné par le nom PROJECT_ID tout au long de cet atelier de programmation.

Vous devez ensuite activer la facturation dans la console Cloud pour pouvoir utiliser les ressources Google Cloud.

Suivre cet atelier de programmation ne devrait pas vous coûter plus d'un euro. Cependant, cela peut s'avérer plus coûteux si vous décidez d'utiliser davantage de ressources ou si vous n'interrompez pas les ressources (voir la section "Effectuer un nettoyage" à la fin du présent document).

Les nouveaux utilisateurs de Google Cloud Platform peuvent bénéficier d'un essai sans frais avec 300$de crédits.

Cliquez sur l'icône de menu en haut à gauche de l'écran.

Sélectionnez le tableau de bord API et services dans le menu déroulant.

Cliquez sur Activer les API et les services.

Ensuite, recherchez "speech" dans le champ de recherche. Cliquez sur API Google Cloud Speech :

Cliquez sur Enable (Activer) pour activer l'API Cloud Speech :

Patientez quelques secondes jusqu'à ce qu'il soit activé. Une fois la fonctionnalité activée, vous verrez ceci :

Google Cloud Shell est un environnement de ligne de commande exécuté dans le cloud. Cette machine virtuelle basée sur Debian contient tous les outils de développement dont vous aurez besoin (gcloud, bq, git, etc.) et offre un répertoire de base persistant de 5 Go. Nous allons utiliser Cloud Shell pour créer notre requête à l'API Speech.

Pour commencer à utiliser Cloud Shell, cliquez sur l'icône Screen Shot 2015-06-08 at 5.30.32 PM.png "Activer Google Cloud Shell" en haut à droite de la barre d'en-tête.

Une session Cloud Shell s'ouvre dans un nouveau cadre en bas de la console et affiche une invite de ligne de commande. Attendez que l'invite user@project:~$ s'affiche.

Comme nous allons exécuter la commande curl pour envoyer une requête à l'API Speech, nous devons générer une clé API pour transmettre l'URL de notre requête. Pour créer une clé API, accédez à la section API et services > Identifiants du tableau de bord de votre projet :

Cliquez ensuite sur Créer des identifiants :

Dans le menu déroulant, sélectionnez Clé API :

Ensuite, copiez la clé que vous venez de générer et sélectionnez Fermer (ne limitez pas la clé).

Vous disposez désormais d'une clé API. Enregistrez sa valeur dans une variable d'environnement afin d'éviter de l'insérer à chaque requête. Vous pouvez effectuer cette opération dans Cloud Shell. Veillez à remplacer <your_api_key> par la clé que vous venez de copier.

export API_KEY=<YOUR_API_KEY>

Vous pouvez créer votre requête adressée à l'API Speech dans un fichier request.json. Pour créer et modifier ce fichier, vous pouvez utiliser votre éditeur de ligne de commande favori (nano, vim, emacs) ou l'éditeur Web intégré de Cloud Shell :

Créez le fichier dans votre répertoire d'accueil pour pouvoir le référencer facilement et ajoutez les éléments suivants à votre fichier request.json :

request.json

{
  "config": {
      "encoding":"FLAC",
      "languageCode": "en-US"
  },
  "audio": {
      "uri":"gs://cloud-samples-tests/speech/brooklyn.flac"
  }
}

Le corps de la requête contient un objet config et un objet audio. Dans config, nous indiquons à l'API Speech comment traiter la requête. Le paramètre encoding indique à l'API le type d'encodage audio que vous utilisez pour le fichier audio que vous lui envoyez. FLAC correspond au type d'encodage associé aux fichiers .raw (consultez la documentation pour plus d'informations sur le type d'encodage). Vous pouvez ajouter d'autres paramètres à votre objet config, mais encoding est le seul obligatoire. S'il n'est pas inclus dans la requête, le code de langue languageCode sera l'anglais par défaut.

Dans l'objet audio, vous pouvez transmettre à l'API soit l'URI de notre fichier audio hébergé dans Cloud Storage, soit l'audio encodé en base64 sous forme de chaîne. Ici, nous utilisons des URL Cloud Storage. L'étape suivante consiste à appeler l'API Speech.

Vous pouvez maintenant transmettre à l'API Speech le corps de votre requête, ainsi que la variable d'environnement de la clé API que vous avez sauvegardée précédemment, en exécutant la commande curl suivante (dans une seule ligne de commande) :

curl -s -X POST -H "Content-Type: application/json" --data-binary @request.json "https://speech.googleapis.com/v1/speech:recognize?key=${API_KEY}"

La réponse renvoyée par cette commande curl doit ressembler à ceci :

{
  "results": [
    {
      "alternatives": [
        {
          "transcript": "how old is the Brooklyn Bridge",
          "confidence": 0.98267895
        }
      ]
    }
  ]
}

La valeur transcript renvoie la transcription que l'API Speech a créée à partir de votre fichier audio, tandis que la valeur confidence indique le niveau de confiance que l'API accorde à sa transcription de votre fichier audio.

Vous remarquerez que nous avons appelé la méthode recognize dans notre requête ci-dessus. L'API Speech est compatible avec une transcription de reconnaissance vocale synchrone ou asynchrone. Dans cet exemple, nous lui avons envoyé un fichier audio complet, mais vous pourriez tout aussi bien vous servir de la méthode longrunningrecognize pour réaliser une transcription audio en streaming pendant que l'utilisateur parle.

Vous parlez plusieurs langues ? L'API Speech est compatible avec la transcription audio dans plus de 100 langues. Vous pouvez modifier le paramètre languageCode dans request.json. Vous trouverez la liste des langues acceptées à cette adresse.

Faisons l'essai avec un fichier audio en français (si vous souhaitez avoir un aperçu, écoutez-le ici). Remplacez votre fichier request.json par ce qui suit :

request.json

 {
  "config": {
      "encoding":"FLAC",
      "languageCode": "fr"
  },
  "audio": {
      "uri":"gs://speech-language-samples/fr-sample.flac"
  }
}

La réponse suivante devrait s'afficher :

{
  "results": [
    {
      "alternatives": [
        {
          "transcript": "maître corbeau sur un arbre perché tenait en son bec un fromage",
          "confidence": 0.9710122
        }
      ]
    }
  ]
}

Il s'agit d'une phrase d'une célèbre fable de La Fontaine. Si vous avez des fichiers audio dans une autre langue, vous pouvez essayer de les ajouter à Cloud Storage et modifier le paramètre languageCode dans votre requête.

Vous avez appris à effectuer une transcription audio avec l'API Speech. Dans cet exemple, vous avez transmis l'URI Google Cloud Storage de votre fichier audio à l'API. Vous pouvez également lui transmettre votre contenu audio sous la forme d'une chaîne encodée en base64.

Points abordés

  • Transmettre l'URI Google Cloud Storage d'un fichier audio à l'API Speech
  • Créer une requête API Speech et appeler l'API avec curl
  • Appeler l'API Speech avec des fichiers audio dans différentes langues

Étapes suivantes