Schnelle Fourier-Transformation mit Python (Audio-Analyse)

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
rookies
User
Beiträge: 8
Registriert: Samstag 27. November 2010, 14:37

Hallo,
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)
Ausgabe:

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
Also hat die Fourier-Transformation eigentlich nichts gemacht, außer mir die 44.100 Samples in etwas abgeänderter Form und als komplexe Zahl zurückzugeben. Oder täusche ich mich da? Hat jemand schon Erfahrung mit der Fourier-Transformation gemacht?

Schon mal danke im Vorraus.
webspider
User
Beiträge: 485
Registriert: Sonntag 19. Juni 2011, 13:41

Du benötigst noch fftfreq. Was das Thema angeht, fand ich folgenden Thread sehr hilfreich: stackoverflow.
rookies
User
Beiträge: 8
Registriert: Samstag 27. November 2010, 14:37

webspider hat geschrieben:Du benötigst noch fftfreq. Was das Thema angeht, fand ich folgenden Thread sehr hilfreich: stackoverflow.
Danke für die schnelle Hilfe. :)
Hat mir sehr geholfen.
Antworten