Versuchen Sie Watsons Rede zum Text. Versuchen Sie, das Beispiel von der folgenden Demo-Site aus auszuführen (https://www.ibm.com/blogs/watson/2016/07/getting-robots-listen-using-watsons-speech-text-service/)
Watsons Sprachauthentifizierung (Speech to Text) zum Erstellen von Raspberry Pi Robo, mit dem Videoklang in Echtzeit in Text umgewandelt werden kann Versuchen.
Das endgültige Ziel ist die Sprachauthentifizierung und -transkription mit Raspberry Pi 3 x Julius x Watson (Sprache zu Text), wie in der folgenden Abbildung gezeigt. (http://qiita.com/nanako_ut/items/1e044eb494623a3961a5)
Dieses Mal werden wir in Teil (4) der folgenden Abbildung nach der Watson-Sprachauthentifizierungsmethode suchen.
Es wird davon ausgegangen, dass Folgendes bereit ist. --Benutzerregistrierung bei Watson (Es scheint, dass alle Dienste einen Monat nach der Registrierung kostenlos genutzt werden können)
Geben Sie die Sprachdatei (test.wat) an und laden Sie sie über eine HTTP-Verbindung auf Watson hoch
curl -X POST -u username:passward --header "Content-Type: audio/wav" --header "Transfer-Encoding: chunked" --data-binary @test.wav "https://stream.watsonplatform.net/speech-to-text/api/v1/recognize?model=ja-JP_BroadbandModel"
Etwas ist zurückgekehrt. Aber ... die Charaktere sind verstümmelt ... Raspeye ist UTF-8 und die Zeichen sind aufgrund des japanischen Analyseergebnisses (S-JIS?) Verstümmelt. ??
Implementiert mit Bezug auf diese Beispielquelle Getting robots to listen: Using Watson’s Speech to Text service
Python-Bibliothek für die Installation von Watson Watson-Developer-Cloud-0.23.0
Nicht erforderlich, wenn pip bereits installiert ist. Es war nicht in dem Rasppie, den ich benutze, wahrscheinlich weil ich RASPBIAN JESSIE LITE in Rasppie 3 eingefügt habe. .. ..
$ python -m pip -V
/usr/bin/python: No module named pip
$ sudo apt-get install python-pip
Reading package lists... Done
Building dependency tree
~ Auf halbem Weg ~
$ python -m pip -V
pip 1.5.6 from /usr/lib/python2.7/dist-packages (python 2.7)
aktualisieren
$ sudo pip install -U pip
Downloading pip-9.0.1-py2.py3-none-any.whl (1.3MB): 1.3MB downloaded
Installing collected packages: pip
Found existing installation: pip 1.5.6
Not uninstalling pip at /usr/lib/python2.7/dist-packages, owned by OS
Successfully installed pip
Cleaning up...
$ python -m pip -V
pip 9.0.1 from /usr/local/lib/python2.7/dist-packages (python 2.7)
$ sudo pip install --upgrade watson-developer-cloud
Collecting watson-developer-cloud
Downloading watson-developer-cloud-0.23.0.tar.gz (52kB)
~ Auf halbem Weg ~
Successfully installed pysolr-3.6.0 requests-2.12.5 watson-developer-cloud-0.23.0
Kopieren Sie die Site, auf die verwiesen wird
watson_test1.py
from watson_developer_cloud import SpeechToTextV1
import json
stt = SpeechToTextV1(username="username", password="password")
audio_file = open("test1.wav", "rb")
print json.dumps(stt.recognize(audio_file, content_type="audio/wav"), indent=2)
Etwas kam zurück. Es scheint, dass der Text zurückgegeben wird. Es hätte allerdings eine längere Stimme sein sollen, aber der Text wurde in der Mitte abgeschnitten! ?? ??
{
"results": [
{
"alternatives": [
{
"confidence": 0.438,
"transcript": "so we know it's coming Julio just say yeah lost me grow mandatory right here shone like a great kid fifth grader etan Allemand planning his fifth critics "
}
],
"final": true
}
],
"result_index": 0
}
Es scheint, dass Sie die Stimme in Echtzeit analysieren können, indem Sie das sogenannte webSocket verwenden.
(https://www.html5rocks.com/ja/tutorials/websockets/basics/) Die WebSocket-Spezifikation definiert eine API, die eine "Socket" -Verbindung zwischen einem Webbrowser und einem Server herstellt. Einfach ausgedrückt besteht eine dauerhafte Verbindung zwischen dem Client und dem Server, und Sie können jederzeit Daten von beiden Seiten senden.
Es scheint.
(http://www.atmarkit.co.jp/ait/articles/1111/11/news135.html) In HTML5 wurde ein neuer Kommunikationsstandard namens "WebSocket" hinzugefügt. Charakteristisch
Sobald eine Verbindung zwischen dem Server und dem Client hergestellt ist, können Daten über die Socket-Kommunikation ausgetauscht werden, ohne dass der Kommunikationsvorgang bekannt ist, sofern dies nicht ausdrücklich getrennt wird. Ein Server mit einer WebSocket-Verbindung und alle Clients können dieselben Daten gemeinsam nutzen und in Echtzeit senden und empfangen. Bei der herkömmlichen Kommunikationstechnologie wird für jede Kommunikation ein HTTP-Header hinzugefügt, sodass zusätzlich zum Senden und Empfangen von Daten entsprechend der Anzahl der Verbindungen eine geringe Menge an Datenverkehr generiert und Ressourcen verbraucht werden. WebSocket sendet eine Handshake-Anforderung von der Clientseite, um die Verbindung bei der ersten Verbindung weiter zu verwenden. Die Serverseite verwendet eine Verbindung, indem sie eine Handshake-Antwort zurückgibt, und fährt fort. Es scheint.
Aha. .. ..
Installieren Sie die ws4py-Bibliothek für webSocket
$ sudo pip install ws4py
Collecting ws4py
Downloading ws4py-0.3.5-py2-none-any.whl (40kB)
100% |????????????????????????????????| 40kB 661kB/s
Installing collected packages: ws4py
Successfully installed ws4py-0.3.5
Kopieren Sie die Site, auf die verwiesen wird
watson_test2.py
from ws4py.client.threadedclient import WebSocketClient
import base64, time
class SpeechToTextClient(WebSocketClient):
def __init__(self):
ws_url = "wss://stream.watsonplatform.net/speech-to-text/api/v1/recognize"
username = "username"
password = "password"
auth_string = "%s:%s" % (username, password)
base64string = base64.encodestring(auth_string).replace("\n", "")
try:
WebSocketClient.__init__(self, ws_url,
headers=[("Authorization", "Basic %s" % base64string)])
self.connect()
except: print "Failed to open WebSocket."
def opened(self):
self.send('{"action": "start", "content-type": "audio/l16;rate=16000"}')
def received_message(self, message):
print message
stt_client = SpeechToTextClient()
time.sleep(3)
stt_client.close()
Sprachdaten werden zurückgegeben.
$ python watson_test2.py
opend
Message received: {u'state': u'listening'}
sleep audio
Recording raw data 'stdin' : Signed 16 bit Little Endian, Rate 16000 Hz, Mono
Message received: {u'results': [{u'alternatives': [{u'confidence': 0.713, u'transcript': u'over the entire course of the scalp was it was all the guys that one rings before imagine '}], u'final': True}], u'result_index': 0}
Hmmm, obwohl es in Echtzeit ist, egal wie viele Sprachdaten Sie senden, können Sie nur die erste Nachricht empfangen. Gibt es eine Option oder werden die Daten schlecht übergeben? Es scheint, dass wir etwas mehr herausfinden müssen.
Es scheint, dass sich die Bluemix-Benutzeroberfläche stetig ändert und die URL für Sprache zu Text sich vom Beispiel unterscheidet und sich noch in der Entwicklung befindet. Der Nachteil ist, dass die Untersuchung einige Zeit in Anspruch nimmt. .. ..
Recommended Posts