# Mikrofoninput analysieren



## Marco7757 (17. März 2011)

Hallo Community

Ich habe mich gerade eine Stunde durchs Netz gegoogelt, bin aber nicht wirklich schlau geworden.

Ich will ein Programm machen, das auf Mikrofon-Inputs reagiert, ähnlich wie die Voice und Speech recognition Programme, nur natürlich viel Simpler und mit festgelegten Befehlen.

Ist es möglich eine bestimmte Frequenz wiederzuerkennen. Zum Beispiel den Befehl "Suchen". Er sollte sich doch jedes mal ungefähr gleich anhören. Wenn ich mein Programm nun die Frequenz speichern lasse und dann, bei erneutem sagen des Befehls, die Frequenz mit der gespeicherten abgleiche und kleiner (oder auch mittlere) Abweichungen miteinbeziehe, dann sollte es doch möglich sein, auf den Befehl zu reagieren, nicht?

Leider weiss ich nicht
1. wie ich die Frequenz bekomme?
2. wie die Frequenz gespeichert wird, wenn ich sie bekommen (sind das Zahlen oder andere Werte? Wenn ja, wie viele Zahlen und in welcher Reihenfolge? etc.)
3. Muss ich die erhaltenen Frequenzwerte noch irgendwie umrechnen um sie brauchbar zu machen (Fourier-Transformation --> Trotz Wikipedia Artikel noch immer nicht schlauer)?

Vielen Dank für Hilfe schon jetzt!


----------



## Billie (18. März 2011)

Hellas!

Also mit der Java Sound API sollte es möglich sein den Input es Mikrofons zu lesen. Google hat mir zB folgendes Beispiel aufgezeigt:

http://www.developer.com/java/other...turing-Microphone-Data-into-an-Audio-File.htm

Dort wird der Mikrofon-Input gelesen und in einem Audio-Format wieder gespeichert. Für Dich ist vermutlich nur der erste Schritt interessant.

Zur Sound API fand ich auch folgende Kapitel immer sehr aufschlussreich:

http://fivedots.coe.psu.ac.th/~ad/jg/ch05/index.html

Wie genau Du aber dann die Daten vergleichst und Sprach-Input wiedererkennst, da kann ich Dir leider nicht weiterhelfen.

Beste Grüße,
Billie


----------



## Nud3l (18. März 2011)

Hi, 

Ich habe auch letztes was mit der JavaSound API gemacht ist eigentlich recht einfach es gibt viele gute Quellen im Internet. Die Aufnahmen werden als Byte Array gespeichert. Aus diesem Array kann dann eine WAV erzeugt werden aus der man dann die Lautstärke heraus filtern kann.


----------



## RoCMe (18. März 2011)

Hi!

Die Thematik ist sehr  umfangreich und ziemlich komplex. Du wirst dich viel mit Akustik, vor allem aber mit höherer Mathematik beschäftigen. Fourier-Transformation ist sicherlich ein erster Ansatz, aber Mustererkennung (und nichts anderes ist Spracherkennung ja letztlich) besteht noch aus einigem mehr...

Das Thema ist ein spannendes Feld, aber für "ein Programm machen" viel zu kompliziert. Selbst, wenn du Vorkenntnisse in Mathematik (und damit meine ich nicht Prozentrechnung und das große 1x1  ) mitbringst und ein begnadeter Programmierer bist:
Das wird dich Monate, wenn nicht Jahre beschäftigen...

EDIT:
Der wikipedia Eintrag zur Spracherkennung referenziert unter anderem das hier:http://speech-recognition.de/textbook.html) Wie gesagt, jede Menge Theorie, gewürzt mit einigen Köstlichkeiten aus dem Bereich höhere Mathematik - aber spannend


----------



## Marco7757 (18. März 2011)

Hmm ... okay.

Du meinst es ist kaum möglich ein Programm  zu schreiben, das _vorgesetzte_ Muster erkennt? Die professionellen Spracherkennungsprogramme erkennen ja "alles" (auch wenn ich selbst bisher noch von keinem einzigen überzeugt war ...) ohne es vorher gehört zu haben ...


----------



## RoCMe (18. März 2011)

Möglich schon - aber SEHR aufwendig... Schau dir den Link an, den ich oben gepostet hab. Das ist eine Einführung in die Theorie, auf der du eventuell aufbauen kannst...


----------



## Thomas Darimont (22. März 2011)

Hallo,

schau mal hier:

Spracherkennung in Java:
http://java.sun.com/products/java-media/speech/forDevelopers/jsapi-guide/Recognition.html
http://cmusphinx.sourceforge.net/sphinx4/
http://freespeech.sourceforge.net/

Sprach-Synthese mit Java:
http://freetts.sourceforge.net/docs/index.php

Gruß Tom


----------

