# Spracherkennung/steuerung



## alexknep01 (13. Feb 2016)

Hallo, ich hab eine Frage zum Thema Spracherkennung. Ich würde gern ein Programm schreiben, dass per Sprachsteuerung etwas ausführt. Wenn ich z.B sage Internet öffnen (oder etwas ähnliches) soll sich mein browser öffnen und die startseite laden. Gibt es für sowas Tutorials wie man sowas programmiert?. Ich meine auch keine TTS, TextToSpeach, sonder eine Art Speech recognition. Ich will das ganze machen ohne irgendeine teure Engine oder so zu kaufen.
:-D


----------



## Thallius (13. Feb 2016)

Ich würde auch gerne einen Ferrari fahren ohne dafür zu bezahlen....


----------



## Tobse (13. Feb 2016)

Dass du dem Computer einen Text vorgibst "internet öffnen", er dann die von dir gesagten Worte erkennt und richtig zuordnet, ist imho als Hobbyprojekt undenkbar. Bestehende Software wie Siri, Google Now und Cortana haben riesige Datenbanken mit Sprachsamples um das zu bewerkstelligen. Sich eine solche Datenbank anzuschaffen ist ein enormer aufwand und kostet wahrscheinlich eine riesen Haufen Kohle.

Was aber ggf. möglich ist:
Mithilfe eines Equalizers ( = FFT) kannst du schwache Umgebungsgeräusche filtern; somit bekommst du ein klareres Audio-Signal deiner Stimme (nützlich wenn z.B. der Nachbar grade bohrt, ein FLugzeug vorbei fliegt oder der Fernseher läuft).
Aus diesem Audiosignal kannst du dann eine Signatur rausrechnen. Wie das geht - keine Ahnung - aber *dass *es geht weiss ich, denn das konnte schon mein Simens ME-25.
Wenn du die Parameter für diese Signatur geschickt festlegst bekommst du für leicht andere Audiosignaturen der selben Lautfolge die selbe oder eine sehr ähnliche Signatur. Die kannst du dann gegen die bekannten Signaturen abgleichen und entsprechend Dinge ausführen. Google Now erkennt das "Okey, Google" ebenfalls über diese Technik.


----------



## alexknep01 (13. Feb 2016)

Danke, ok schade, dass das nicht möglich ist. Aber ich hab eine andere Frage dazu. Kann man es nicht so machen, dass man einen Sound aufnimmt und java ihn mit dem sound des microfon abgleicht. Und wenn der SOund z.B zu 80 oder 90 % übereinstimmt oder ähnlichkeit auwweist dann einen befehl auszuführen? Geht das????


----------



## Tobse (13. Feb 2016)

alexknep01 hat gesagt.:


> Danke, ok schade, dass das nicht möglich ist. Aber ich hab eine andere Frage dazu. Kann man es nicht so machen, dass man einen Sound aufnimmt und java ihn mit dem sound des microfon abgleicht. Und wenn der SOund z.B zu 80 oder 90 % übereinstimmt oder ähnlichkeit auwweist dann einen befehl auszuführen? Geht das????


Das ist genau das, was ich beschrieben habe. Die Audio-Rohdaten zu vergleichen wird dir aber nichts bringen; da brauchst du einiges an Mathematik um das Audiosignal auf etwas herunterzubrechen, was man sinnvoll und zuverlässig vergleichen kann.


----------



## alexknep01 (13. Feb 2016)

ok, ist das mathematische so schwer ich denke dass ich das mit mathematik hinbekommen könnte


----------



## Thallius (13. Feb 2016)

Wenn Du weißt was eine FFT ist ...


----------



## Tobse (13. Feb 2016)

Sich die Algorithmen selbst zu erarbeiten wird für einen normal-sterblichen nicht möglich sein. Aber im Netz sind mit sicherheit ein paar Algorithmen beschrieben, mit denen man so eine Audiosignatur berechnen kann. Die musst du dann nurnoch implementieren.

Für die FFT gibts mit sicherheit fertige libraries.


----------



## alexknep01 (13. Feb 2016)

Ok danke


----------



## Sogomn (26. Feb 2016)

Du könntest es mit einem lernenden Programm versuchen. Also z.B. einem Backpropagation-Netz.
Funktioniert bei Dingen wie Gesichtserkennung. Lässt sich bestimmt auch in irgendeiner Weise auf Audio anwenden.


----------



## mrBrown (26. Feb 2016)

Zumindest unter Unix dürfte es einige SpeechToText-Pakete geben, Macs haben zusätzlich auch noch was eigenes integriert. Bei Windows keine Ahnung, da dürfte es aber sicherlich auch was geben...
Dann bleibt nur noch die Anbindung an Java, der Aufwand dürfe aber im Vergleich zur Spracherkennung minimal sein...


----------



## windl (11. Apr 2016)

Hallo,

es ist sehr wohl möglich dies zu programmieren - auch mit sehr einfachen Bordmitteln (habe es bereits erfolgreich getan).
Trick hierbei ist es genau wie meine Vorredner geschrieben haben - sich den Akt der eigentlichen Spracherkennung zu entledigen.
Hierfür bietet Dir GOOGLE ein umfangreiches Paket an (https://cloud.google.com/speech/)
Einfach sein Projekt bei Google anmelden und den aufgenommenen Text an Google-Speech-Api senden und du erhälst in überschaubaren delays den gesprochenen Text als String zurück.
Jetzt kannst Du diesen Parsen und daraufhin deine Aktionen steuern. Einziger Nachteil - du musst immer Online sein.

Viel Erfolg damit
Uwe


----------



## Thallius (11. Apr 2016)

windl hat gesagt.:


> Hallo,
> 
> es ist sehr wohl möglich dies zu programmieren - auch mit sehr einfachen Bordmitteln (habe es bereits erfolgreich getan).
> Trick hierbei ist es genau wie meine Vorredner geschrieben haben - sich den Akt der eigentlichen Spracherkennung zu entledigen.
> ...



Zweiter Nachteil: Google weiß genau was Du machst und was Dich interessiert. Noch besser gehts kaum für die.


----------

