Kürzlich habe ich nachgeforscht, weil ich ein Programm erstellen wollte, das Spracherkennung verwendet, und als ich Gerüchte von verschiedenen Leuten hörte, dass es "genau" sei, kam mir die Idee, die Google Speech API zu verwenden. Als ich versuchte, es zu bewegen, gab es einige Orte, an denen ich süchtig war, also notieren Sie es sich.
Die Google Speech API ist eine API zur Verwendung der Spracherkennungstechnologie von Google.
Diese API verwendet eine Sprachdatei als Eingabe und gibt mit Sicherheit einen plausiblen natürlichen Satz aus, der der Stimme entspricht. Es scheint, dass Version 2 derzeit ausgeführt wird.
Für die Verwendung der Google Speech API ist eine Registrierung in der Google Developer Console erforderlich.
Google Developer Console
Google Developer Console https://console.developers.google.com/project
In diesem Bereich scheint sich die Benutzeroberfläche stark zu unterscheiden, je nachdem, ob Sie zuvor die Google-API verwendet haben oder nicht. Ich hoffe, Sie können Ihr Verfahren nur als Referenz verwenden.
Klicken Sie auf "Google API verwenden".
Erstellen Sie ein Projekt, indem Sie einen geeigneten Projektnamen und eine Projekt-ID eingeben. Klicken Sie auf den erstellten Projektnamen, um zum Dashboard zu wechseln.
Ich dachte, dass die Sprach-API in der Registerkarte "Google API" enthalten ist und suchte danach, konnte sie aber nicht finden (ich war hier verrückt danach).
http://eyepodtouch.net/?p=81
Gemäß diesem Artikel müssen Sie der Chrome-Dev-Gruppe beitreten, um die Sprach-API aus Japan zu aktivieren.
https://groups.google.com/a/chromium.org/forum/?fromgroups#!forum/chromium-dev
Klicken Sie auf "Der zu postenden Gruppe beitreten", um Mitglied zu werden (beachten Sie, dass Sie eine Benachrichtigung über Melis on Mead erhalten?).
Wenn Sie der Gruppe beitreten können, können Sie die Google Speech-API durchsuchen. Klicken Sie daher auf "API aktivieren", um sie zu aktivieren (da das zweite Bild bereits aktiviert wurde, lautet die Schaltfläche "API". Ist behindert).
Auf der Registerkarte "Anmeldeinformationen"
Wählen Sie "Neue Anmeldeinformationen" -> "API-Schlüssel" -> "Serverschlüssel".
Geben Sie einen geeigneten Serverschlüsselnamen ein und klicken Sie auf "Erstellen", um den Schlüssel (die Zeichenfolge) für die API abzurufen. Notieren Sie sich diesen Wert.
Jetzt können Sie die API verwenden.
Die Umwelt ist OS: Mac OS X 10.11 Mike: Eingebautes Mikrofon für Macbook Air Mid 2013
Versuchen Sie hier einmal, die API gemäß dem Verwendungsbeispiel in einem bestimmten Github-Repository zu verwenden (es ist ein wenig beängstigend, weil dort "Reverse Engineering" steht). https://github.com/gillesdemey/google-speech-v2 Diese Seite enthält auch API-Spezifikationen, auf die Sie verweisen können.
$ 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}
Für WAV-Dateien, wie auf der obigen Seite gezeigt
#In einer Umgebung, in der Homebrew verwendet werden kann
$ 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
#↑ Obwohl es eine solche Beschreibung gibt, hat die tatsächlich erstellte Datei eine Abtastfrequenz von 16,000Hz, 1 Kanal ...
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
#Aufnahme mit dem eingebauten Mikrofon. Strg+Beenden Sie mit C.
Durch
SoX http://sox.sourceforge.net/ Es scheint, dass Sie mit aufnehmen können. (Selbst wenn Sie dies nicht verwenden, ist es natürlich in Ordnung, wenn Sie eine 16-Bit-PCM-Soundquelle vorbereiten können.)
Hier habe ich versucht, die Stimme von "Hallo" aufzunehmen, um es zu versuchen.
Art | Wert |
---|---|
Dateiname | test.wav |
Format | WAVE |
Anzahl der Bits | 16 |
Modulationsmethode | PCM |
Anzahl der Kanäle | 2 |
Für diesen 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":"Hallo","confidence":0.95324326},{"transcript":"Hallo"},{"transcript":"Hallo"},{"transcript":"Hallo"}],"final":true}],"result_index":0}
Auf diese Weise wurde die Zeichenkette erhalten, die der richtig aufgezeichneten Stimme entspricht.
Der MIME-Typ und die Abtastfrequenz der Schallquelle müssen im Anforderungsheader beschrieben werden. Beachten Sie auch, dass der Parameter lang geringfügig von 'en-js'to'ja-JP' geändert wird, um Japanisch zu unterstützen.
Ab hier ist es ein kompletter Bonus. Wenn es HTTP unterstützt, können Sie eine Anfrage auch über ein Skript senden.
Pepper Hands-on-Basic B Spracherkennung - Bringen Sie Pepper dazu, Ihren Namen mithilfe der Google Speech API [Tech-Circle # 7] zu kennen ↑ Ich habe darauf hingewiesen.
Bereiten Sie die Audiodaten, die Sie im WAV-Format erkennen möchten, auf die gleiche Weise wie zuvor vor (test.wav). Es wird davon ausgegangen, dass sich diese Datei im selben Verzeichnis wie das folgende Skript befindet.
Unten ist der Python3-Code. Zum Beispiel 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()
#Da es sich bei der Ausgabe um einen mehrzeiligen JSON handelt, löschen Sie diejenigen, die als unnötig erscheinen
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': 'Hallo'}, {'transcript': 'Hallo'}, {'transcript': 'Hallo'}, {'transcript': 'Hallo'}]}]}
Ich denke die Genauigkeit ist immer noch hoch.
Selbst wenn Sie einen langen Satz oder etwas sagen, das etwas schwer zu hören ist, wird es ihn aufgreifen.
Der Nachteil ist, dass die Ausführung sehr lange dauert und die Genauigkeit je nach Datei variiert. Daher scheint die Verwendung in einer App, die Echtzeitleistung und ein gewisses Maß an Genauigkeit erfordert, etwas schwierig zu sein. Ich denke, der Typ, der auf dem Smartphone läuft, ist schneller und genauer. </ S>
Selbst nachdem ich das abgezogen hatte, fand ich es einfach erstaunlich, dass es kostenlos verwendet werden konnte.
Apropos Gier, der Referenzartikel, den ich vor ungefähr einem Jahr ausprobiert habe, und die API-Registrierungsoberfläche sind völlig anders. Ich kann ihn nur verwenden, wenn ich Melis zuerst eingebe. Ich kann die offiziellen Spezifikationen nicht finden und finde ihn schrecklich. Bitte verbessern Sie ihn. nicht wahr…
On the use of Google’s Speech Recognition API Version 2 | Similar Sounds Verwendung der Google Speech API Version 2 Verwenden der Google Speech API von Ruby-Qiita So erhalten Sie den API-Schlüssel für die Google-Spracherkennung (Sprach-API) | Eyepod touch
Recommended Posts