Я получаю странные шипения / артефакты в моем аудио, когда делаю разные подходы FFT - PullRequest
0 голосов
/ 08 июля 2019

Я делаю свертку фильтра, используя fft (FFTW).Я испытываю то, чего не могу понять.У меня есть вход x (n), который я хочу применить фильтр IR u (n).Обе длины N. Таким образом, я обнуляю оба, например, 2n, и делаю FFT обоих, чтобы получить X (n) и U (n).если я просто делаю X (n) * U (n) и IFFT, я получаю сигнал y (t).Если я слушаю сигнал, что шипения нет, все звучит нормально.Для ускорения программы и экономии памяти я попытался использовать симметрию U (n) и X (n) и использовать только первую половину U (n) и X (n) и заполнение нулями второй половины.Итак, я сделал X (n0 ... n / 2,0,0,0,0, .., N) U (n0, .., n / 2,0,0,0, .., N) и IFFT.Результирующий выходной сигнал не отличается от результата при умножении на полную длину X U, но на выходе слышен странный едва заметный шипящий шум.Чаще всего звучит на громких / резонансных участках входного сигнала, звучит почти как срезание сцены.Я ничего не изменил в масштабировании в обоих методах, поэтому я не понимаю, что происходит.Может ли кто-нибудь помочь мне с идеей?

Разве неправильно использовать только половину U и X и нулевую площадку, остальные, я должен использовать полную длину?Или это меняется, например, масштабирование?

1 Ответ

0 голосов
/ 18 июля 2019

Вы не можете просто установить часть спектра вашего сигнала на ноль. Любой реальный сигнал (без мнимой составляющей) имеет сопряженный комплексный спектр. Я думаю, это та симметрия, о которой ты говоришь. Если вы установите часть спектра на ноль, ваш сигнал во временной области будет сложным и полностью отличается от исходного сигнала, с которого вы начали.

Если вы хотите ускорить свои вычисления, уменьшите количество сэмплов, с которыми вы работаете

...