ich versuche gerade, mit dem numpy.fft-Modul Audio-Daten zu analysieren. Am Ende möchte ich wissen, welche Frequenz am stärksten vertreten ist. Mein bisheriges Programm sieht so aus, dass ich Audio-Daten aus einer WAV-Datei in ein Array einlese. Das funktioniert auch soweit (geprüft mit gnuplot).
Für den Anfang habe ich mir mit Audacity eine Datei erstellt, in der einfach nur 1 Sekunde lang eine 440Hz-Sinuswelle vorkommt, hier sollte es ja eigentlich kein Problem für die Fourier-Transformation sein, die am stärksten vertretene Frequenz rauszufinden (da es ja nur eine gibt).
Mein bisheriges Programm sieht so aus:
Code: Alles auswählen
# Daten einlesen, data = [-1, 2054, 4096, 6128, 8130, 10104, 12037, 13921, 15755, 17521, ... (insgesamt 44100 Elemente)] - bei gnuplot eine perfekte Sinuswelle
x = numpy.fft.fft(data)
print(x)
print(type(x))
print(x.ndim)
print(x.shape)
print(x.size)
Code: Alles auswählen
[-38.00000000 +0.j -11.47671220 +8.95112753j
-16.57137716-12.65488369j ..., -11.87146731+37.22515667j
-16.57137716+12.65488369j -11.47671220 -8.95112752j]
<type 'numpy.ndarray'>
1
(44100,)
44100
Schon mal danke im Vorraus.