Форум программистов, компьютерный форум, киберфорум
Matlab
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.92/26: Рейтинг темы: голосов - 26, средняя оценка - 4.92
12 / 12 / 1
Регистрация: 11.01.2013
Сообщений: 150
1

Построение спектра по звуку и обратно

02.06.2014, 21:13. Показов 5399. Ответов 9
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте! Решил попробовать поработать со звуком. Есть дискретный сигнал, записанный с микрофона, пару слов. Хотел построить спектр, выделить голос, подавить шумы и обратно перейти к сигналу. Может кто знает, как можно реализовать? Пробовал получить спектр через fft, не получилось...скорее всего не правильно делаю....
Помогите пожалуйста разобраться...
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.06.2014, 21:13
Ответы с готовыми решениями:

построение спектра
Драсуте) как можно построить спектр по этому сигналу??

Построение спектра
Здравствуйте. Должен сказать, что данная тема обсуждалась не раз и я читал и этот форум тоже, но до...

Построение спектра сигнала
Доброе время суток, ув. форумчане. Передо мной стояла задача построить спектр сигнала. Есть сам...

Построение спектра сигналов
Сигнал состоит из нижней половины синусоиды и единичного прямоугольного импульса. ...

9
41 / 41 / 9
Регистрация: 22.10.2012
Сообщений: 91
02.06.2014, 23:07 2
Почему вы решили, что не получилось?
Вот есть суровая деревенская версия:
Matlab M
1
2
3
4
5
6
7
8
9
10
[s, Fs] = wavread('Sound 1.wav');
sp = fft(s);
figure
plot(abs(sp));
fb = 1.2e4; %% по спектру определили, где кончается полезные частотные составляющие
sp(fb:size(sp,1)-fb,:)=0; %%обнулили остальные частоты
figure
plot(abs(sp));
sn = ifft(sp);
wavwrite(sn,Fs,'Sound Pure');
Естесственно, высокие частоты срезали, и голос стал ниже
Вложения
Тип файла: rar Sound 1.rar (339.8 Кб, 42 просмотров)
0
12 / 12 / 1
Регистрация: 11.01.2013
Сообщений: 150
04.06.2014, 17:23  [ТС] 3
Проанализировал ваш пример...а разве спектр не должен быть по частотам? То есть нужно получить зависимость амплитуд от частоты, а у вас на графике получается не от частоты зависит, а от количества амплитуд, да и графики симметричны....Вот к примеру спектр, построенный по данному сигналу.
Миниатюры
Построение спектра по звуку и обратно   Построение спектра по звуку и обратно  
0
41 / 41 / 9
Регистрация: 22.10.2012
Сообщений: 91
04.06.2014, 17:53 4
Спектр кажется относительно отсчетов, т.к. я не делал частотную сетку. А спектр повторяется из-за свойства симметрии преобразования Фурье можно убедиться тут
попробуйте построить спектр строчкой pwelch(s,[],[],[],Fs)
1
12 / 12 / 1
Регистрация: 11.01.2013
Сообщений: 150
04.06.2014, 18:03  [ТС] 5
Да,использовал данный метод Он хороший, показывает то, что нужно, только вот не нашел, как обратно перейти ко временной зависимости сигнала...Есть обратная функция, или нужно через ifft пробовать? Спасибо!
0
41 / 41 / 9
Регистрация: 22.10.2012
Сообщений: 91
04.06.2014, 18:31 6
Razangann, так ведь функцией pwelch сам сигнал мы не трогали, s как был, так и остался. Если сигнал после фильтрации, то ifft, да.
1
12 / 12 / 1
Регистрация: 11.01.2013
Сообщений: 150
04.06.2014, 18:37  [ТС] 7
Matlab M
1
2
3
sp=pwelch(s,[],[],[],Fs);
sp(750:1500)=0;
sn=ifft(sp);
Получается откровенно совсем другое....
график 1 - исходный сигнал
график 2 - спектр, полученный с помощью pwelch()
график 3 - спектр, в котором срезал часть частот
график 4 - переход к сигналу с помощью ifft(), взят по модулю abs()
Как привести к нормальному виду график 4?
Нет ли обратной функции pwelch? Или как-то подкорректировать ifft?
Миниатюры
Построение спектра по звуку и обратно  
0
41 / 41 / 9
Регистрация: 22.10.2012
Сообщений: 91
04.06.2014, 19:53 8
Я так понял, что pwelch нужен чисто для анализа, дальше с ним дело лучше не иметь. Заметьте, что выходной массив после pwelch гораздо короче, чем массив сигнала. Поэтому лучше оцените спектр, а дальше работайте с фильтром, для НЧ-фильтрации подойдет фильтр Баттерворта
Matlab M
1
2
[b,a] = butter(порядок фильтра,частота среза/(0.5*Fs));
y = filter(b,a,массив сигнала);
y - выходной сигнал. Его спектр можно снова оценить через pwelch
1
12 / 12 / 1
Регистрация: 11.01.2013
Сообщений: 150
04.06.2014, 20:06  [ТС] 9
Не то....( Нужно получить именно спектр, а не создавать фильтр частот. Нужно наглядно получить спектр, с которым можно и поиграть, а затем отредактированный спектр преобразовать в сигнал...
0
41 / 41 / 9
Регистрация: 22.10.2012
Сообщений: 91
04.06.2014, 20:47 10
Тогда, в силу моей компетенции в этом вопросе, возвращаемся к тому, с чего начали. В-принципе, тоже самое, только теперь мы можем заявить, с какой частоты обрезали. Если нужно что-то хитрее, то это уже нужно искать, читать. Может быть, много читать.
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
[s, Fs] = wavread('Sound 1.wav');
sp = fft(s);
F = (1:length(sp))*(Fs/2)/length(sp); %%частотная сетка
figure(1)
plot(F,abs(sp));
fb = 1500; %% по спектру определили, где кончается полезные частотные составляющие
fbs = round(fb*length(sp)/(Fs/2)); %% пересчитали частоту в отсчеты спектра
sp(fbs:size(sp,1)-fbs,:)=0; %%обнулили остальные частоты
figure(2)
plot(F,abs(sp));
sn = ifft(sp);
wavwrite(sn,Fs,'Sound Pure');
1
04.06.2014, 20:47
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.06.2014, 20:47
Помогаю со студенческими работами здесь

Построение графика спектра изображения
Здравствуйте! Подскажите, как построить график спектра изображения, если известна матрица самого...

Построение спектра ЛЧМ сигнала
Привет всем. Сам ЛЧМ сигнал построен, не удается построить спектр. Может кто-нибудь посмотреть?...

Построение динамического Фурье-спектра
Здравствуйте, уважаемые форумчане! Возникла такая проблемка - необходимо построить динамический...

Matplotlib построение каскадного спектра
У меня получилось построить каскадный спектр, но не могу форматировать ось X в datetime. Пробовал...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru