Die APIs von Microsofts Project Oxford helfen euch dabei, Bilder zu verarbeiten, Sprache zu erkennen und diese zu deuten. In diesem Blogpost wollen wir uns die Sprach-Erkennung mal genauer anschauen und am Beispiel einer normalen Website (HTML, CSS, JS) verwenden. Im ersten Post dieser Serie ging es um die Umwandlung von Text in Sprache. Nun wollen wir uns ansehen, wie man Sprache aufnehmen kann und diese dann durch Oxford in Text umwandeln lässt (alles im Browser).

Den Code gibt es am Ende des Posts als Download.

 

Speech to Text

Als Ausgangspunkt für den Aufruf des Services wählen wir wieder eine simple Webseite.

 

Website

 

Hier sieht man schon, dass wir ein paar mehr Skripte als noch für Text to speech benötigen. Diese dienen zum Aufnehmen und verarbeiten der Sprache.

 

Aufnehmen der Sprache

Zur Aufnahme bedienen wir uns eines neuen HTML5 Standards, der so genannten Web Audio API (genauere Infos zur Nutzung unter dem Link). Dank des Internets müssen wir den Code für die Aufnahme auch nicht selbst schreiben, sondern können uns eines Beispiels bedienen, was Aufnahme und Abspeichern von .wav Dateien ermöglicht. Achtet bitte bei der Verwendung des Codes darauf, dass ihr die Copyright Richtlinien des Autors einhaltet (im Code ganz oben auf den entsprechenden Seiten).

Es gibt 3 Skripts mit folgenden Funktionalitäten:

  • speech.js = Dient zum Management der Unterklassen und ruft andere Skripte aus (eigene Abwandlung des Originals, um unserem Zweck zu dienen 🙂 )
  • recorder.js = Definiert Funktionen und dient als Verbindung zwischen recorderWorker.js und speech.js
  • recorderWorker.js = Führt die eigentliche Arbeit aus. Hier wird die Aufnahme und Verarbeitung der Aufnahme durchgeführt

Als Beispiel hier die Codierung der Aufnahme ins .wav Format, die wir zur Kommunikation mit dem Oxford Service brauchen:

 

encode_wav

 

Aufrufen des Oxford Service

Nun können wir eine Aufnahme tätigen und müssen diese “nur” noch mit den korrekten Meta-Informationen an der Oxford Service schicken. Dies wird in dem Skript apicalls.js geregelt. Hier müsst ihr nur noch die eigenen Daten aus eurem Service eingeben. Diese findet ihr auf der Project Oxford Seite.

Bei Problemen mit der Authentifizierung die Keys auf der Seite neu generieren, in das Skript eintragen und ein paar Minuten warten, bis die Änderungen am Service angelangt sind.

Wie im Text to Speech Beispiel muss einmal eine Authentifizierung stattfinden, mit der ihr den eigentlichen Service aufrufen könnt. Also 2 seperate Calls. Diese sehen wie folgt aus:

Authentifizierung:

auth

API Call:

api_call

 

Nun könnt ihr die Webseite starten und auf den “Record” Knopf drücken und eure Aufnahme starten. Beim erneuten Klick auf den Knopf wird die Aufnahme beendet und der Call an den Service geschickt, der den gesprochenen Text nun im Textfeld darstellt.

Nicht zu lange Aufnahmen verwenden, der Service ist auf wenige Sekunden beschränkt.

Ihr könnt die Sprache der Spracherkennung auch entsprechend abändern. Die Werte dafür findet ihr in der API Doku.

 

CODE DOWNLOAD: speech_to_text