Wie erfolgt die Frequenzinformationen von Proben aus Portaudio extrahieren FFTW in C unter Verwendung von

StackOverflow https://stackoverflow.com/questions/3058236

Frage

Ich möchte ein Programm machen, die Audiodaten aufzeichnen würde mit Portaudio (Ich habe diesen Teil getan) und dann die Frequenz Anzeige von Informationen dieser aufgezeichneten Audio (für jetzt, ich möchte die durchschnittliche Frequenz von jedem der angezeigt werden Gruppe von Proben, wie sie kommen in).

Von einigen der Forschung ich getan habe, ich weiß, dass ich eine FFT zu tun. Also habe ich für eine Bibliothek gegoogelt FFTW, dass in C und fand zu tun.

Aber jetzt bin ich ein wenig verloren. Was genau soll ich mit den Proben, die ich aufgenommen tun von ihnen einige Frequenzinformationen zu extrahieren? Welche Art von FFT soll ich (ich nehme ich ein echten Daten 1D bräuchten?)?

Und wenn ich die FFT tun würde, wie bekomme ich die Frequenzinformationen aus den Daten gibt es mir?

EDIT: Ich fand nun auch den Autokorrelationsalgorithmus. Ist es besser? Einfachere?

Vielen Dank im Voraus, und sorry, ich habe absolut keine Erfahrung, wenn diese. Ich hoffe, es macht zumindest ein wenig Sinn.

War es hilfreich?

Lösung

Um Ihre Audio-Samples zu einem Leistungsspektrum umwandeln:

  • , wenn die Audiodaten Integer-Daten konvertieren es dann zu Gleitkomma
  • eine FFT-Größe auszuwählen (beispielsweise N = 1024)
  • wenden Sie eine Fensterfunktion N Proben Ihrer Daten (zB Hanning )
  • verwenden, um eine Echtzeit-to-komplexe FFT der Größe N Frequenzbereichsdaten zu erzeugen
  • berechnen Sie die Größe Ihrer komplexen Frequenzbereichsdaten (magnitude = sqrt(re^2 + im^2))
  • optional convert Größe auf einer logarithmischen Skala (dB) (magnitude_dB = 20*log10(magnitude))
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top