audio aufnahme vergleichen und/oder grafisch darstellen



  • hi

    hab schon so gut wie alles durchforstet aber nichts gefunden bis auf dicke audiobearbeitungs-SDKs und das MS speech sdk, was aber unnötig für so n kleines problem is (denk ich jedenfalls, falls nich, korrigiert mich ^^)

    ich benutze c++ und will eine aufnahme machen, die dann gespeichert wird,
    dann folgt eine zweite aufnahme die dann mit der ersten verglichen werden soll und wenn der benutzer halt das selbe wie davor gesagt hat wird irgendwas gemacht.

    also bis jetz hab ich bissl rumprobiert mit waveIn/Out und auch mit directsound aber ich hab keine ahnung wie ich die aufgenommenen daten in verwertbare zahlen umwandel z.b. um die aufnahme grafisch dazustellen
    wenn ich die erstmal grafisch darstellen kann wär mir schon sehr geholfen dann fehlt nimma viel zum vergleichen denk ich mal/hoff ich mal 🙂
    ich hoff jemand kann mir da helfen

    vielen dank schonmal



  • wenn ich die erstmal grafisch darstellen kann wär mir schon sehr geholfen dann fehlt nimma viel zum vergleichen denk ich mal

    ja, das denkst du dir vielleicht.

    grafisch darstellen kannst du eine aufnahme sofort, nämlich einfach als "waveform". bringt dir aber vermutlich garnix.
    eine "bessere" darstellung wäre vermutlich eine die das frequenz-spektrum darstellt. dazu kannst du die audio-daten z.b. in kleine stücke zerteilen, und über jedes stück eine fourier-transformation machen. die transformierten daten beschreiben dann das spektrum, und die kannst du darstellen. da kann man dann mit dem freien auge schon einige dinge erkennen - zischlaute, tonhöhe, oder wenn man sehr schön spricht und sehr genau hinsieht sogar den unerschied zwischen verschiedenen vokalen.

    von dort bis zu "erkennen ob der user das selbe gesagt hat" ist es allerdings noch ein weiter weg.



  • schox schrieb:

    wenn ich die erstmal grafisch darstellen kann wär mir schon sehr geholfen

    grafisch darstellen ist relativ einfach: die aufgenommenen daten kannste direkt plotten, indem du pro sample seinen wert als y-wert und seine position in der datei als x-wert einfach in ein 2d-koordinatensystem einträgst. dann bekommste sowas wie ein oszilloskop-bild (amplitude d.h. lautstärke nach zeit). für eine auswertung (oder gar spracherkennung) wird dir das aber wenig nutzen, wie hustenbärchen bereits angedeutet hat.
    🙂



  • ;fricky schrieb:

    schox schrieb:

    wenn ich die erstmal grafisch darstellen kann wär mir schon sehr geholfen

    grafisch darstellen ist relativ einfach: die aufgenommenen daten kannste direkt plotten, indem du pro sample seinen wert als y-wert und seine position in der datei als x-wert einfach in ein 2d-koordinatensystem einträgst. dann bekommste sowas wie ein oszilloskop-bild (amplitude d.h. lautstärke nach zeit). für eine auswertung (oder gar spracherkennung) wird dir das aber wenig nutzen, wie hustenbärchen bereits angedeutet hat.
    🙂

    glaub ich hab vergessen zu sagen dass ich voll der nap bin was audio programmierung angeht 😃
    weis nich ob ich das richtig verstanden hab dann also mit den waveIn funktionen sind die aufgenommen daten in einem LPSTR gespeichert voll mit sonderzeichen und die varrieren komplett auch wenn ich 2 mal des selbe sag oder komplette stille aufnehme, meine frage is also wie ich die daten in den werten die ich benötige bekomme also ich will die nich in realtime darstellen sondern nach der aufnahme auslesen



  • schox schrieb:

    weis nich ob ich das richtig verstanden hab dann also mit den waveIn funktionen sind die aufgenommen daten in einem LPSTR gespeichert voll mit sonderzeichen und die varrieren komplett auch wenn ich 2 mal des selbe sag oder komplette stille aufnehme, meine frage is also wie ich die daten in den werten die ich benötige bekomme also ich will die nich in realtime darstellen sondern nach der aufnahme auslesen

    kommt drauf an, in welchem format die gepeichert sind (mono/stero, anzahl bits per sample, vorzeichenbehaftet oder vorzeichenlos). nehmen wir mal mono, 16bits, vorzeichenlos, dann sind jeweils 2 bytes ein sample, die nächsten beiden das nächste sample usw. wenn die bytes so abgelegt sind, dass das niederwertige byte zuerst kommt, dann ist sample1 = byte0 + 256*byte1, sample2 = byte2 + 256*byte3, usw. das format kannste bei der initialierung dieser wave-funktionen festlegen, damit: http://msdn.microsoft.com/en-us/library/aa908934.aspx
    🙂



  • @schox:
    Ich verstehe dich schon.

    Bloss dass das alles nicht so einfach ist.
    Es gibt eben keine Transformation die du auf die Daten anwenden könntest, so dass sie nichtmehr "total zufällig" aussehen, bzw. so dass du die Daten von zwei Aufnahmen einfach vergleichen könntest.



  • puh, danke erstmal für die antworten, des klingt viel komplizierter als ich mir des vorgestellt hab jetz überleg ich ob ich mir da n buch besorge weil des n thema is was mich wirklich interessiert, könnt ihr mir da zufällig eins empfehlen ?



  • schox schrieb:

    ...jetz überleg ich ob ich mir da n buch besorge weil des n thema is was mich wirklich interessiert, könnt ihr mir da zufällig eins empfehlen ?

    ich hab' hier noch rumschwirren: 'grundkurs spracherkennung' von stephen euler, vieweg verlag. ich finds ganz ok, alles wichtige zu dem thema wird kurz angerissen, grundkurs eben. mag sein, dass es bessere gibt, aber ich kenne nur das.
    🙂



  • Ein etwas fortgeschritteneres Buch waere z. B. "A Digital Signal Processing Primer" von Ken Steiglitz. Gibts evtl. in der (Uni)bibliothek deiner Wahl. Und vllt. gibts auch eine dt. Uebersetzung, aber ich kenn nur das Englische.



  • sers nochmal und danke für die buchvorschläge :>

    nochma zum topic:
    ich hab jetz einfach mal rumgesucht wie man so ne wavedatei mit normalen file operations ausliest und bin auf die hier gestoßen:

    http://www.hib-wien.at/leute/wurban/informatik/waveformat.pdf
    http://www.thisisnotalabel.com/How-to-Read-and-Write-WAV-Files---in-C-and-VB.php
    https://ccrma.stanford.edu/courses/422/projects/WaveFormat/

    ich krieg jetz schonmal folgende daten zam:

    http://img209.imageshack.us/img209/5509/wavedaten.jpg

    was ich leider nich finden konnte is wie ich jetz anhand davon die eigentlichen audiodaten vewertbar auslese da bin ich noch am rumprobiern aber das nich weiter tragisch krieg ich scho irgendwann raus oder über nen andern weg ka ich muss jetz erstmal chillen aber ich fands ganz interessant deswegen hab ichs mal gepostet vielleicht hilft das ja irgendwem



  • du musst den "data" chunk suchen


Anmelden zum Antworten