[PYTHON] Ich habe Watson Voice Authentication (Speech to Text) ausprobiert.

Was du machen willst

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/)

Hintergrund

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. img20170324_14192489.jpg

Umgebung

Annahme

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)

Verfahren

  1. Mit Curl verbinden (Audiodatei hochladen)
  2. Verbinden Sie sich mit Python Teil 1 (Audiodatei hochladen)
  3. Verbindung mit Python Teil 2 (Echtzeit-Sprachanalyse mit WebSocket-Verbindung)

■ Mit Curl verbinden (Audiodatei hochladen)

1.1 Audiodatei hochladen

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"

1.2 Ausführungsergebnis

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. ?? 20170331.PNG

■ Verbindung mit Python Teil 1 (Audiodatei hochladen)

Implementiert mit Bezug auf diese Beispielquelle Getting robots to listen: Using Watson’s Speech to Text service

2.1 Wartung der Umwelt

Python-Bibliothek für die Installation von Watson Watson-Developer-Cloud-0.23.0

Rohrinstallation

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)

Watson-Developer-Cloud-Installation

$ 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

2.2 Ausführungsprogramm

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)

2.3 Ausführung

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
}

■ Verbindung mit Python Teil 2 (Echtzeit-Sprachanalyse mit WebSocket-Verbindung)

Es scheint, dass Sie die Stimme in Echtzeit analysieren können, indem Sie das sogenannte webSocket verwenden.

3.1 Was ist webSocket?

(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. .. ..

3.2 Umweltverbesserung

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

3.2 Ausführungsprogramm

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()

3.3 Ausführung

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}

3.4 Herausforderungen

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.

Schließlich

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

Ich habe Watson Voice Authentication (Speech to Text) ausprobiert.
Ich habe versucht, Azure Speech to Text zu verwenden.
Ich habe versucht, Pilze Pepper x IBM Bluemix Text to Speech
Ich habe versucht, Text mit TensorFlow zu klassifizieren
Ich habe versucht zu debuggen.
Ich habe versucht, PredNet zu lernen
Ich habe versucht, SVM zu organisieren.
Ich habe versucht, PCANet zu implementieren
Ich habe versucht, Linux wieder einzuführen
Sprechen mit Python [Text zu Sprache]
Ich habe versucht, Pylint vorzustellen
Ich habe versucht, SparseMatrix zusammenzufassen
jupyter ich habe es berührt
Ich habe versucht, StarGAN (1) zu implementieren.
Ich habe versucht, Deep VQE zu implementieren
Ich habe versucht, eine Quip-API zu erstellen
Ich habe versucht, Python zu berühren (Installation)
Ich habe versucht, eine kontroverse Validierung zu implementieren
Ich habe versucht, Pytorchs Datensatz zu erklären
Ich habe Teslas API berührt
Ich habe versucht, mich über MCMC zu organisieren.
Ich habe versucht, Realness GAN zu implementieren
Ich habe versucht, den Ball zu bewegen
Ich habe mit PyQt einen einfachen Texteditor erstellt
Ich habe versucht, den Abschnitt zu schätzen.
Ich habe versucht, einen Linebot zu erstellen (Implementierung)
Ich habe versucht, die Behandlung von Python-Ausnahmen zusammenzufassen
Ich habe versucht, PLSA in Python zu implementieren
Englische Spracherkennung mit Python [Rede zu Text]
Ich habe versucht, Autoencoder mit TensorFlow zu implementieren
Ich habe versucht, den Befehl umask zusammenzufassen
Ich habe versucht, Permutation in Python zu implementieren
Ich habe versucht, AutoEncoder mit TensorFlow zu visualisieren
Ich versuchte das Weckwort zu erkennen
Python3-Standardeingabe habe ich versucht zusammenzufassen
Ich habe versucht, die grafische Modellierung zusammenzufassen.
Ich habe versucht, der CPython-Implementierung ein Post-Inkrement hinzuzufügen
Ich habe versucht, ADALINE in Python zu implementieren
Ich habe versucht, Optuna die Nummer lösen zu lassen
Ich habe versucht, das Umfangsverhältnis π probabilistisch abzuschätzen
Ich habe versucht, die COTOHA-API zu berühren
Ich habe versucht, PPO in Python zu implementieren
Ich habe versucht, CVAE mit PyTorch zu implementieren
Ich habe eine Web-API erstellt
Ich habe versucht, TSP mit QAOA zu lösen
[Python] Ich habe versucht, TF-IDF stetig zu berechnen
Ich habe versucht, Python zu berühren (grundlegende Syntax)
Ich versuchte mein Bestes, um zu Lasso zurückzukehren
Ich habe versucht, Ansibles Module-Linux-Edition zusammenzufassen
Sprachauthentifizierung und Transkription mit Raspberry Pi 3 x Julius x Watson (Rede zu Text)
Ich habe versucht zu kratzen
Ich habe PyQ ausprobiert
Ich habe AutoKeras ausprobiert
Ich habe es mit Papiermühle versucht
Ich habe versucht, den Text des Romans "Wetterkind" mit Word Cloud zu visualisieren
Ich habe versucht, Django-Slack
Ich habe es mit Django versucht