[PYTHON] Reconnaissance vocale des fichiers wav avec Google Cloud Speech API Beta

*** Information en août 2016 ***

Une note d'essai de la reconnaissance vocale pour les fichiers wav sur Google Cloud Speech API Beta.

CLOUD SPEECH API

Comme vous pouvez le voir dans Google Cloud Speech API Beta, il s'agit d'une API de reconnaissance vocale.

Cela semble être un ASR très performant.

Document

Document officiel exemple de code python

Comment utiliser à partir de la CLI (SDK Google Cloud + curl)

Selon Quickstart

  1. Créez un compte Google Cloud Platform
  2. Créez un projet et activez l'API Speech
  3. Générez un fichier de clé de compte de service et téléchargez-le à portée de main
  4. Installez l'outil de ligne de commande SDK Google Cloud et utilisez le fichier de clé de compte de service ci-dessus pour obtenir un jeton d'authentification.
  5. À l'aide du jeton d'authentification obtenu, lancez des données vocales telles qu'un fichier wav préparé à l'avance à l'API pour obtenir le résultat de la reconnaissance.

Générez un fichier de clé de compte de service (json) contenant la clé privée et utilisez-le pour obtenir un jeton d'authentification à chaque fois.

De la création du projet à l'acquisition du fichier clé du compte de service

Comme décrit dans la section Configurer votre projet de Démarrage rapide.

Cependant, lors de la création d'un «nouveau compte de service» avec la création d'un compte de service, il existe un élément appelé Rôle qui ne se trouve pas dans Document. Je suis confus.

Après avoir enregistré le compte de service, vous pouvez télécharger le fichier json, donc enregistrez-le dans n'importe quel emplacement. Ne l'exposez pas au public car il contient une clé privée.

Obtenez un jeton d'authentification avec le SDK Google Cloud

  1. Installez Google Cloud SDK pour pouvoir exécuter la commande `` gcloud```.
  2. Obtenez un jeton d'authentification à l'aide du fichier de clé de compte de service obtenu ci-dessus.
$ gcloud auth print-access-token

Souvenez-vous du jeton d'authentification qui est revenu

Appel API avec Curl

Créez sync-request.json``` en fonction de l'option Faire une demande d'API Speech dans QuickStart et

sync-request.json


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

Dans le répertoire où se trouve sync-request.json

$ curl -s -k -H "Content-Type: application/json" \
    -H "Authorization:Jeton d'authentification obtenu sur le porteur" \
    https://speech.googleapis.com/v1beta1/speech:syncrecognize \
    -d @sync-request.json

Espérons que json retournera le résultat de la reconnaissance.

Comment définir les données vocales et le contenu de reconnaissance

L'emplacement et les paramètres de format du fichier d'entrée sont spécifiés dans le corps de la requête avec json ( sync-request.json``` dans l'exemple ci-dessus). L'exemple `` sync-request.json '' utilise un exemple de fichier flac pré-localisé dans Google Cloud Storage, mais à portée de main Bien sûr, il est possible d'envoyer les données audio de, et il prend également en charge un codage autre que flac.

Envoyez le fichier audio que vous avez

SyncRecognize de Référence API Rest Selon syncrecognize), spécifiez la source sonore et les paramètres de reconnaissance avec `` configdu corps de la requête, et spécifiez les données audio avecaudio```.

La spécification de l'audio est[RecognitionAudio](https://cloud.google.com/speech/reference/rest/v1beta1/RecognitionAudio)Comme vous pouvez le voir, si vous souhaitez envoyer votre fichier audio avec un uri ou du contenu, vous pouvez l'encoder dans une chaîne de caractères avec Base64 et l'envoyer en tant que contenu.



 L'échantillon a une méthode d'encodage FLAC et une fréquence d'échantillonnage de 16 000 (16 kHz), donc faites-le correspondre avec les données audio à envoyer.

## Utiliser l'API Speech avec python

 Comme indiqué dans [Tutoriel](https://cloud.google.com/speech/docs/rest-tutorial), vous pouvez appeler l'API Speech depuis python au lieu de la commande `` `` glcoud``` + curl (Node.js). Il y a aussi un échantillon)
 Cette procédure ne nécessite pas le SDK Google Cloud, mais nécessite plutôt la [bibliothèque cliente des API Google](https://developers.google.com/api-client-library/python/start/installation). Je pensais que je n'avais pas besoin d'une bibliothèque parce que je pouvais utiliser curl, mais [API Discovery Service](https://developers.google.com/discovery/) et la bibliothèque cliente des API Google sont utilisées pour obtenir des jetons d'authentification. Si vous n'en avez pas besoin, vous pouvez l'utiliser sans bibliothèque en suivant curl mentionné ci-dessus.

### Obtenir le fichier clé du compte de service

 Identique à l'étape 1 à 3 de la CLI ci-dessus.

### Paramètres des informations d'identification par défaut de l'application

 La procédure est indiquée dans [Exemple de code](https://github.com/GoogleCloudPlatform/python-docs-samples/blob/master/speech/api/speech_rest.py), mais il s'agit de la clé de compte de service pour obtenir le jeton d'authentification. Le fichier doit être défini à l'avance sur la variable d'environnement `` GOOGLE_APPLICATION_CREDENTIALS '':

 `` `$ export GOOGLE_APPLICATION_CREDENTIALS = Chemin du fichier du compte de service`` ``

 Si la méthode GoogleCredentials.get_application_default (). Create_scoped () fait référence à cela comme [Application Default Credentials](https://cloud.google.com/speech/docs/common/auth#authenticating_with_application_default_credentials) et le jeton d'authentification est obtenu. Cette chose.

### Appel API

 Selon [Exemple de code](https://github.com/GoogleCloudPlatform/python-docs-samples/blob/master/speech/api/speech_rest.py):


#### **`$ python speech_rest.fichier audio py.wav`**

Le résultat de la reconnaissance s'affiche avec.

Mise en garde

Cet exemple est un processus pour un fichier d'entrée, donc si vous souhaitez reconnaître plusieurs fichiers, il semble préférable de ne pas répéter la découverte d'API et l'acquisition de jetons.

Étant donné que le jeton d'authentification semble être mis à jour à une fréquence raisonnable, il est également nécessaire de veiller à la réacquisition du jeton. Qu'est-ce que le 401 revient soudainement pendant le test (expérience de 15 à 30 minutes?)? Quand j'y ai pensé, le jeton a été mis à jour.

Convivialité

Je suis désolé que ce ne soit pas quantitatif:

Recommended Posts

Reconnaissance vocale des fichiers wav avec Google Cloud Speech API Beta
Reconnaissance vocale en streaming avec l'API Google Cloud Speech
Transcrire des fichiers WAV avec l'API Cloud Speech
Transcription vocale automatique avec l'API Google Cloud Speech
Diffusez la reconnaissance vocale à l'aide de l'API gRPC Google Cloud Speech avec python3 sur Mac!
API Google Cloud Speech et Amazon Transcribe
Comparaison de la précision de la reconnaissance vocale dans le cloud de 4 grandes entreprises
Utilisation de Google Cloud Storage (GCS) par "GAE / Py"
Procédure de transcription vocale à l'aide de Python et de l'API Google Cloud Speech
Reconnaissance vocale des fichiers par l'API Google Speech v2 à l'aide de Python
Étude de la relation entre le prétraitement de la voix et la précision de la transcription dans l'API Google Cloud Speech
Importez et supprimez des fichiers dans Google Cloud Storages avec django-storage
J'ai essayé d'utiliser l'API de reconnaissance vocale docomo et l'API Google Speech en Java
Présentation de l'API Google Map avec rails
Exemple d'API Google Cloud Vision pour python
Reconnaissance vocale en anglais avec python [speech to text]
Expliquer JavaScript de l'API de géocodage de Google Maps
Essayez d'utiliser Python avec Google Cloud Functions
Reconnaissance faciale des personnages d'anime avec Keras
Utiliser l'API Google Cloud Vision de Python
[GCP] Exploitez Google Cloud Storage avec Python
Transcription d'images avec l'API Vision de GCP
Obtenez des vacances avec l'API Google Agenda
API de reconnaissance faciale sans serveur conçue avec Python
Créer une API pour le thermo-hygromètre Switchbot avec Node-RED
Exécuter l'API de Cloud Pak for Data Analysis Project Job avec des variables d'environnement