реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> DFT и IDFT программно для звукового сигнала, преобразовать туда и обратно
sergiator
сообщение Sep 20 2013, 11:04
Сообщение #1





Группа: Новичок
Сообщений: 2
Регистрация: 20-09-13
Пользователь №: 78 411



Здравствуйте!
Проблема: с помощью преобразования Фурье преобразую аудио сигнал (речь, файл in.wav в архиве) с временной в частотную форму а потом в обратно во временную.
В результирующем сигнале речь можно разобрать, но присутствует много посторонних звуков (файл out.wav в архиве). Понимаю, что перед каждым преобразованием (или после) нужно применять какие-то фильтры (по-моему, даже называются они оконные).
Объясните популярно, пожалуйста: какие фильтры (название) и в каком месте применять (до или после).

ЗЫ: Скорость преобразования не имеет значения - нужно просто разобраться что к чему. Поэтому использую не FFT, а DFT, код переделал от сюда (обратное) и от сюда (прямое)

Сообщение отредактировал sergiator - Sep 20 2013, 11:05
Прикрепленные файлы
Прикрепленный файл  example.zip ( 208.97 килобайт ) Кол-во скачиваний: 12
 
Go to the top of the page
 
+Quote Post
sergiator
сообщение Sep 20 2013, 12:14
Сообщение #2





Группа: Новичок
Сообщений: 2
Регистрация: 20-09-13
Пользователь №: 78 411



Цитата(sergiator @ Sep 20 2013, 14:04) *
Здравствуйте!
Проблема: с помощью преобразования Фурье преобразую аудио сигнал (речь, файл in.wav в архиве) с временной в частотную форму а потом в обратно во временную.
В результирующем сигнале речь можно разобрать, но присутствует много посторонних звуков (файл out.wav в архиве). Понимаю, что перед каждым преобразованием (или после) нужно применять какие-то фильтры (по-моему, даже называются они оконные).
Объясните популярно, пожалуйста: какие фильтры (название) и в каком месте применять (до или после).

ЗЫ: Скорость преобразования не имеет значения - нужно просто разобраться что к чему. Поэтому использую не FFT, а DFT, код переделал от сюда (обратное) и от сюда (прямое)


smile3046.gif Так, я натупил, но проблема осталась:
1) натупил: неправильно преобразовал данные из byte pcm (формат входящего файла) в double (необходимого для FFT) и обратно
2) проблема: все равно есть посторонние звуки (файл out2.wav)
Прикрепленные файлы
Прикрепленный файл  out2.wav ( 149.67 килобайт ) Кол-во скачиваний: 6
 
Go to the top of the page
 
+Quote Post
ukpyr
сообщение Sep 20 2013, 13:01
Сообщение #3


Профессионал
*****

Группа: Участник
Сообщений: 1 264
Регистрация: 17-06-08
Из: бандустан
Пользователь №: 38 347



попробуйте умножить вх.сигнал на какое-нибудь окно:
http://ru.wikipedia.org/wiki/%D0%9E%D0%BA%...%80%D1%8C%D0%B5
Go to the top of the page
 
+Quote Post
andyp
сообщение Sep 20 2013, 13:19
Сообщение #4


Местный
***

Группа: Участник
Сообщений: 453
Регистрация: 23-07-08
Пользователь №: 39 163



Вам бы про свертку в частотной области (convolution in frequency domain) почитать.
Go to the top of the page
 
+Quote Post
Corner
сообщение Sep 20 2013, 18:07
Сообщение #5


Профессионал
*****

Группа: Участник
Сообщений: 1 072
Регистрация: 11-12-12
Пользователь №: 74 815



Для начала надо понять, что Фурье в лоб для звука не пригодно. Надо преобразовывать с перекрытием. Если берете, для примера, 8192 точки то перекрытие желательно 6144 точки (сдвиг на 2048). И при обратном преобразовании результат надо усреднять по числу перекрывающихся областей (в данном случае по 4-ем).

Сообщение отредактировал Corner - Sep 20 2013, 19:11
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd June 2025 - 21:11
Рейтинг@Mail.ru


Страница сгенерированна за 0.01384 секунд с 7
ELECTRONIX ©2004-2016