Forum: Mikrocontroller und Digitale Elektronik Tonerkennung


von Michael N. (garril)


Lesenswert?

Hallo,

ich möchte einen Atmel AVR per Sprache steuern.
Es geht mir nur um ca. 3 bis 5 Kommandos, deshalb muss das nicht 
großartig genau funktionieren.

Habe schon von einem Bausatz bei Conrad gelesen, aber der kostet ca. 50€ 
was ich für meine Zwecke nicht ausgeben wollte.

Wie könnte ich soetwas möglichst günstig umsetzen?

Vielen Dank im vorraus.

von MaWin (Gast)


Lesenswert?

> Wie könnte ich soetwas möglichst günstig umsetzen?

Gebrauchtes veraltetes Handy welches bereits eine Sprachwahl erlaubt 
anschliessen.

Denn alles was einfacher ist ist Murks.


Primitive Software zählt Nulldurchgänge der Mikrophonspannung und leitet 
daraus das gesprochene Wort ab. Du kannst dir vorstellen, wie oft das 
danebenhaut.

von Ich (Gast)


Lesenswert?

Ich glaube er meinte eine Tonerkennung ala 1 kHz Sinus und nicht das
Wort "Ton".

von hp-freund (Gast)


Lesenswert?


von hans (Gast)


Lesenswert?


von Michael N. (garril)


Lesenswert?

Habe wohl etwas zu wenig verraten:

Der Mikrocontroller soll zB die Wörter "An", "Links" und "Rechts" 
erkennen.
Alternativ wäre es für mich auch ok, wenn er bestimmte Töne erkennt 
(kennt man ja von diesen Adaptern, die angehen wenn man klatscht).

Eine "Worterkennung" (mehr als 5 Wörter muss er wirklich nicht können) 
wäre natürlich am schönsten.

@hans: Das wäre wohl passend. Ist aber laut Beschreibung nur für PICs 
nutzbar

@hp-freund: Sehr informativ. Alledings habe ich leider keine Mathematik 
studiert...

Wenn ich jetzt nen Mikro per ADC auslese, könnte das ja schon reichen um 
ein Wort zu erkennen?!
Nur die Frage ist eben wie sich dann zB das Wort "links" und das Wort 
"rechts" unterscheiden...

Oder eben wie die Adapter mit:
einmal klatschen=links
zweimal klatschen=rechts

Aber mit Wörtern wär das schon klasse...

von Samuel (Gast)


Lesenswert?

Du kannst ja auch Morsezeichen pfeifen und decodieren.

von hp-freund (Gast)


Lesenswert?

@ Michael N.

Brauchst auch nicht extra studieren. Der Codevision Quellcode für den 
ATMega32 ist dabei :-)

von holger (Gast)


Lesenswert?

>Wenn ich jetzt nen Mikro per ADC auslese, könnte das ja schon reichen um
>ein Wort zu erkennen?!

Tut es aber nicht. Da fehlt noch einiges an Software dahinter.

Vergiss den Quatsch.

von Oliver J. (skriptkiddy)


Lesenswert?

Schnapp dir ein Embedded Linux board und lass HTK drauf laufen.


Gruß Skriptkiddy

von Michael N. (garril)


Lesenswert?

Ich kann 5 verschiedene Pfeiftöne und würde 8mal pfeifen pro Kommando 
--> das gibt 390625 verschieden Kommandos.
Ist also schon wesentlich mehr als ich bräuchte :)
Ne Spaß beiseite. Pfeifen kann ich seitdem ich eine Spange hab 
nixmehr...
Mit der Lösung wird das also nix^^

@hp-freund: Ah stimmt habs eben auch gefunden. Ist mir für so spät in 
der Nacht aber etwas zu viel englisch. Das guck ich morgen mal durch.
Aber das scheint ja wirklich nicht so einfach zu sein. Jedes der Wörter 
hat er am Anfang 4000mal gesagt^^ Wenn man an den kompletten Code kommt 
sag ich lieber auch "left" und "right" statt den deutschen Befehlen.

Ist allerdings fraglich ob ich das hinbekomme, da ich soetwas komplexes 
noch nie gemacht habe :(

von ?? (Gast)


Lesenswert?

Das Conrad ding gab es auch mal beim Pollin für 9 €.
Das beste an dem Teil war "Erst TASTE Drücken dan Warten bis das ding 
gesagt hat "say a word." dan sagte man das wort und mit bischen glück 
hat es das Ding auch kpiert".

von Michael N. (garril)


Lesenswert?

@skriptkiddy:
Würde das ganze schon am liebsten per Mikrocontroller lösen.
Mit HTK für Linux wäre es wahrscheinlich ganz gut machbar, allerdings 
wäre es mir das Linux nicht wert (nicht falsch verstehen, aber wenn das 
mitm Mikrocontroller läuft möchte ich das womöglich mehrmals in 
ähnlicher Ausführung bauen. Und da möchte ich nicht immer ein 
Linux-Board benötigen)

@??:
Also vorher möchte ich eigentlich keine Taste drücken.

Das soll so ein riesiges Spiel werden (Tetris, Ping Pong, oder sowas), 
welches man eben per Sprache steuern können soll.

von Horst vom Dach (Gast)


Lesenswert?

Ich hab sowas ähnliches vor gefühlten 100 Jahren mit der Fourier-Analyse 
gemacht. Aber vielleicht ist das gar nicht mehr Stand der Technik und es 
gibt schon was besseres.

von Dieter (Gast)


Lesenswert?

Braucht es da nicht eine zweidimensionale Analyse, also den 
Fourrierverlauf über die Zeit?

von Hans M. (hansilein)


Lesenswert?


von Oliver J. (skriptkiddy)


Lesenswert?

Vegiss nicht, dass sich alle Menschen anders anhören und vor allem ist 
jedes Sprachsample anders, auch wenn das vom selben Sprecher stammt und 
die selben Worte wiedergibt. Hidden Markov Modelle sind State of the Art 
und das Mittel der Wahl für Sracherkennung. Auf nem AVR wirst du aber 
sicher damit nicht losgehen können. Schafft er sicher nicht. Und wenn du 
das wirklich als Bare-Metal-App realisieren willst, dann brauchst du 
sicher richtig Ahnung vorn der Materie der Spracherkennung. Ein 
Kommilitone hat mit ATK (nen Framework für HTK) und ner gehörten 
Vorlesung zu Spracherkennung ca. nen Monat gebraucht bis er das erste 
Erfolgserlebnis hatte. Also stell dir das mal nicht so einfach vor.


Gruß Skriptkiddy.

von Marek N. (Gast)


Lesenswert?


von Julian R. (tuefftler)


Lesenswert?

Ich weiß ja nicht wie gut du mit Elektronik vertraut bist, aber so 
funzts sicher nicht:

GND ---- MIC ---- µC-Pin -> ADC

Da wirst du noch eine kleine Verstärkerschaltung brauchen!

julian

von Oliver J. (skriptkiddy)


Lesenswert?

Marek N. schrieb:
> Wie wärs mit sowas:
> http://hackedgadgets.com/2011/08/27/vowel-voice-de...

"We have 5 vowels in our database" <genannt im Video>

Die können also 5 ganze Vokale damit erkennen. Und "AH" zu erkennen hat 
zwei Versuche gebraucht. Wow.

Mit rechts, links,[...] wirds damit also nichts.

Gruß Skriptkiddy

von Auu (Gast)


Lesenswert?

Michael N. schrieb:
> Das soll so ein riesiges Spiel werden (Tetris, Ping Pong, oder sowas),
> welches man eben per Sprache steuern können soll.

Also lustig wird auf jeden fall wenn du's mit Vokalen steuerst:
"AAAOOOUUAAIAEEE" - "Hast du dir wegetan?"

von holger (Gast)


Lesenswert?

>Würde das ganze schon am liebsten per Mikrocontroller lösen.

So, für die Volldeppen: Wie lange brauchst du um ein
"Links" zu sampeln? Sagen wir eine Sekunde. Samplerate 4kHz.
Bei 8 Bit pro Sample bedeutet das 4kB RAM. Deine Spracherkennung
mit AVR kannst du dir sonst wohin stecken. Es geht nicht.

>(nicht falsch verstehen, aber wenn das
>mitm Mikrocontroller läuft möchte ich das womöglich mehrmals in
>ähnlicher Ausführung bauen. Und da möchte ich nicht immer ein
>Linux-Board benötigen)

Das wirst du aber brauchen. Und nur mal so am Rande:
Weder Linux noch Windows haben eine Spracherkennnung.
Wenn es also ganz einfach wäre, warum ist das noch nicht
realisiert in den gängigen Distributionen?

von Oliver J. (skriptkiddy)


Lesenswert?

holger schrieb:
> warum ist das noch nicht
> realisiert in den gängigen Distributionen?

Windows hat so etwas - allerdings ist das so universell ausgelegt, dass 
es nicht reproduzierbar funktioniert.

holger schrieb:
> Wenn es also ganz einfach wäre, warum ist das noch nicht
> realisiert in den gängigen Distributionen?
HTK und ATK sind nicht unter GPL.

PS.
Mäßige doch mal bitte in Zukunft deinen Ton. ;)


Gruß Skriptkiddy

von holger (Gast)


Lesenswert?

>Mäßige doch mal bitte in Zukunft deinen Ton. ;)

Warum soll man den Leuten nicht deutlich sagen dass sie
voll daneben liegen? Warum lange dummes Zeug rumlabern?

von Oliver J. (skriptkiddy)


Lesenswert?

holger schrieb:
>>Mäßige doch mal bitte in Zukunft deinen Ton. ;)
>
> Warum soll man den Leuten nicht deutlich sagen dass sie
> voll daneben liegen? Warum lange dummes Zeug rumlabern?

Ganz einfach. Es ist nicht fair gegenüber Leuten, die nicht soviel 
Ahnung haben wie du. Man kann auch durch Argumente Überzeugen und muss 
nicht runterputzen. Ich würde auch nicht so behandelt werden wollen. Du 
etwa?

Schon Konfuzius sagte: "Was du nicht willst, das man dir tu, das füge 
auch keinem Anderen zu. Und der Mann hatte recht. Findest du nicht?

holger schrieb:
> Warum lange dummes Zeug rumlabern?
Willst du damit sagen meine Kommentare wären Bullshit?

Gruß Skriptkiddy

von Dennis G. (stampfkartoffel)


Lesenswert?

holger schrieb:

> Weder Linux noch Windows haben eine Spracherkennnung.
> Wenn es also ganz einfach wäre, warum ist das noch nicht
> realisiert in den gängigen Distributionen?
Windows hat das schon:
http://www.youtube.com/watch?v=-0kDcUEDfmY

von Michael N. (garril)


Lesenswert?

Also in Windows funktioniert die Spracherkennung doch wirklich gut. Mit 
Linux habe ich da allerdings keine Erfahrung.
Mein Blackberry zB beherrscht das auch super.
Wäre mal interessant wie das bei dieser Musik-Erkennungs-App 
funktioniert (gibts ja für Android, IPhone und sonstwas alles)

Aus den Wörtern links und rechts könnte man sich ja überlegen ob man nur 
versucht "li" und "re" zu erkennen.

Mir ist bewusst, dass das ganze nicht so einfach ist. Allerdings wird es 
doch wohl möglich sein 2 verschiedene Worte auseinanderzuhalten. (ist ja 
kein Problem wenn das Ding "rechts" erkennt obwohl ich "Fenster" gesagt 
habe. So genau muss es ja nicht sein)

Ich denke das beste dürfte wirklich der fertige Code für das 
Ferngesteuerte Auto sein. Werde mir den Code mal anschauen. Dürfte sich 
ja passend umbauen lassen.

Als Alternative bleibt mir nur (falls es nicht klappt) der Bau einer 
Fernsteuerung. (bzw. die Nutzung einer schon bestehenden FB)

Was mir dazu auch noch einfällt wäre ein Nintendo DS. Er erkennt auch ob 
man ins Mikro bläst oder nicht. Ich habe das mal mit Störgeräuschen 
getestet und das Ding erkennt tatsächlich nur das richtige blasen.

von Oliver J. (skriptkiddy)


Lesenswert?

Michael N. schrieb:
> Aus den Wörtern links und rechts könnte man sich ja überlegen ob man nur
> versucht "li" und "re" zu erkennen.

Wenn du dich mit deinem Vorhaben mal nicht übernimmst. Aber wie heißt es 
so schön: "Versuch macht kluch".


Gruß Skriptkiddy

von S. T. (cmdrkeen)


Lesenswert?

Ich finde auch, dass man Leute nicht davon abhalten sollte sich an 
Themen heranzuwagen, die schon auf den ersten Blick, eigentlich zu Hoch 
für sie scheinen.

Ich glaube auch es sind jetzt schon genug Informationen hier 
zusammengetragen um loszulegen dieses Thema zu studieren:

Mikro + Verstärkerschaltung
AD-Wandlung und Speicherung (SD-RAM vielleicht)
und nu kommt der Part der schwierig wird:
FFT oder die Fast Walsh Transformation (wie im Vowel recognition 
Artikel)


die Dame in dem Artikel musste zum Samplen noch eine Taste drücken (da 
lag bestimmt auch ihr Problem mit dem ersten Versuch)... das könnte man 
ja durch eine extra schaltung erledigen.

Und es muss ja nicht immer auf einem µC laufen ... man kann das Problem 
ja auch auf mehrere aufteilen.


und hier folgt nur leider auch die Ansage für den Threadersteller...
Das alles musst du selbst lernen, erarbeiten und herstellen.

wenn das alles zuviel ist ... muss man die Problemstellung überdenken: 
da ist dann die Frage ob es um Sprach oder Akkustik-Steuerung geht.
Ob Geräusche da sind oder nicht lässt sich viel einfacher feststellen. 
und zwischen "go go" und "stop"  besteht auch eine gute 
Unterscheidungsmöglichkeit.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.