Как записать в .wav с микрофона после применения быстрого преобразования Фурье и фильтра верхних частот? - PullRequest
1 голос
/ 29 октября 2009

Я получаю вход от микрофона и применяю к нему fft. После этого я обнуляю частоты выше 1 кГц (фильтр верхних частот).

Я хочу знать, как я могу записать вход с микрофона после того, как я передал его в fft и после применения фильтра верхних частот.

Я работаю с c #, что мне нужно делать? : P

1 Ответ

3 голосов
/ 29 октября 2009

После вашего БПФ и фильтра вам нужно сделать обратное БПФ, чтобы вернуть данные во временную область. Затем вы хотите добавить этот набор семплов в ваш файл .WAV.

Что касается создания самого файла, то формат широко задокументирован (поиск в «формате .WAV» должен дать больше результатов, чем вы когда-либо использовали), и довольно простой. По сути, это простой заголовок (называемый «чанк»), который говорит, что это файл .WAV (или фактически файл «RIFF»). Затем есть блок «fmt», который сообщает о формате выборок (биты на выборку, выборки в секунду, количество каналов и т. Д.). Затем есть блок «данных», который содержит сами выборки.

Поскольку звучит так, как будто вы собираетесь делать это в режиме реального времени, я бы посоветовал вам забыть о выполнении вашего FFT, фильтра и iFFT. КИХ-фильтр даст практически те же результаты, но, как правило, намного быстрее. Основная идея КИХ-фильтра заключается в том, что вместо преобразования ваших данных в частотную область, фильтрации, а затем обратного преобразования во временную область вы преобразуете свои коэффициенты фильтра во временную область и применяете их (справедливо) непосредственно к входным данным. Здесь DSP зарабатывают на себе: почти все из них имеют инструкции с многократным накоплением, которые могут реализовать большую часть КИХ-фильтра в одной инструкции. Однако даже без этого получение FIR-фильтра, работающего в режиме реального времени на современном процессоре, не потребует никаких реальных уловок, если вы не выполните действительно быструю выборку. В любом случае гораздо проще заставить FFT / filter / iFFT работать с той же скоростью.

...