-
        

Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 10 von 25

Thema: Stimmen unterscheiden

  1. #1
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    19.01.2016
    Ort
    Saarbrücken
    Beiträge
    321

    Stimmen unterscheiden

    Anzeige

    Mahlzeit!

    Ich brauch mal Hilfe. Und zwar, mein Bot soll ja nicht nur die Worte verstehen können, die gesprochen werden, der soll nach Möglichkeit auch bekannte Stimmen erkennen. Ich war vor ein paar Jahren bei einem Vortrag, wo es hiess es wäre sehr einfach Stimmen zu unterscheiden, da Stimmen sich nahezu nie gleichen und es gerade für Sicherheitssysteme eine einfache und gute Möglichkeit wäre, sicher zu gehen das da die richtige Person vorhanden ist. Da ging es auch noch drum wie man erkennt ob eine Stimme vom Band kommt oder nicht, aber das ist mir erst einmal egal.

    Ich Suche nun Infos, wie und woran man Stimmen unterscheiden kann. Aber ich finde nur Störungen im Kopf wo der Mensch dann keine Stimmen mehr erkennt. Muss ich jetzt meinen Bot, nachdem er mal hört, dann erst zum Therapeuten schicken, oder kann mir von euch jemand sagen, nach was genau ich da suchen muss. Oder hat von euch sogar jemand Ahnung wie man das realisiert?

  2. #2
    Erfahrener Benutzer Robotik Einstein Avatar von i_make_it
    Registriert seit
    29.07.2008
    Ort
    Raum DA
    Alter
    49
    Beiträge
    2.437
    Ganz so einfach ist das nicht.
    Streß, verstopfte Nase, Heiserkeit, etc. können die Stimme einer Person schon ganz gut verändern.
    Ein zu scharf eingestelltes System kann da eine bekannte Person schnell mal als einen Fremden identifizieren.
    Ein zu lasch eingestelltes System identifiziert wiederrum einen Fremden mit selben Sprechrythmus auch mal als eine bekannte Person.
    Das sind mehrere tausend Merkmale die geprüft werden um ein halbwegs fehlerfreies System zu erhalten.

    http://www.tik.ee.ethz.ch/spr/public...fister:01a.pdf
    http://www.twinsoft-biometrics.de/fi...i_12.09_01.pdf

  3. #3
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    19.01.2016
    Ort
    Saarbrücken
    Beiträge
    321
    Danke. Schaue ich mir gerne an.

    Bei meinem Bot ist keine 100%ige Sicherheit notwendig. Ich meine, wir Menschen bringen auch mal Stimmen durcheinander, gehen davon aus mit jemand Anderem zu reden wie es dann tatsächlich ist. Gerade am Telefon hatte ich das schon sehr oft. Da mein Bot ja auch noch eine visuelle Identifikation vornehmen wird (das geht mit OpenCV überraschend einfach und wirklich gut!) sollte das relativ gut funktionieren. Wenn er in einer Gruppe nicht direkt alle an der Stimme erkennt kann ich damit leben. Wenn er aber sieht, wer sich im Umfeld befindet kann er die möglichen Stimmen dadurch schon einkreisen. Oder auch anders gesagt, wenn jemand neben oder hinter dem Bot etwas sagt und er kann die Stimme nicht zuordnen, wird er auch in der Lage sein seinen "Kopf" in Richtung des Sprechers zu drehen und diesen dadurch zu erkennen. Wenn er auch da die Person nicht erkennt ist stark anzunehmen, dass die Person ihm noch unbekannt ist, bzw. er die Person noch nicht oft genug gesehen hat um genug Daten für eine Identifizierung zu sammeln.

    Ich hoffe ja nur das ein Raspi mit All dem auch klar kommt. Ich befürchte ja stark das ich das letzten Endes auf mehrere Raspis, bzw. andere Einplatinencomputer ausweiten werden muss.

  4. #4
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    09.10.2014
    Beiträge
    2.433
    Klang von Stimmen wird durch Oberwellen moduliert. Die liegen - geschätzt - bei vielleicht 4000-12000 Hz.
    Ich würde also einen Filter einbauen, der genau diesen Bereich isoliert und dann mit Mustern vergleichen, die ebenfalls in diesem Frequenzbereich liegen.
    Mein 1. Ansatz wäre dazu eine FFT, die den gefilterten aktuellen Klang mit Stimmmustern dieses Frequenzbandes per cross-correlation vergleicht, ggf. vorselektiert durch im Schritt vorher bereits erkannte Wortmuster aus den Sprech- und Sprachmustern der betreffenden Personen
    ·±≠≡≈³αγελΔΣΩ∞ Schachroboter:www.youtube.com/watch?v=Cv-yzuebC7E Rasenmäher-Robot:www.youtube.com/watch?v=z7mqnaU_9A8

  5. #5
    Erfahrener Benutzer Robotik Einstein Avatar von i_make_it
    Registriert seit
    29.07.2008
    Ort
    Raum DA
    Alter
    49
    Beiträge
    2.437

  6. #6
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    19.01.2016
    Ort
    Saarbrücken
    Beiträge
    321
    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.

  7. #7
    Erfahrener Benutzer Roboter Genie Avatar von BMS
    Registriert seit
    21.06.2006
    Ort
    TT,KA
    Alter
    26
    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

  8. #8
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    19.01.2016
    Ort
    Saarbrücken
    Beiträge
    321
    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 ^^

  9. #9
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    09.10.2014
    Beiträge
    2.433
    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 16:29 Uhr)
    ·±≠≡≈³αγελΔΣΩ∞ Schachroboter:www.youtube.com/watch?v=Cv-yzuebC7E Rasenmäher-Robot:www.youtube.com/watch?v=z7mqnaU_9A8

  10. #10
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    19.01.2016
    Ort
    Saarbrücken
    Beiträge
    321
    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 .

Seite 1 von 3 123 LetzteLetzte

Ähnliche Themen

  1. Hackerspace Bremen braucht Stimmen
    Von Manf im Forum Neuigkeiten / Technik-News / Nachrichten / Aktuelles
    Antworten: 29
    Letzter Beitrag: 07.11.2012, 06: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, 22:46
  3. Rot Grün unterscheiden!?
    Von DanielSan im Forum Sensoren / Sensorik
    Antworten: 8
    Letzter Beitrag: 12.08.2009, 14:44
  4. Stimmen meine AVRDUDE-Befehle?
    Von Zumlin im Forum AVR Hardwarethemen
    Antworten: 2
    Letzter Beitrag: 21.05.2007, 21: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, 13:17

Berechtigungen

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