Mustererkennung

BigJ

Mitglied
Hallo

ich wollte fragen, mir jemand sagen kann, wie ich eine "allgemeine" Mustererkennung programmieren kann. Diese sollte allerdings KEINE künstliche Intelligenz sein. Die Mustererkennung sollte aus einer großen Anzahl von Daten die "markanten Punkte" herausfiltern, die dann die eingegebene Datenmenge definieren, sodass man ähnliche oder gleiche Daten leicht finden kann.

Danke im Voraus für die Hilfe

BigJ
 

mrBrown

Super-Moderator
Mitarbeiter
Sowas Allgemein definieren, dass anhand von vorgegebenen Daten Muster gelernt werden und danach adere Daten gefiltert werden könne, ist eigentlich grad Künstlicher Intelligenz, schließlich soll anhand der Daten "gelernt" werden.

Keine künstliche Intelligenz wäre, vorzugeben welche Muster erkannt werden sollen, ist dann aber eher nicht mehr allgemein und lernt eben nicht selbst die Muster.


Man kann aber sicherlich besser was dazu sagen, wenn man in etwa weiß, um was für Daten es geht ;)
 

BigJ

Mitglied
Vielen Dank für die schnelle Antwort.

Ich wollte probieren, ob man so eine Spracherkennung aufbauen kann, indem man immer das jeweilige Wort oft einspricht, dann das Muster des Wortes gelernt wird, und so anschließend wiedererkannt wird. Habe versucht, das ganze so zu machen, dass ich zuerst zwei Sound datein genommen habe, und diese auf Byte Ebene verglichen habe. Dabei habe ich nur längere Byte Ketten zugelassen. Das Ergebnis habe ich dann mit weiteren Sound datein des gleichen Wortes abgeglichen, und nur die Byte Ketten, die in allen Sound datein vorhanden waren wurden dann verwendet. Hat auch soweit funktioniert, aber als ich es getestet habe, hat leider nichts funktioniert. Sollte man vielleicht einen anderen Ansatz nehmen? Oder die Byte Arrays nicht nach Gleichen Stellen durchsuchen, sondern versuchen "Bereiche" der Byte Arrays zu definieren?

Danke im Voraus für die Hilfe

BigJ
 

Thallius

Top Contributor
Dieser Ansatz funktioniert sicher nicht. Entweder du machst es so tolerant, dass es später die einzelnen Wörter nicht unterscheiden kann oder du machst es so strickt das es geht, dafür aber jede Änderung an der Stimmfarbe zu einem nicht erkennen führt.

So eine Software selber zu schreiben halte ich schlichtweg für unmöglich. Ich weiß nicht wie Siri und Co das machen aber alleine das dort riesige Datenbanken und Serversystem hinter stehen macht klar, dass der Aufwand für eine Person nicht machbar ist. Ich denke diese Systeme arbeiten mit der Analyse von Schwingungen, also Fourier-Transformationen etc.

Ich würde sagen Dein Projekt kannst du getrost einstampfen ;)

Gruß

Claus
 
K

kneitzel

Gast
Der Vergleich auf Byteebene dürfte ja schon dadurch unmöglich sein, dass selbst kleinste Geschwindigkeits-Unterschiede ausreichen. Mit welcher Samplingrate wird die Stimme aufgenommen? Das sind ja KBit/s! Also kleinste Abweichungen im Millisekundenbereich sorgen für komplett andere Werte. Also z.B. ein "i" wird da niemals gleich sein von der Länge. Dann der Stimmverlauf inkl. Nebengeräusche.

Das Thema ist also hoch komplex. Da wird man niemals mal eben so einen Algorithmus schreiben können. Die Aussage, dass dies ein Einzelner nicht schreiben kann, würde ich dabei nicht unbedingt unterschreiben. Aber es bedarf auf jedem Fall einer sehr umfangreichen Recherche und einem tiefen Studium der einzelnen Materien. (Also wirklich weit jenseits eines Forums-Threads!).

Und ich würde da nie "allgemein" herangehen. Alleine schon der Ansatz ist komplett irreführend! Die Sourcen, die verglichen werden sollen, müssen halt genau im Detail betrachtet werden. Und die Möglichkeiten, relevantes von irrelevantem zu unterscheiden ist halt je nach Quelle unterschiedlich. Also Bilddaten werden garantiert anders behandelt als Sounddaten. Und eine Stimmerkennung wird durchaus von einer Musikerkennung abweichen. (Beim ersteren wird man Informationen generalisieren um einen erkennbaren Sprachverlauf zu erkennen und bei der Musikerkennung wird man mehr Details im Bereich der Oberschwingungen und so benötigen, damit man Instrumente erkennen kann.)
 

Thallius

Top Contributor
Das Thema ist also hoch komplex. Da wird man niemals mal eben so einen Algorithmus schreiben können. Die Aussage, dass dies ein Einzelner nicht schreiben kann, würde ich dabei nicht unbedingt unterschreiben.

Ich meinte alleine auch im Sinne von "Ohne große Firma die dahinter steht und dich mit der entsprechenden Hardware und der dafür notwendigen IT-Abteilung unterstützt". Das der Algorythmus als selber von einer Person zu schreiben ist klar, aber die Umsetzung so das es zu einer Funktionierenden Software wird ist solo nicht zu bewerkstellingen.

Gruß

Claus
 
K

kneitzel

Gast
Hier wäre dann die Frage, was der Sinn hinter allem ist:
- die "wissenschaftliche" Erforschung - da kann man dann gerne herum spielen und mit entsprechender Recherche versuchen, in die Thematik hinein zu kommen. Und hier kann es dann helfen, sich mit vorhandenen Libraries und Produkten auseinander zu setzen.
- die Erstellung eines Produktes. Hier würde ich generell schauen, was er schon alles gibt und unter welchen Bedingungen diese nutzbar sind. Das ist meist deutlich besser, als selbst irgendetwas halbherzig zu implementieren. Das mag zwar "irgendwie funktionieren", aber Benutzer werden immer zu den Produkten greifen, die gut funktionieren. Und sorry - wie will man gegen Google, Apple und Microsoft antreten? Als einzelne Person? Ohne Ahnung von der Materie? Sorry, aber das wird hoffentlich niemand wirklich vorhaben.

Und egal, was man vorhat. Es gibt im Netz sehr viele Dinge diesbezüglich:
a) Sphinx-4 ist Open Source und scheint ein großes Projekt zu sein. Unter Anderem gibt es da auch Wissenschaftliche Artikel, was es sehr interessant machen könnte wenn man in ersterem unterwegs ist. (z.B. http://dl.acm.org/citation.cfm?id=1698193 - kostet aber Geld)

b) Java Speech API ist auch recht interessant. Da steckt wohl auch die TU Darmstadt mit hinter / drin und ist JSR 113.

c) Ich habe jetzt nicht im Detail recherchiert, was Google, Apple und Microsoft so anbieten. Aber evtl. bieten die auch Zugriff / Libraries für Ihre Spracherkennung an. Bei Apple erwarte ich sowas ehrlich gesagt weniger, aber bei Google und erst Recht bei Microsoft würde mich das nicht wundern. (Gerade Microsoft ist ja sehr auf einem Open Source Trip und Microsoft ist hier in der Rolle des Newscommers, der irgendwie dringend aufholen muss. Und Microsoft war bisher immer sehr Entwickler-freundlich. Aber eine Java API wird eher fehlen, so dass man hier ggf. (so es Libraries gibt) noch per JNI nachlegen müsste.

Also Recherchen könnten sich hier sehr lohnen.
 

Ähnliche Java Themen

Neue Themen


Oben