
Z9411_Чурилов_ММ_ЛР2
.docxМИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ
Федеральное государственное автономное образовательное учреждение высшего образования
«САНКТ-ПЕТЕРБУРГСКИЙ УНИВЕРСИТЕТ АЭРОКОСМИЧЕСКОГО ПРИБОРОСТРОЕНИЯ»
КАФЕДРА № 41
ЛАБОРАТОРНАЯ РАБОТА
ЗАЩИЩЕНА С ОЦЕНКОЙ
РУКОВОДИТЕЛЬ
доц., канд. техн. наук, доц. |
|
|
|
О. О. Жаринов |
должность, уч. степень, звание |
|
подпись, дата |
|
инициалы, фамилия |
ОТЧЁТ О ЛАБОРАТОРНОЙ РАБОТЕ №2 |
Основы обработки аудиосигналов средствами MATLAB. Метод фильтрации в спектральном пространстве |
по курсу: Мультимедиа технологии |
|
|
РАБОТУ ВЫПОЛНИЛ
СТУДЕНТ ГР. № |
Z9411 |
|
|
|
А. С. Чурилов |
|
|
|
подпись, дата |
|
инициалы, фамилия |
Санкт-Петербург
2024
Цель работы
Изучить основы обработки аудиосигналов на примере метода фильтрации сигналов в спектральном пространстве.
Вариант задания:
Вариант №19.
Подавить уровень сигнала в диапазоне 45…55 Гц в 100 раз.
Для большей наглядности изменил диапазон на 45…450 Гц.
Ход работы:
Напишем, отладим и запустим на выполнение MATLAB-программу, которая реализует метод Фурье-фильтрации для заданного по варианту типа фильтра. Код программы приведён в листинге 1.
Листинг 1 – Код для реализации Фурье-фильтрации
clc, clear, close all % Очистка памяти [input_signal,Fd] = audioread('lr2_sound.mp3'); % Звуковой файл N = length(input_signal); % Получить длину данных аудиофайла t = 1:1:N;
plot(t./Fd,input_signal) % строим график исходного сигнала xlabel('Time'), ylabel('Audio Signal')
% Вычисляем спектр сигнала по отдельности в каждом канале: Spectr_input(:,1)=fft(input_signal(:,1)); Spectr_input(:,2)=fft(input_signal(:,2));
% Преобразовать в дБ: S_dB_input=20*log10(abs(Spectr_input(:,1))); f=0:(Fd/N):Fd/2; % Перевести абсциссу графика в Гц
% Строим график амплитудного спектра входного сигнала S_dB_input=S_dB_input(1:length(f));
% Зададим пределы для вывода по вертикали: MaxS = 20*ceil(max(S_dB_input)/20); MinS = MaxS - 120; figure(2), semilogx(f, S_dB_input); grid; axis([1 Fd/2 MinS MaxS]) xlabel('Частота (Гц)'); ylabel('Уровень (дБ)'); title('Амплитудный спектр исходного аудиосигнала'); legend('Audio');
% Создаем пустой массив для последующей записи вых. сигнала: output_signal_1 = zeros(N,2);
% создаем пустой массив для спектра вых. сигнала % небольшая константа добавляется, чтобы избежать lg(0) eps = MaxS*(1.0e-9); Spectr_output = zeros(size(Spectr_input))+ eps;
% задаем граничные частоты полосы пропускания фильтра, в Герцах lower_frequency = 45; upper_frequency = 450; % Увеличим значение верхней границы для наглядности
% переводим Герцы в целочисленные индексы массива: см. ф-лу (1) n_lower_frequency = round(N.*lower_frequency/Fd); n_upper_frequency = round(N.*upper_frequency/Fd);
% ******************************************************** Spectr_output_LOW = zeros(size(Spectr_input))+0.00001; Spectr_output_HIGH = zeros(size(Spectr_input))+0.00001;
for n =2:n_lower_frequency Spectr_output_LOW(n,:)=Spectr_input(n,:); Spectr_output_LOW(N+2-n,:)=Spectr_input(N+2-n,:); end
for n =2:n_upper_frequency Spectr_output_HIGH(n,:)=Spectr_input(n,:); Spectr_output_HIGH(N+2-n,:)=Spectr_input(N+2-n,:); end
Spectr_output_LOW(1,:)=Spectr_input(1,:); Spectr_output_HIGH(1,:)=Spectr_input(1,:);
Spectr_output_HIGH = Spectr_input - Spectr_output_HIGH; Spectr_output = Spectr_output_LOW + Spectr_output_HIGH;
Spectr_output = Spectr_output_HIGH - Spectr_output_LOW; Spectr_output = (1/100)*Spectr_input + Spectr_output ;
% ******************************************************
% обратное БПФ от модифицированного спектра: % раздельно для каждого канала output_signal_1(:,1) =ifft(Spectr_output(:,1)); output_signal_1(:,2) =ifft(Spectr_output(:,2));
% полезно вычислить спектр выходного сигнала % и построить его график: Spectr_output_real(:,1)=fft(output_signal_1(:,1)); S_dB_output_real=20*log10(abs(Spectr_output_real(:,1))); %в дБ f=0:(Fd/N):Fd/2; %Перевести Абсциссу в Гц S_dB_output_real = S_dB_output_real(1:length(f)); figure(3), semilogx(f, S_dB_output_real); grid; axis([1 Fd/2 MinS MaxS]) xlabel('Частота (Гц)'); ylabel('Уровень (дБ)'); title('Амплитудный спектр выходного аудиосигнала'); legend('Audio');
% Строим график изменённого сигнала figure(5) plot(t./Fd,output_signal_1) xlabel('Time'), ylabel('Audio Signal')
% Выводим графики исходного и изменённого звука от начала до конца start=1; stop=N; figure(4) subplot(2,1,1); plot(input_signal(start:stop)); subplot(2,1,2); plot(output_signal_1(start:stop));
% Создаём новый аудиофайл: audiowrite('lr2_output.wav', output_signal_1, Fd)
|
График исходного сигнала показан на рисунке 1.
Рисунок 1. График исходного сигнала
Амплитудный спектр исходного сигнала показан на рисунке 2.
Рисунок 2. Амплитудный спектр исходного сигнала
График изменённого сигнала показан на рисунке 3.
Рисунок 3. График изменённого сигнала
Амплитудный спектр изменённого сигнала показан на рисунке 4.
Рисунок 4. Амплитудный спектр изменённого сигнала
Графики исходного и изменённого сигналов для удобства показаны вместе на рисунке 5.
Рисунок 5. Графики сигналов
Как видно из графиков, сигнал действительно изменился. Если прослушать изменённую аудиозапись, то можно услышать, что человеческий голос стал тише и человек как будто говорит «в нос», а вот звук гитары особо не изменился в отличии от исходной аудиозаписи.
ВЫВОД
В ходе выполнения данной лабораторной работы я ознакомился с основными основами обработки сигналов средствами MATLAB, а также ознакомился с методом фильтрации в спектральном пространстве
В данной работе был изменён аудиофайл, путём подавления уровня сигнала в диапазоне 45…55 Гц в 100 раз.
После было проведено сравнение исходного и изменённого файла путём визуализации для того, чтобы убедиться, что всё было сделано верно.
Данная работа позволила мне получить знания по обработке и анализу аудиосигналов, а также получить основы программирования на языке MATLAB.
СПИСОК ИСПОЛЬЗУЕМЫХ ИСТОЧНИКОВ
Обработка звука – фильтры. / Дмитрий Михайлов // URL: http://websound.ru/articles/theory/filter.htm
Введение в цифровую обработку речевых сигналов: учеб. Пособие / Х.М. Ахмад, В.Ф. Жирков; Владим. Гос. ун-т. - Владимир: Изд-во Владим. Гос. ун-та, 2007. 192 с. ISBN 5-89368-751-5
Разработка программы для анализа звуковых файлов пакете MATLAB. // URL: https://gigabaza.ru/doc/106583.html
Алгоритм цифровой фильтрации в частотной и временной областях. // URL: http://stu.sernam.ru/book_g_rts.php?id=137
Фильтрация сигнала в частотной области - Цифровая обработка сигналов. // URL: http://www.cyberforum.ru/digital-signalprocessing/thread1663620.html
Дьяконов В. MATLAB 8.0 (R2012b): создание, обработка и фильтрация сигналов, Signal Processing Toolbox. // Компоненты и технологии, 2013. №11, с. 151-161.
Zvukogram. База звуковых эффектов для монтажа. // URL: https://zvukogram.com/category/
Помехи на радио (версия 4) https://zvukogram.com/index.php?r=site/download&id=29280
Болгарка https://zvukogram.com/index.php?r=site/download&id=24763
Звук цикла шума, производимого дизельнымhttps://zvukogram.com/index.php?r=site/download&id=36551