Hi,
ich brauche eine simple Spracherkennung die in Software gemacht ist.
Je weniger Prozessorlast um so besser.
Auch wenn da wohl kein AVRtiny reicht, sollte es auch nicht gleich ein
RPI4 sein den man braucht.
Ich habe aktuell noch einen ESP der sich langweilt, und das wollte ich
gerne ändern. Ob der am Ende reicht wird man ja schnell feststellen.
So ich will NUR 80-300 Worte erkennen und diese dann weiter verarbeiten.
Also "Licht", "Motor", "an", "aus", "auf","zu",.....
Ich habe zwar einiges gefunden aber alles war dann viel zu Fett oder in
Sprachen die mehr zum PC passen.
Hardware habe ich auch gefunden aber das wollte ich ja nicht.
Karl schrieb:> ich brauche eine simple Spracherkennung die in Software gemacht ist.> Je weniger Prozessorlast um so besser.
Wenn es rein offline sein soll kenne ich nur dieses System.
https://www.audeme.com/movi.html
Leider nicht sehr günstig aber dafür wenigstens sicher vor der pösen
Jungs. ;)
Karl schrieb:> Ich habe aktuell noch einen ESP
Welchen auch immer, wohl nicht 32.
Also auf dem Stand der Mikroprozessoren von 1980.
Dann musst du auch so alte Lösungen nehmen.
300 Worte werden das eher nicht.
ESP8266 wobei ich die ESP32 hätte.
Über das MOVI™ Arduino Shield stolpert man ja überall, nur das ist nicht
das was ich suche. Ansonsten hätte ich das schon besort und hier nicht
gefragt.
Die UNI ist schon einige Jahre her, das ganze ist da auch mehr privater
natur. Bei mir an der Arbeit kann man so was nicht mal ansatzweise
gebrauchen. Ich will auch kein ALEXA Ersatz oder so ähnlich bauen.
Karl schrieb:> ber das MOVI™ Arduino Shield stolpert man ja überall,
Ich leider nicht. Ich habe fast 6 Monate gebraucht um es zu finden. Und
meine Bekannte kannten es auch nicht, bis ich es ihnen sagte.
Davon abgesehen ist Spracherkennung so aufwendig das man da ein bisschen
mehr braucht als ein lausigen Arduino / bzw. ESP. Das kannst du ergo
ohne Hilfsprozessor gleich vergessen.
Was wohl der Grund ist, warum die bei den Movi ein drauf gemacht haben.
Was du aber mit ein Arduino machen kannst ist ihn Morsebefehle zu geben.
Also Langer Ton = Befehls modus. Dann kurz + Lang analysieren und dann
den Befehl ausführen wenn wieder ein langer Ton kommt. ;) In ähnlicher
Form wie ein Klatschschalter aus den Baukasten meiner Jugend.
Nur so als Beispiel für geht nicht auf einem kleinen Prozessor:
TrulyHandsfree läuft auf einem M4.
Den Code dazu wäre super, aber das wäre ja auch zu schön.
Karl schrieb:> So ich will NUR 80-300 Worte erkennen> und diese dann weiter verarbeiten.> Also "Licht", "Motor", "an", "aus", "auf","zu",.....
Sowas läuft unter "Stichworterkenner". Dazu braucht man nicht allzuviel
Prozessorleistung, und wenn man sich auf wenig Wörter beschränkt, dann
könnte die Genauigkeit ausreichen.
Im Endeffekt läuft das auf klassische Signalverarbeitung, gefolgt von
Sprachverarbeitung raus. Frühe IBM- und Microsoft-Spracherkennung lief
auf 486ern mit ein paar MB RAM, drunter wird's bei dir eher nichts.
Macht man heutzutage nicht mehr, weil KI-Systeme schlicht besser sind,
wenn man sie ordentlich trainiert. Mein unbegründetes Gefühl sagt, dass
man mit vergleichbarer Rechenleistung auch Inferenz auf einem kleinen
neuronalen Netz fahren kann und bessere Ergebnisse bekommt - der Aufwand
liegt im Training.
S. R. schrieb:> KI-Systeme
Suchtipp: Sipeed Maix dock
Oder einer seiner K210 Brüder
Mikrofon
FFT
Neuronales Netz
Für wenige Dutzend Euronen
KA, ob das für den Zweck reicht...
:-)
Aber immerhin mit der Arduino IDE nutzbar
:-)
Hast Du für einen "Stichworterkenner" eine gute Quelle?
Was man heute macht oder nicht ist mir egal, Haupsache ich kann die paar
Wörter recht sicher erkennen.
Die alte Technik muss nicht schlechter sein, sie ist halt nur nicht was
mit KI. Ich muss die Wöter ja nicht wirklich verstehen und anhand vom
Kontext reagieren.
Sagen wir mal wir würden einen STM32F4 oder besser einen H7 nehmen.
Die DSP Einheit macht eine FFT recht flott.
Auch andere Filter sind für den kein Problem.
Und ein kleines Neuronales Netz sollte der auch packen.
Aber das fehlt mir und die Daten dazu auch.
Anmelden? Ja das könnte ich machen, aber wird mir das dann helfen?
Karl schrieb:> Hast Du für einen "Stichworterkenner" eine gute Quelle?
Ich hätte während meines Studiums ein längeres Projekt haben können, wo
ich einen ebensolchen auf Basis klassischer Signalverarbeitung
entwickeln sollte. Habe das Projekt dann aber nicht durchgeführt. Nein,
fertigen Code habe ich nicht.
Stichwörter, um sowas selbst zu machen, sind "Cepstrum", "Quefrenz",
"MFCC" (Mel Frequency Cepstral Coefficients) und so.
Die Idee der Spracherzeugung ist recht einfach: Ein Anregungssignal
(stimmhaft = Impulszug, stimmlos = weißes Rauschen) wird durch ein
lineares Filter (Rachen, Mund, Nase; z.B. als Röhrenmodell mit 2x7
Parametern abgebildet) geschoben (gefaltet) und ergibt das fertige
Audiosignal. Das kann ein C64.
Was du willst ist, aus dem Tonsignal die (bekannte) Anregung zu
entfernen (via Cepstralanalyse - recht einfach) und aus dem Rest dann
die Filterkonfiguration für einen gewissen Zeitraum (gefenstert, z.B.
überlappende 10ms-Blöcke) zu ermitteln. Die Filterkonfiguration
entspricht dem aktuellen Phonem, und aus der Phonemfolge bastelt man
sich dann die Wörter und Sätze zusammen.
Um das korrekt zu machen, braucht man übrigens auch einiges an Training,
wenn auch wesentlich weniger als bei NNs.
Wenn du es nicht selbst entwickeln willst, dann schau dich bei den
gegebenen Beispielen um.
Karl schrieb:> Die alte Technik muss nicht schlechter sein,> sie ist halt nur nicht was mit KI.
Nun, sie ist für breite Anwendungsfelder nachweislich schlechter.
Deswegen nutzt man ja alternative Ansätze.
Karl schrieb:> Ich muss die Wöter ja nicht wirklich verstehen und anhand vom> Kontext reagieren.
Die Wörter "erkennen" ist Signalverarbeitung, die Wörter "verstehen" ist
Sprachverarbeitung. Beides wirst du brauchen, auch wenn es nur ein
rudimentäres "wenn >Licht an< führe Funktion LichtAn() aus" ist.
Karl schrieb:> Anmelden? Ja das könnte ich machen, aber wird mir das dann helfen?
Ohne Anmeldung keine PMs. Simpelste Logik.
Cool ja, nur ist noch nichts greifbares rausgekommen. Warte auch
gespannt auf ein Ergebnis (Code).
Also wenn ich das richtig verstehe dann wird der Ton über eine
Cepstralanalyse rein geholt und dann könnte man diese Daten einem nn als
Futter geben oder über die Phonemfolge und einer Tabelle die Wörter
erkennen.
Klingt für mich nach machbar für einen m4.
Nur ich bin der falsche Mann dafür, weil ich damit noch nie was zu tun
hatte. Aber Interesse habe ich schon, weil mir da ein paar Projekte
einfallen die man damit machen könnte.
Peter schrieb:> Cool ja, nur ist noch nichts greifbares rausgekommen.> Warte auch gespannt auf ein Ergebnis (Code).
Von mir wird keiner kommen. Kauft euch für ein paar Euronen ein
Arduino-Shield mit einem GHz-SoC, der kann das auch.
Peter schrieb:> Also wenn ich das richtig verstehe dann wird der Ton> über eine Cepstralanalyse rein geholt
Nö, kommt aus einem ADC-Wandler hinter einem Mikrofon.
> und dann könnte man diese Daten einem nn als Futter geben
Wenn du da ein NN draufschmeißen willst, dann kannst du das auch mit den
Audiosamples direkt machen. Spart Rechnerei.
> oder über die Phonemfolge und einer> Tabelle die Wörter erkennen.
Erstmal die Phonemfolge erkennen... du willst aus einem logarithmierten
und fouriertransformierten Signal den siebenstufigen Filter
rekonstruieren, der das originale Signal mal erzeugt hat, unter Annahme
einer bestimmten Anregung. Stichwort dafür ist "Hidden-Markov-Modell",
das sind statistische Verfahren. ("Hidden", weil du den Filterzustand
nicht kennst.)
Na super, nix mit einfach. Schade das ich das zwar gebrauchen könnte
aber nicht in der Lage bin es selbst zu machen.
Wünschet ich könnte es, dann viel Glück dabei.
Ist jetzt auch wieder lächerlich...wenn überhaupt, dann macht man das
über Neuronale-Netze. Die Programmierung und die Umsetzung sind dann
noch zwei Paar Schuhe! Für Beides scheint beim TO kein Verständniss
vorhanden zu sein. Also warten wir ab!!
Gruß Rainer
Im Prinzip ganz einfach. Arm Cortex + schnelle Speicheranbindung, etwas
Signalverarbeitung aus dem dritten Semester und gute
C/Assembler-Kentnisse.
Schönes WE-Projekt, viel Erfolg.
Der alte Philips C-Netz Tornister mit Spracherkennung für die Ziffern
0-9, 'Auflegen' und 'Wählen' hatte das mit einem 25Mhz TMS32C025 DSP,
32kB ROM, 32kB RAM und etwas schnellem Dualport RAM zur Kommunikation
mit der Ablaufsteuerung gelöst.
Die ROMs sind allerdings schon lange bei den Engelein und den Rest der
Hardware habe ich auch zerlegt...
Also ich arbeite meistens mit dem stm32f4..
Und gelegentlich auch noch mit einem 8052 & avr.
Der TO Arbeitet anscheinend mit den esp8266, an diese habe ich mich noch
nicht getraut.
Wie auch immer ich habe hier von keine Ahnung und kann es nur
gebrauchen.
Der Unwissende schrieb:> Ich bin mal über das Projekt Snips gestolpert, braucht aber einen RasPi.> Die Webseite dazu ist makers.snips.ai.
Snips wurde von Sonos gekauft und ist seitdem für andere leider nicht
mehr verfügbar
Da Snips wohl ein Schuss in den Ofen war habe ich etwas gewühlt und bin
auf Rhasspy gestoßen was auch Interessant zu sein scheint. Allerdings
finde ich spontan keinen Hinweis die Software auf einem ESP32 laufen zu
lassen.
Nach erstem überfliegen von https://rhasspy.readthedocs.io/en/latest/
macht es auch mich neugierig auf eine eigene Installation um den einen
oder anderen ESP8266 (mit Tasmota) im lokalen Netz per Sprache zu
bedienen.
duck&wech schrieb:> Auf einem ATtiny oder an was für einen µC hast du gedacht?
Könnte auch mit einem Tiny gehen. Indem man diesen per Bluetooth ans
Handy koppelt und das Handy an Google. Fertig. ;-)
Danke das Ihr euch so einbringt und wie es aussieht bin ich nicht der
einzige der so was braucht.
Einige Antworten helfen bei der Suche, Andere nunja ist ein offenes
Forum.
Ich wollte eigentlich die Erkennung ungerne selber komplett schreiben,
da kann es zuschnell passieren das ich in einer Sackgasse lande. Ich
erwarte jetzt auch nicht das sich jemand hin setzt und das mal nur aus
spaß für mich schreibt.
Ich werde mich die nächsten Wochen dran machen und mal sehen was geht
und was nicht.
Ich gehe davon aus das nach den Einlesen der Audio Daten (MONO 8-10KHz)
man diese über dieses Cepstrum Filtersystem am besten klein bekommt.
Die Original Daten auf ein NN zu geben mag auf einem PC gehen, aber auf
einen Kontroler wird es eng. Diese reduzierten Daten müssen dann auf ein
kleines NN los gelassen werden. Da habe ich irgentwo noch ein paar
kleine Systeme die recht handlich waren. Vielleicht geht aber auch eine
einfache Reihenfolgenauswertung, wobei ich hier mehr Probleme erwarte.
Aber die wäre schneller wenn sie den läuf.
Wie gesagt ist jetzt erstmal ansehen der ganzen Informationen angesagt
und dann vorsichtig ran tasten. Wird dauern, habe ja noch andere Sachen
zu tun.