| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Алгоритмы > Обработка сигналов... |
| Автор: kernel_mode 18.3.2009, 15:37 |
| Необходимо подавить шум в звуковом сигнале. Имеется его спектр (полученный путём FFT). Никак не могу найти нужную информацию, гуглю уже не одну неделю |
| Автор: GoldFinch 18.3.2009, 19:26 |
| те сам фильтр или программу? сам фильтр в прогах типа sound forge можно достаточно просто сделать прогу с фильтром в LabView самому писать прогу на какомнить языке - юзай какойнить стандартный КИХ или БИХ фильтр они просто реализуются и много где описаны |
| Автор: kernel_mode 18.3.2009, 20:51 |
| Мне нужно программу написать P.S. Проблема собственно в том, что я пока только в 11 классе, а эта тема очень заинтересовала. В БПФ я вникнул, а вот в цифровую обработку сигналов без разжеванной инфы не могу... :( |
| Автор: GoldFinch 18.3.2009, 21:35 |
| kernel_mode, ты бы теорию изучил тогда сначала, учебик бы по цифровой обработке сигналов почитал... основы надо понимать, а не "БПФ изучил" вобщем идея такая. есть штука которая должна фильтровать сигнал, она имеет в частотной области частотную характеристику X(f), эта частотная характеристика умножается на спектр входного сигнала S(f), результат перемножения - выходной профильтрованный сигнал S2(f) например, входной сигнал представлен в виде массива значений амплитуд гармоник по частотам, S[N], расстояние между частотами 1Гц, тогда индекс массива численно совпадает с частотой, и у тебя S[200] - амплитуда гармоники на частоте 200Гц тогда берем фильтр высоких частот с характеристикой заданной H[N] и считаем выходной сигнал как for i=0..N-1 do S2[i]=H[i]*S[i] но как следует из теории, спектр сигнала конечной длины бесконечен (и наоборот), поэтому если взять БПФ обычного звукового сигнала всего целиком, а потом преобразовать это обратно во временной сигнал, что что мы получим ни разу не исходный сигнал, т.к. БПФ потеряет немало полезной информации в сигнале, поэтому используют не БПФ всего сигнала, а "мгновенную" БПФ - т.е. сигнала в каком-то окне но такое преобразование из сигнала в его спектр и наоборот слишком затратно, поэтому обычно фильтруют сразу сигнал во временной области. операция произведения спектра на частотную характеристку фильтра эквивалентна операции свертки (сумма произведений) временного сигнала s(t) и импульсной (временной) характеристики фильтра h(t) во временно области: s2(t)=s(t) (+) h(t) (фильтр с Конечной Импульсной Характеристикой называется КИХ фильтром) .... но это все было так, для общего развития реальный шум в акустическом сигнале расположен на тех же частотах (гдето 40Гц-16КГц) что и сам сигнал, реальный сигнал вляется не только суммой С+Ш но и произведением С*Ш, поэтому его невозможно отфильтровать простым линейным фильром для фильтрации шумов в сигнале использую его корреляционные (а может и кепстральные) характеристики, берется характеристика чистого шума, анализируется и с ее помощи пытаются отделить сигнал от шума Добавлено через 1 минуту и 45 секунд вобщем мораль такова, что ты не можешь сейчас ни разобраться с используемым там математическим аппаратом, ни реализовать его программно, юзай sound forge |
| Автор: kernel_mode 18.3.2009, 22:10 |
| Эх... А я выступить думал в школе напоследок |
| Автор: GoldFinch 18.3.2009, 23:39 |
| kernel_mode, LP это фильтр низких частот (ФНЧ), HP - высоких (ФВЧ) да под силу, но это ничего не даст пример фильтра можно посмотреть в http://ru.wikipedia.org/wiki/%D0%A4%D0%B8%D0%BB%D1%8C%D1%82%D1%80_%D0%A7%D0%B5%D0%B1%D1%8B%D1%88%D1%91%D0%B2%D0%B0#.D0.A6.D0.B8.D1.84.D1.80.D0.BE.D0.B2.D1.8B.D0.B5_.D1.84.D0.B8.D0.BB.D1.8C.D1.82.D1.80.D1.8B_.D0.A7.D0.B5.D0.B1.D1.8B.D1.88.D1.91.D0.B2.D0.B0 |
| Автор: cardinal 19.3.2009, 00:40 |
| Посмотри тут http://forum.vingrad.ru/forum/topic-171436.html я там челу больше года назад показал, как можно сделать фильтр, но видать увидев подход и результат чел понял, что не осилить ему эту задачу... |
| Автор: GoldFinch 19.3.2009, 02:32 |
| cardinal, там нужен был простой (линейный) ФНЧ фильтр здесь - совсем другая задача |
| Автор: cardinal 19.3.2009, 11:37 |
GoldFinch, а тут что нужно? У него ведь сигнал записан. Теперь делай с ним что хочешь... |
| Автор: GoldFinch 19.3.2009, 17:30 | ||||
Pavia, в акустическом сигнале шум и сим сигнал лежат в одном диапазоне частот, шум вне слышимого диапазона частот будет просто неслышен человеком, его фильтровать смысла нет
реальный он на то и не идеальный что дает заведомо худший результат фильтр обрабатывающий сигнал во временной области может быть лучше идеального фильтра работающего в частотной области только за счет недостатков цифрового преобразования Фурье поэтому БПФ всего сигнала, "мгновенная" БПФ в окне - не лучший вариант для обработки сигнала, для анализа - хорошо, а для обработки нет
свертка или рекурсия всяко будут быстрее двукратного БПФ |
| Автор: Pavia 19.3.2009, 21:11 | ||||
Несогласен. Если матрица свертки маленькая то будет быстрее прямым способом. А если большая то быстрее через БПФ. Только его лучше взять уже готовом види, оптимизированный по скоросте.
Судя по вашым сообщениям вы много знаете. Так что спорить не буду. Скажу толкьо то что в той облосте акустики в которой я занимаюсь сигнал лежит в другом диапозоне частот нежеле чем шум, по этому легко отделяется.
Ошибку можно оценить. Но побольшей части в качестве сверки он должен подходить |
| Автор: kernel_mode 20.3.2009, 15:33 |
| Всем огромное спасибо за разьяснения |