glaub mir, das ist erstmal irrelevant. Ich habe lange genug Zeit mit Mustererkennung, statistischen und stochastischen Filtern und lernfähigen Neuronalen Netzen gearbeitet, um zu wissen, was jetzt vorrangig ist.
Erst muss er ein Muster im ganzen erkennen können.
Ob du in einem Muster dann später eine Pausenerkennung vorschaltest und dann in Unter-Muster aufteilst, ist für das grundsätzliche Problem ohne Belang.
Ich will auch gerne weiter dranbleiben mit FFT und cross-correlation, aber dazu ist GANZ ENORM WICHTIG für die Filter zur Signal-Verarbeitung:
Bitte keine Vectoren von variabler Größe, sondern ausschließlich arrays mit fixer Größe.
Was nicht reinpasst vom Sound, muss abgeschnitten werden, und was übrig bleibt, mit Nullen aufgefüllt.
Das gilt sowohl für alle char-arrays als auch für alle int- und float (besser: double) arrays, und bitte alle in expliziten C11-Datentypen, nicht char, nicht int, sondern uint8_t und int32_t (ist besser als int16_t).
Wenn man das nicht macht, funktioniert das nicht mit Filtern und Transformationen, so wie ich es vorhabe und auch schon z.T. gemacht habe - wenn du die Vektoren behältst, muss ich leider aussteigen.
Die Dimensionen habe ich dir ja bereits hier genannt:
Code:
int32_t wavarray[SHRT_MAX];
int32_t input[SHRT_MAX];
uint8_t wave[SHRT_MAX];
double fx_[USHRT_MAX], // FFT reell-Teil
fy_[USHRT_MAX]; // FFT imaginär-Teil
es muss genau so und nicht anders sein, damit man die FFT-Dimensionen und die wav-Dimensionen zueinander passen und die FFT keinen Unsinn transformiert.
ps,
er muss den Start eines Signals (Worts) erkennen, und das geht über ein Lautstärke-Bias:
er fängt erst an, aufzunehmen bzw. das wav zu schreiben, wenn die Lautstärke über einer bestimmten Grenze ist.
Das Signal wird dann über einen Threshold "geschnitten" (cut vorher, cut nachher).
Wie sieht denn jetzt ein wav File aus?
Kannst du die reinen wav Schwingungs-Daten daraus isolieren und in den wavarray packen?
Lesezeichen