Simple Spracherkennung

Fragen zu Grafik- & Soundproblemen und zur Spieleprogrammierung haben hier ihren Platz.
Benutzeravatar
Hoto
Beiträge: 294
Registriert: 01.09.2004 22:51

Beitrag von Hoto »

Den Mittelwert? Blicke ich gerade nicht, was eine Amplitude ist, ist mir klar, aber welcher Mittelwert meinst Du genau?

Hm, seltsam, die Hz Zahl gibt ja die Anzahl der Schwingungen pro Sekunde an. Ich hab hier nun ein Sample das ist 600ms lang in 6000Hz aufgenommen, das wären dann also 3600 Schwingungen. Wie kommt es dann, dass das Sample in RAW abgespeichert 3600 Bytes groß ist?

Da blick ich noch nicht so ganz durch.
Zuletzt geändert von Hoto am 17.03.2007 14:00, insgesamt 1-mal geändert.
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Beitrag von DarkDragon »

Hoto hat geschrieben:Wie muss ich denn nun eine Wav Datei genau vektorisieren? Einfach nur immer abwechselnd die Tiefst- und Höchstwerte auslesen?
Da gehst du über die Steigung: DeltaX und DeltaY.

Bild

Ich hoffe es ist alles korrekt was ich das reingeschrieben hab.

Die Kurve liegt halt wie in nem byte, word oder float Array vor, nicht als Vektoren oder gar als Funktionsgleichung.
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Benutzeravatar
Hoto
Beiträge: 294
Registriert: 01.09.2004 22:51

Beitrag von Hoto »

Ok, das hilft mir schon mal ein ganzes Stück weiter, jedoch frage ich mich immer noch wie die Daten abgespeichert sind, eine ganze Schwingung kann doch schlecht in einem Byte stecken? Für eine Schwingung brauch man da doch mehr Daten.

Mit welchem Programm kann ich eine Wave auf 100Hz bringen? Mit meinem Wave Editor kommt ich nur bis min. 1000Hz runter.

Edit: ok, ich habs nun kapiert wie es abgespeichert wird. Ein Programm zum reduzieren auf 100Hz fehlt mir dennoch immer noch.

Das mit den Winkeln ist eine sehr gute Idee.
Zuletzt geändert von Hoto am 17.03.2007 14:28, insgesamt 1-mal geändert.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

> eine ganze Schwingung kann doch schlecht in einem Byte stecken?
dort steckt auch nur ein einziger amplitudenwert zum zeitpunkt x

du brauchst auch nicht das sample auf 100Hz runterbringen,
du kannst den algorithmus so schreiben,
dass er über mehrere sample-werte geht um einen vektor zu erzeugen....
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
Hoto
Beiträge: 294
Registriert: 01.09.2004 22:51

Beitrag von Hoto »

Jo, habs inzwischen soweit begriffen. Blick jetzt schon deutlich besser durch. Zum besseren Verständnis würde ich aber doch lieber erstmal mit 100Hz Sampeln arbeiten und später kann ich das ja dann immer noch umändern.

Per Zufall gerade über nen guten Artikel gestolpert: http://iamwww.unibe.ch/~fkiwww/lectures ... itel21.pdf
Benutzeravatar
ZeHa
Beiträge: 4760
Registriert: 15.09.2004 23:57
Wohnort: Friedrichshafen
Kontaktdaten:

Beitrag von ZeHa »

Ich würde einfach das WAV-File einlesen, dann z.B. immer ein Frame-Fenster von 1000 Samples nehmen, davon das höchste aussuchen oder den Mittelwert, und das dann in einer Liste speichern und daraus die Vektoren berechnen.

(Ein Frame sind alle Samples aller Kanäle zu einem einzigen Zeitpunkt - wenn Du Stereo benutzen würdest, hätte ein Frame also zwei Samples. Du wirst Mono benutzen, nehme ich an, aber programmiere Deine Funktionen lieber gleich richtig ;) ach ja und noch was, es gibt einen wichtigen Unterschied bei 8-Bit und 16-Bit Samples, und zwar wird 8-Bit immer unsigned gespeichert und der Mittelpunkt liegt bei 127 (Also Amplitude = 0), bei 16-Bit ist 0 tatsächlich der Mittelpunkt und es geht von -32767 bis 32768).
Bild     Bild

ZeHa hat bisher kein Danke erhalten.
Klicke hier, wenn Du wissen möchtest, woran ihm das vorbeigeht.
Benutzeravatar
Hoto
Beiträge: 294
Registriert: 01.09.2004 22:51

Beitrag von Hoto »

hm, also ich hab hier 8bit Samples aufgenommen, die wenn ich sie in PB mit ReadByte einlese von -127 bis +128 gehen. Bei 16bit Samples, die ich mit ReadWord (ist doch richtig so?) auslese, ist bei meinem Sample der max. Wert irgendwo bei 16000, also weit weg von 32768, auch hier hab ich positive und negative Werte.

Was ich auch seltsam finde, ist das die meisten Werte, die ich bei 8bit Samples einlese fast alle um die -127 oder 128 liegen, dazwischen kommt kaum bis gar nichts vor.

Edit: ich gebs auf, blick da überhaupt nicht mehr durch... :?
Antworten