So zeichnen Sie vom Mikrofon in .wav nach dem Einschalten es schnellen Fourier-Transformation und einen Hochpassfilter anwenden?

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

  •  08-07-2019
  •  | 
  •  

Frage

Ich erhalte eine Eingabe von dem Mikrofon und ich gelte die fft darauf. Danach legte ich Frequenzen höher als 1 kHz mit Null zurück (Hochpassfilter).

Ich möchte wissen, wie kann ich den Eingang vom Mikrofon aufnehmen, nachdem ich es übergeben Filter fft und nach der Anwendung des Hochpass.

Ich arbeite mit c #, was muss ich tun? : P

War es hilfreich?

Lösung

Nach dem FFT und Filter, benötigen Sie eine inverse FFT zu tun, um die Daten zurück in den Zeitbereich zu erhalten. Dann möchten Sie diesen Satz von Proben auf Ihre .wav-Datei hinzuzufügen.

Soweit die Herstellung der Datei selbst geht, ist das Format weit dokumentiert (Googeln für „.wav Format“ sollten weitere Ergebnisse auftauchen, als Sie jede Verwendung haben für), und ziemlich einfach. Es ist im Grunde ein einfacher Header (ein „Brocken“ genannt), der sagt, es ist eine .wav-Datei (oder eigentlich eine „RIFF“ Datei). Dann gibt es noch ein „fmt“ chunk, die über das Format der Proben (Bits pro Probe, Proben pro Sekunde, Anzahl der Kanäle, etc.) erzählt Dann gibt es ein „Daten“ Brocken, die die Proben selbst enthält.

Da es klingt wie Sie gehen in Echtzeit tun dies, so würde mein Rat zu tun, um Ihre FFT, Filter und iFFT zu vergessen sein. Ein FIR-Filter geben im wesentlichen die gleichen Ergebnisse, aber in der Regel viel schneller. Die Grundidee des FIR-Filters ist, dass anstelle den Daten in dem Frequenzbereich umzuwandeln, es Filterung, dann in dem Zeitbereich umzuwandeln zurück, können Sie Ihre Filterkoeffizienten in dem Zeitbereich umzuwandeln, und wende sie (relativ) direkt auf Ihre Eingangsdaten. Dies ist, wo DSPs ihren Lebensunterhalt zu verdienen: fast alle von ihnen haben Multiply-Accumulate Anweisungen, die die meisten von einem FIR-Filter in einer Anweisung implementieren können. Auch ohne dass jedoch einen FIR-Filter immer in Echtzeit auf einem modernen Prozessor laufen nimmt keinen wirklichen Trick, es sei denn du tust wirklich schnelle Abtastung. Auf jedem Fall ist es viel einfacher, dass eine FFT / Filter / iFFT immer mit der gleichen Geschwindigkeit zu arbeiten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top