Récemment, j'ai enquêté parce que je voulais créer un programme qui utilise la reconnaissance vocale, et quand j'ai entendu des rumeurs de diverses personnes selon lesquelles il était "précis", j'ai eu l'idée d'utiliser l'API Google Speech. Quand j'ai essayé de le déplacer, il y avait des endroits auxquels j'étais accro, alors prenez-en note.
L'API Google Speech est une API permettant d'utiliser la technologie de reconnaissance vocale de Google.
Cette API prend un fichier vocal en entrée et génère une phrase naturelle plausible correspondant à la voix avec certitude. Il semble que la version 2 soit en cours d'exécution.
L'inscription sur la Google Developer Console est requise pour utiliser l'API Google Speech.
Google Developer Console
Google Developer Console https://console.developers.google.com/project
Dans ce domaine, l'interface semble être très différente selon que vous avez déjà utilisé ou non l'API Google. J'espère que vous ne pouvez prendre votre procédure qu'à titre de référence.
Cliquez sur "Utiliser l'API Google".
Créez un projet en saisissant un nom de projet et un ID de projet appropriés. Cliquez sur le nom du projet créé pour accéder au tableau de bord.
Je pensais que l'API Speech était incluse dans l'onglet "API Google" et je l'ai recherchée, mais je ne l'ai pas trouvée (j'en étais folle ici).
http://eyepodtouch.net/?p=81
Selon cet article, vous devez rejoindre le groupe Chrome-dev pour activer l'API Speech du Japon.
https://groups.google.com/a/chromium.org/forum/?fromgroups#!forum/chromium-dev
Cliquez sur «Rejoindre le groupe pour publier» pour le rejoindre (notez que vous recevrez une notification de Melis on Mead?).
Si vous pouvez rejoindre le groupe, vous pouvez rechercher l'API Google Speech, donc cliquez sur "Activer l'API" pour l'activer (puisque la deuxième image a déjà été activée, le bouton est "API" Est désactivé).
Depuis l'onglet "Identifiants"
Sélectionnez "New Credentials" -> "API Key" -> "Server Key".
Entrez un nom de clé de serveur approprié et cliquez sur "Créer" pour obtenir la clé (chaîne de caractères) de l'API, alors notez cette valeur.
Vous êtes maintenant prêt à utiliser l'API.
L'environnement est OS: Mac OS X 10.11 Mike: Microphone intégré Macbook Air Mid 2013
Ici, essayez d'utiliser l'API une fois selon l'exemple d'utilisation dans un certain référentiel Github (c'est un peu effrayant car il dit "Reverse Engineering"). https://github.com/gillesdemey/google-speech-v2 Cette page contient également ce qui semble être des spécifications API, vous pouvez donc vous y référer.
$ cd
$ mkdir src/
$ cd src/
$ git clone https://github.com/gillesdemey/google-speech-v2.git
$ cd google-speech-v2/
$ curl -X POST \
--data-binary @'audio/hello (16bit PCM).wav' \
--header 'Content-Type: audio/l16; rate=16000;' \
'https://www.google.com/speech-api/v2/recognize?output=json&lang=en-us&key=<your api key>'
# {"result":[]}
# {"result":[{"alternative":[{"transcript":"hello Google","confidence":0.98762906},{"transcript":"hello Google Now"},{"transcript":"hello Google I"}],"final":true}],"result_index":0}
Pour les fichiers WAV, comme indiqué sur la page ci-dessus
#Dans un environnement où l'homebrew peut être utilisé
$ brew install sox
$ rec --encoding signed-integer --bits 16 --channels 1 --rate 16000 test.wav
rec WARN formats: can't set sample rate 16000; using 44100
rec WARN formats: can't set 1 channels; using 2
#↑ Bien qu'il existe une telle description, le fichier réellement créé a une fréquence d'échantillonnage de 16,000Hz, 1 canal ...
Input File : 'default' (coreaudio)
Channels : 2
Sample Rate : 44100
Precision : 32-bit
Sample Encoding: 32-bit Signed Integer PCM
In:0.00% 00:00:11.15 [00:00:00.00] Out:177k [ | ] Clip:0
#Enregistrement avec le microphone intégré. Ctrl+Terminer par C
Par
SoX http://sox.sourceforge.net/ Il semble que vous puissiez enregistrer en utilisant. (Bien sûr, même si vous ne l'utilisez pas, vous pouvez préparer une source sonore PCM 16 bits.)
Ici, j'ai essayé d'enregistrer la voix de "Hello" pour essayer.
Type | valeur |
---|---|
nom de fichier | test.wav |
format | WAVE |
Nombre de bits | 16 |
Méthode de modulation | PCM |
Nombre de canaux | 2 |
Pour ce test.wav
$ curl -X POST \
--data-binary @'test.wav' \
--header 'Content-Type: audio/l16; rate=16000;' \
'https://www.google.com/speech-api/v2/recognize?output=json&lang=ja-JP&key=<your api key>'
{"result":[]}
{"result":[{"alternative":[{"transcript":"Bonjour","confidence":0.95324326},{"transcript":"Bonjour"},{"transcript":"Bonjour"},{"transcript":"Bonjour"}],"final":true}],"result_index":0}
Ce faisant, la chaîne de caractères correspondant à la voix correctement enregistrée a été obtenue.
Il est nécessaire de décrire le type MIME et la fréquence d'échantillonnage de la source sonore dans l'en-tête de la demande. Notez également que le paramètre lang est subtilement changé de «en-js'to'ja-JP» pour prendre en charge le japonais.
De là, c'est un bonus complet. S'il prend en charge HTTP, vous pouvez également envoyer une requête à partir d'un script.
Pepper Hands-on-Basic B Voice Recognition - Obtenez Pepper pour connaître votre nom à l'aide de l'API Google Speech [Tech-Circle # 7] ↑ J'en ai parlé.
Préparez les données vocales que vous souhaitez reconnaître au format WAV de la même manière que précédemment (test.wav). On suppose que ce fichier est placé dans le même répertoire que le script suivant.
Voici le code Python3. Par exemple, test.py.
test.py
import sys
import json
import urllib.parse
import urllib.request
apikey = 'your api key'
endpoint = 'http://www.google.com/speech-api/v2/recognize'
query_string = {'output': 'json', 'lang': 'ja-JP', 'key': apikey}
url = '{0}?{1}'.format(endpoint, urllib.parse.urlencode(query_string))
headers = {'Content-Type': 'audio/l16; rate=16000'}
voice_data = open(sys.argv[1], 'rb').read()
request = urllib.request.Request(url, data=voice_data, headers=headers)
response = urllib.request.urlopen(request).read()
#Comme la sortie est un JSON multiligne, supprimez ceux qui semblent inutiles
for line in response.decode('utf-8').split():
if not line:
continue
else:
res = json.loads(line)
if res['result'] == []:
continue
else:
print(res)
$ python test.py test.wav
{'result_index': 0, 'result': [{'final': True, 'alternative': [{'confidence': 0.95324326, 'transcript': 'Bonjour'}, {'transcript': 'Bonjour'}, {'transcript': 'Bonjour'}, {'transcript': 'Bonjour'}]}]}
Je pense que la précision est toujours élevée.
Même si vous dites une longue phrase ou quelque chose qui est un peu difficile à entendre, cela le reprendra.
L'inconvénient est que l'exécution prend beaucoup de temps et que la précision varie en fonction du fichier.Il semble donc un peu difficile à utiliser dans une application qui nécessite des performances en temps réel et un certain degré de précision. Je pense que le gars qui utilise le smartphone est plus rapide et plus précis. </ S>
Même après avoir déduit cela, j'ai pensé que c'était purement incroyable qu'il puisse être utilisé gratuitement.
En parlant de cupidité, l'article de référence que j'ai essayé il y a environ un an et l'interface d'enregistrement de l'API sont complètement différentes, je ne peux pas l'utiliser à moins que j'entre dans Melis en premier lieu, je ne trouve pas les spécifications officielles, et je pense que diverses choses sont terribles, alors veuillez l'améliorer. n'est-ce pas…
On the use of Google’s Speech Recognition API Version 2 | Similar Sounds Comment utiliser l'API Google Speech ver.2 Utilisation de l'API Google Speech de Ruby-Qiita Comment obtenir la clé API pour Google Voice Recognition (Speech API) | Eyepod touch
Recommended Posts