Comment enregistrer du microphone au format .wav après application de la transformation de Fourier rapide et d’un filtre passe-haut?

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

  •  08-07-2019
  •  | 
  •  

Question

Je reçois une entrée du microphone et j'applique le fft dessus. Après cela, je mets des fréquences supérieures à 1KHz avec zéro (le filtre passe-haut).

Je veux savoir comment puis-je enregistrer l'entrée du microphone après l'avoir transmise à fft et après l'application du filtre passe-haut.

Je travaille avec c #, que dois-je faire? : P

Était-ce utile?

La solution

Après votre FFT et votre filtre, vous devez effectuer une FFT inverse pour ramener les données dans le domaine temporel. Ensuite, vous souhaitez ajouter cet ensemble d’échantillons à votre fichier .WAV.

En ce qui concerne la production du fichier lui-même, le format est largement (googler pour "format .WAV" devrait donner plus de résultats que vous n’auriez d’utilité), et assez simple. Il s’agit d’un simple en-tête (appelé "chunk") qui indique qu’il s’agit d’un fichier .WAV (ou en réalité d’un fichier "RIFF"). Ensuite, il y a un " fmt " morceau qui indique le format des échantillons (bits par échantillon, échantillons par seconde, nombre de canaux, etc.) Ensuite, il y a une "donnée". morceau qui contient les échantillons eux-mêmes.

Puisqu'il semble que vous allez le faire en temps réel, mon conseil serait d'oublier de faire votre FFT, votre filtre et votre iFFT. Un filtre FIR donnera essentiellement les mêmes résultats, mais généralement beaucoup plus rapidement. L'idée de base du filtre FIR est qu'au lieu de convertir vos données en domaine fréquentiel, de les filtrer, puis de les reconvertir en domaine temporel, vous convertissez vos coefficients de filtre en domaine temporel, puis vous les appliquez (assez) directement dans vos données d'entrée. C'est là que les DSP gagnent leur vie: presque tous ont des instructions multipliant-accumulant, qui peuvent implémenter la plupart des filtres FIR dans une instruction. Même sans cela, cependant, obtenir un filtre FIR pour fonctionner en temps réel sur un processeur moderne ne prend pas une véritable astuce, sauf si vous effectuez un échantillonnage vraiment rapide. Dans tous les cas, il est beaucoup plus facile de faire fonctionner une FFT / filtre / iFFT à la même vitesse.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top