- LiFePO4 Speicher Test         
Ergebnis 1 bis 10 von 25

Thema: Stimmen unterscheiden

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    19.01.2016
    Ort
    Saarbrücken
    Beiträge
    397
    So viel Material und so wenig Zeit ^^

    @HaWe ich habe auch schon gelesen, dass man ein geglättetes Kurzzeitspektrum mit FFT filtern kann, mit welchem man dann auch eine Distanzmessung anwenden kann. Käme der Geschichte ja entgegen.

  2. #2
    Erfahrener Benutzer Roboter Genie Avatar von BMS
    Registriert seit
    21.06.2006
    Ort
    TT,KA
    Alter
    34
    Beiträge
    1.192
    Meine Hochachtung hast du wenn du das hinbekommst , ich denke dass Spracherkennung mit allem was dazu gehört ein außergewöhnlich anspruchsvolles Gebiet ist. Viel Erfolg.
    Grüße, Bernhard
    "Im Leben geht es nicht darum, gute Karten zu haben, sondern auch mit einem schlechten Blatt gut zu spielen." R.L. Stevenson

  3. #3
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    19.01.2016
    Ort
    Saarbrücken
    Beiträge
    397
    Als ich die Idee hatte mit einem Bot, was mittlerweile eigentlich schon aufgespalten ist auf Bot und KI, haben in Allen Foren Alle gesagt, vergiss es das können nur Raketentechniker mit Quantum-Abitur. So mehr oder minder.

    Aber ganz ehrlich? Es gibt echt für jeden Scheiss mittlerweile irgendwo eine API. Für Gesichtserkennung usw. OpenCV, wo auch ein neuronales Netz mit realisiert werden kann, aber da bin ich immer noch blutiger Anfänger (@HaWe ^^), Spracherkennung macht PocketShinx usw. Ich denke es ist nicht so sehr das Wissen wie etwas funktioniert. Das Wissen habe Andere schon umgesetzt. Es ist mehr die Phantasie, das Alles dann auch so zusammen zu stricken das am Ende ein Pulli bei raus kommt.

    Wenn ich es hin kriege, dann nehme ich deine Hochachtung gerne an und gebe sie auch an entsprechende Leute weiter!

    Wenn nicht, dann kann ich wenigstens sagen ich habs versucht ^^

  4. #4
    HaWe
    Gast
    Zum NN: das ist kein Hexenwerk.
    Die FFT liefert bei Schwebungen /Tönen / Geräuschen ja Spikes, die den Grundfrequenzen entsprechen (0 bis zur Nyquist Frequenz).
    Für Stimmenklang bei gesprochenen Wörtern sind wie bereits erwähnt die tiefen Frequenzen sicher weniger entscheidend (- oder doch? - müsste man vorab testen!), sodass man sich auf die Spikes der höheren oder zumindest weniger typischer Frequenzen konzentrieren kann (das sei jetzt mal so dahin gestellt), das sind dann sicher nicht mehr so schrecklich viele.
    Die Verteilung der Spikes lässt sich als Input-Signal isolierter, diskreter digitaler Sensoren betrachten, und die können in ein neuronales Netz eingespeist werden.
    Datenbank für den Vergleich ("alle mit allen") sind sämtliche gesprochene bekannte Wörter von allen Probanden.

    Angenommen, du betrachtest die 100 höchsten (oder "wichtigsten") Frequenzspikes bis zur Nyquist Frequenz, dann hast du 100 Inputs für Input-Neuronen.
    Angenommen, du hast 6 Personen, die erkannt werden sollen, dann hast du 6 Output-Neuronen.
    Jede Person hat dabei sicher ein paar aussergewöhnliche FFT-Spike-Kombinationen, die trainiert werden können.
    Da nicht auszuschließen ist, dass auch XOR-Kombination auftreten, scheidet ein Feed-Forward-Netz aus und man braucht daher mehrschichtige Netze.
    Rückkopplung ist nicht notwendig, da nicht auf zeitlichen Kontext geachtet werden muss.
    Also reicht ein normales Backpropagation-Netz aus Sensor-Schicht (100) , verdeckter Schicht (30-40, schätze ich, müssten reichen) und Ausgangs-Schicht (6).

    Das in dieser Komplexität zu trainieren habe ich bereits mit einem Arduino Due geschafft - das einzige "Problem" ist der extreme Zeitaufwand, der Wochen oder Monate dauern kann.
    Wenn du hier eine Automatisierung einprogrammieren kannst (bei ausreichendem *.wav Basis-Sound-Material), lässt du das Teil einfach ein paar Wochen lang Tag und nach durchlaufen, fertig.
    Hier wird einfach ständig wiederholt:
    a) ein .wav Sound eines bekannten Probanden wird randomisiert ausgewählt, die FFT erzeugt, dann die höheren Frequenzspikes ins NN eingespeist und dann das Netz aktiviert.
    b) Der Netz-Output wird kontrolliert und solange das Netz im Lernmodus moduliert, bis Ist-Output mit Soll-Output (der bekannten aktuellen Person) übereinstimmt.
    c) Dann kommt der nächste Zufalls-Sound dran.
    d) Dann schließlich wird mit "Life-Sounds" getestet und trainiert
    e) Das Lernen ist erledigt, wenn die Erkennungsrate z.B. bei den letzten 200 Sounds unterhalb einer selbst gewählten, akzeptablen Fehlergrenze liegt (z.B. 0,01 == 1%)

    - das war's.


    Prinzipiell ist auf diese Weise auch ein NN mit den Wörtern / Wortbedeutungen selber zu füttern, aber dann wächst die Netz-Komplexität ins exponentielle:
    Du musst dann ALLE Spikes einspeisen (z.B. 4000), und hast 2 Outputbereiche,
    Bereich 1: 1-6 für die Person und
    Bereich 2: 7-wasweissich für die Anzahl der trainierbaren Wörter (z.B. 50).
    Auch die Verdeckte Schicht ("Hidden Layer") wächst dann proportional zur Input-Schicht ("Sensor-Layer").

    Sätze sind dann aber immer noch nicht möglich, dafür werden erneut weitere Module erforderlich.

    Das macht zunächst eine Syntax-Analyse, z.B. per P-Marker:
    S - Satz,
    NP - Nominalphrase,
    VP - Verbalphrase,
    ART – Artikel,
    N - Nomen,
    V -Verb
    (Konjunktionen, Präpositionen, Pronomen, Attribute u.a.m. hier noch ganz außen vor!)

    z.B.:
    "Hannah jagt die Katze "

    [ S [NP [N Hannah ] ] [VP [V jagt] [NP [ART die] [N Katze] ] ] ]

    und daraus wird dann die "Bedeutung" generiert, wozu zunächst dann die Kasusmarkierung erforderlich ist (wer jagt wen?), was hier nicht ganz trivial ist (denn beide Nomen könnten theoretisch hier sowohl im Nominativ als auch im Akkusativ stehen, d.h. Subjekt oder Objekt sein, für Hannah kämen auch zusätzlich Dativ und Vokativ in Frage, Dativ fällt allerdings raus, weil "jagt" eine konjugierte Form von "jagen" ist, welches transitiv ist), daher kommt hier auch eine Satzstellungsanalyse zum Tragen.


    Der nächste Gesichtspunkt wäre ggf. Verb-Konjugation ( "Hannah jagt die Katze" versus "Hannah jagte die Katze") sowie Informations-Ebene versus Appell-Ebene ("Hannah jagt die Katze" versus "Hannah jage die Katze") -
    .... was jetzt aber schon extrem ins Gebiet der Lingustik hinein reicht.
    Geändert von HaWe (04.07.2016 um 15:29 Uhr)

  5. #5
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    19.01.2016
    Ort
    Saarbrücken
    Beiträge
    397
    Ich glaube ich muss mir das mit den NN doch mal genauer anschauen . Wenn du das schreibst klingt das immer alles so einfach und logisch ^^.

    Wären die 6 Personen dann fix, oder kann das NN sich dann auch selbstständig, oder nach Vorgabe, neue Personen merken?

    Diese Geschichte mit dem DUE. Wenn ich dich richtig verstanden habe wäre eine Stimmerkennung per NN auf diesem Gerät möglich? Das wäre doch eine Möglichkeit diese "Fähigkeit" auf eine andere Plattform zu bringen und die Ressourcen des Raspis zu schonen.

    Was den Trainingsaufwand angeht. Automatisieren sollte da ja kein Problem darstellen würde ich sagen. Auch wenn der mal ein paar Wochen trainieren muss tut ja nicht weh. Das Ding wird angeworfen und zur Seite gestellt. Noch eine LED dran die signalisiert das die entsprechende Fehlergrenze erreicht ist, dann wäre das ja eine lockere Geschichte. Aber. Darf das Teil dann nie wieder vom Strom genommen werden? Oder kann man das Erlernte dann speichern und bei Bedarf wieder laden?

    Im Falle der Wort- Satzerkennung vertraue ich da mittlerweile stark auf PocketSphinx. Das funktioniert echt super, solange der Input sauber ist. Sitze ich also zum Beispiel alleine hier, ohne das irgendwelche Hintergrundgeräusche dabei sind und das Mikro nicht zu nah ist, dann klappen selbst Sätze wie "Wie geht es dir" ziemlich gut. So verbessert es auch wenn ich den Input einfach durch 2 teile, dann geht einiges an Rauschen dahin und die Erkennung wird verbessert. Die API dürfte dir auch gefallen. Das sind nur ganz wenige Aufrufe zum Trainieren und dann zum erkennen. Das Erkennen geht in der Regel unter 2 Sekunden.

    Aber leider ist es wie bei den meisten Lösungen, Deutsch wird im Vergleich zu Englisch nur am Rande unterstützt. Aber der deutsche Sprachschatz kann man erweitern. Ich weiss zwar noch nicht genau wie, aber ich denke das wird sich letzten Endes auch mal regeln lassen. Meine Bot-KI soll deutsch können. Dann reden wir über englisch .

  6. #6
    HaWe
    Gast
    nein, der Due hat ja nur 1 Prozessor, nur 84 MHz, kein pre-emptives Multitasking und nur 92 MB RAM - da nimmt man besser einen der 4 Raspi cores für diesen Zweck, mit Training und Erkennung in einem high-prio pthread task, ggf mit einer schnellen USB-HD für schnellen Dateizugriff.

    Wenn du mehr als 6 Personen erkennen willst, heißt das zunächst: Das Netz von vornherein darauf skalieren, sonst musst du mit dem Training hinterher wieder bei Null beginnen.
    Und erkennen kann ein NN immer nur das, was auch an Daten (wenigstens grob, aber dann mit entsprechender Fehlerrate) trainiert wurde.
    Unbekannte Daten => Ergebnis=Müll.

    Ich finde auch: wenn fertige Lösungen ausreichen und die Anwendung das Ziel ist, muss man das Rad nicht neu erfinden. Anders sieht es aus, wenn man Spaß am Selber-Erfinden hat, auch bei schlechteren - aber vlt flexibleren - Resultaten.

    - - - Aktualisiert - - -


    ps,
    scheiße, schon wieder beim Schreiben automatisch von Forum ausgeloggt! was ist das für ein Mist?! alles weg !!
    Kann man nicht die LogIn-Dauer länger einstellen?!?



    jetzt nur in aller Kürze:
    für ein 100x40x10 Netz brauchst du je Verknüpfung nur alle Verbindungsgewichte speichern, also 100x40 plus 40x10 double-Werte, das ist das Gedächtnis, was nicht besonders viel ist, das kannst du beim Neustart leicht wieder in die Einzel-Neuronen laden.
    Unterschätze aber auch das RAM nicht:
    pro Verknüfung über 16 Bytes samt temporärer Hilfsvariablen, das sind hier mindestens 600kB (doch mehr, als ein Due besitzt, auch wenn man nur floats statt double verwendet),
    und bei einem größeren 1000x500x100 Netz wird mit geschätzen 1-2GB auch schon so langsam das RAM des Pi gesprengt (nur für das Netz, plus Programmcode und wave-Puffer oben drauf).
    4000x2000x100 - das wären dann schon mindestens 12GB Variablen im RAM, grob überschlagen... :-/
    Geändert von HaWe (04.07.2016 um 17:32 Uhr) Grund: verrechnet

  7. #7
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    19.01.2016
    Ort
    Saarbrücken
    Beiträge
    397
    Ja das mit dem Speicher. Ich gehe eh nicht davon aus, dass mein Projekt letzten Endes auf einem einzelnen Gerät realisiert werden kann. Ich habe auch keine Lust einen kompletten PC dann zu verbauen ^^. Da wird sich noch zeigen müssen wie die Hardware zu da eingesetzt werden muss. Gibt ja auch noch leistungsstärkere Geräte wie der Raspi.

    Was das selber Bauen angeht. Klar ist der Spass am selber Bauen da, aber ich will das grosse Ganze selber bauen. Ziel ist letzten Endes, eine KI dich mich versteht, die sieht und hört und die nach Möglichkeit auch selber lernen kann. Das Alles unter einen Hut zu bringen ist schon letzten Endes so viel Bastelarbeit, dass es schon fast zur Lebensaufgabe werden würde, wenn man da jedes Rad neu erfinden müsste. Zudem du es ja schon ansprichst, am Ende ist das Rad dann nicht so schnell und effizient wie die die es schon gibt.

    Was ich aber wirklich cool finde ist die Tatsache das man die Gewichte einfach nur speichern muss. Dann kann ich ja theoretisch das NN auf einem Desktop trainieren, dort auf den grossen Platten wirklich viele Vergleichsounds haben und dann die Werte einfach in die Software auf dem Raspi einspielen. Das klingt echt verdammt gut!

Ähnliche Themen

  1. Hackerspace Bremen braucht Stimmen
    Von Manf im Forum Neuigkeiten / Technik-News / Nachrichten / Aktuelles
    Antworten: 29
    Letzter Beitrag: 07.11.2012, 05:02
  2. RN-Contoller Defekt- Spannungen an Pins stimmen nicht - was machen?
    Von clownfish im Forum Schaltungen und Boards der Projektseite Mikrocontroller-Elektronik.de
    Antworten: 4
    Letzter Beitrag: 02.04.2012, 21:46
  3. Rot Grün unterscheiden!?
    Von DanielSan im Forum Sensoren / Sensorik
    Antworten: 8
    Letzter Beitrag: 12.08.2009, 13:44
  4. Stimmen meine AVRDUDE-Befehle?
    Von Zumlin im Forum AVR Hardwarethemen
    Antworten: 2
    Letzter Beitrag: 21.05.2007, 20:22
  5. Da kann doch was net stimmen *grummel* ;o(
    Von sick im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 15
    Letzter Beitrag: 30.06.2005, 12:17

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Labornetzteil AliExpress