Freitag, 14. Juni 2013

Eigene Programme für EVAGui2


Wie schreibe ich Programme für EVAGui2

EVAGui2 kann alle Typen von Programmen ausführen, die auf Windows laufen.
Daher können für EVAGui2 Programme in verschiedensten Programmiersprachen
entwickelt werden.

Um einige Beispiele zu nennen kann EVAGui2 folgende Typen ausführen.

Windows-Standard

.vbs (Visual Basic Script über Wscript.exe)
.vbe (Encoded Visual Basic Script über Wscript.exe)
.bat (Batch) Workaround für Ausgaben von anderen Applikationen folgt.
.hta (Html Application)

Mithilfe externer Binärdateien

PHP (Über PHP.exe Bsp. Facebook CMD)
PERL
PYTHON
JavaScript (über Node.js, Beispiel "Helloworld" im EVAGui2-Paket enthalten)

Auf anderen Computern

Für einige Fälle muss ein "Hintertürchen" verwendet werden. Dieses Hintertürchen kann über den
Webserver realisiert werden, weil dieser direkte Befehle von entfernten Computern empfangen kann.
So kann ebenfalls in HTML auf einer Internetseite ein Link auf den Zielbefehl gelegt werden und von
EVAGui2 ausgeführt werden. (Bsp. Webcam Bewegungserkennung, dass bei Bewegung eine Seite aufruft)

Eine weitere Methode andere Computer zu überwachen ist das Terminal. Hier kann zum Zielcomputer
z.B. ein Linux eine Verbindung aufgebaut werden. Die auszuführenden Befehle können dann dort
an eine Terminalausgabe geleitet werden und ausgewertet werden. (Bsp. FHEM Terminal)

Die Ausgabe der Unterschiedlichen Programmiersprachen muss an die Kommandozeile per
STDOUT bzw. STDERR übergeben werden. (meistens Print bzw. Println)
Die Übergabe von Befehlen funktioniert  per STDIN bzw. Argumenten beim starten.
genaue Anweisungen sind in den jeweiligen Dokumentationen der Programmiersprache nachzulesen.

Samstag, 8. Juni 2013

Spracherkennung


Für EVAGui2 ist es möglich verschiedene Spracherkennungen zu implementieren.

Die Windows-Sapi ist hierbei die einfachste Möglichkeit, hat jedoch nach einer gewissen Zeit (zumindest bei mir) Schwierigkeiten gemacht, weshalb ich weitere Spracherkennungen getestet habe.

Eine freie Software für Spracherkennung ist Simon-Listens.
Wir benötigen dieses Paket, um uns ein Vokabular zu generieren.

Jetzt installieren wir Simon auf unserem PC und starten es. 
Zu aller Anfang müssen wir uns ein eigenes Sprachmodell anlegen.

Simon bietet uns hier bereits "Standard" an.
Jetzt legen wir jedes Wort in Simon an. Die Pronunciation muss aus dem Internet oder aus einem Schattenvokabular geholt werden.

Ich bevorzuge dieses Schattenvokabular: http://script.blau.in/speech-model/german.zip.
Das Wort wird beim anlegen durch die Benutzerführung trainiert. Wichtig ist die Zuordnung
des Wortes zu einer Kategorie, wie z.B. "Trigger", "Geraet" oder "Aktion".
Unter dem Reiter "Training" legen wir jetzt einen Text mit unseren Wörtern an.
z.B. Für Spracherkennung, TV und PC sowie aus und ein wäre dies :
Spracherkennung TV ein, Spracherkennung TV aus, Spracherkennung PC ein ...
somit Trainieren wir alle Worte in einem Rutsch beim Training.
Unter dem Reiter Grammar können wir nun vorgeben, welche Worte in welcher Reihenfolge
als gültige Eingabe zählen. Hierzu geben wir z.B. "Trigger Geraet Aktion" ein, damit nur eingaben
wie "Spracherkennung TV ein" zugelassen werden.

Nachdem Wir alle Wörter angelegt haben sollten wir unter Training einige Durchläufe
der Spracherkennung machen, um die Sprachdatei zu trainieren.

Das Compilieren des Sprachmodells passiert automatisch im Hintergrund.
(CMU-Sphinx ist Standard)


Verwenden der Sprachdateien unter CMU-Shpinx:

Zuerst laden wir uns Pocketsphinx und Sphinxbase unter: http://cmusphinx.sourceforge.net/wiki/download/
herunter und kopieren die Dateien:

pocketsphinx.dll
pocketsphinx continous.exe
(aus pocketsphinx)
sphinxbase.dll
(aus Base)

in einen neuen Ordner
in diesem Ordner erstellen wir einen Ordner namens "hmm".

Jetzt wechseln suchen wir im Windows-Explorer nach dem Ordner Benutzer\Benutzername\Appdata\Roaming\.kde\tmp-Computername\Simond\Default\sphinx\

und kopieren alle Dateien außer die *.dic und die *.jsgf datei in den Ordner HMM.
die dic-Datei und die .jsgf-Datei kommt in den Stammordner und wird in Commands.Dic bzw. Commands.gram (aus der jsgf) umbenannt.

jetzt erstellen wir eine Batch-Datei mit dem Inhalt:

pocketsphinx_continuous.exe -hmm hmm\voxforge-de -dict commands.dic -jsgf commands.gram -samprate 16000 -maxwpf 10 -pl_window 2 -backtrace true -adcin true

und starten die Datei und testen die Spracherkennung.

Verwenden der Sprachdateien unter Julius:

Um die Sprachdateien mit Julius zu verwenden muss in Simon unter "Configure Simon" - Recognition
- Configure Server die Sprachmodellcompilierung auf das Backend Julius umgestellt werden.
Zum kompilieren eines Julius-Models sind die HTK-Programme dringend erforderlich.
In der Simon-Anleitung stehen weitere Anweisungen dazu.

Für das erstellen des Models in Simon muss ein erneutes Training gestartet werden.

Für Julius erstellen wir uns Ebenfalls einen Ordner und kopieren die Julius.exe sowie alle Inhalte aus
Benutzer\Benutzername\Appdata\Roaming\.kde\tmp-Computername\Simond\Default\Julius hinein.

Jetzt legen wir wieder eine Batch-Datei mit folgendem Inhalt an und starten das ganze.

julius -C julius.jconf -gram model -input mic