ЛР2 / мт + МТ_лаб_02
.pdfЛабораторная работа №2.
Изучение методов фильтрации аудиосигналов в MATLAB. Применение рекурсивных фильтров
Цель работы. Получить навыки обработки аудиосигналов на примере методов фильтрации сигналов во временной области с использованием рекурсивных цифровых фильтров. Изучить концепцию формирующего фильтра для создания шумовых эффектов.
Краткие теоретические сведения
В предыдущей лабораторной работе был изучен принцип фильтрации аудиосигналов с использованием фильтрации в спектральном пространстве. Данный метод прост, но требует сравнительно большого объема вычислений. Фильтрацию можно производить без вычисления спектра обрабатываемой выборки, непосредственно во временной области. В частности, уравнение работы рекурсивного цифрового фильтра имеет вид
|
= ∑ −1 |
|
|
+ ∑ |
|
|
(1) |
|
=0 |
|
− |
=0 |
|
− |
|
Два массива коэффициентов фильтра ({am} и {bk}) полностью определяют характеристики фильтра. Заметим, что в системе MATLAB индексация элементов массивов ведется не с нуля, а с единицы, что требует выполнения элементарной модификации всех формул из учебных пособий. Правда, обычно, все стандартные задачи обработки сигналов в MATLAB можно решить вызовом стандартных функций [5].
Основная задача расчета рекурсивного фильтра заключается в выборе так называемого фильтра-прототипа некоторого порядка, и вычислении его коэффициентов {am} и {bk} по заданным частотным характеристикам фильтра. Для расчета фильтра существуют разные методы, наиболее простым из которых является метод обобщенного билинейного преобразования передаточной функции аналогового фильтра-прототипа.
На рисунке 1 приведен текст mat-файла, реализующий алгоритм полосовой фильтрации файла звукового сигнала в диапазоне частот от 200 до 1000 Гц на основе рекурсивного цифрового фильтра (РЦФ) на основе аналогового прототипа фильтра семейства Баттерворта 5-го порядка.
clc, clear, close all %очистка памяти
[input_signal,Fd] = audioread('D:/input_audio.wav');%звуковой файл
%sound(input_signal,Fd); % проигрываем файл
N = length(input_signal);%Получить длину данных аудиофайла
IIR_Ord=5; % задаем порядок фильтра-прототипа
1
© Жаринов О.О. Учебно-методические материалы к выполнению лабораторной работы №2 по дисциплине “Мультимедиа-технологии” гр.5916, 4917, 4918. ГУАП, 2023. – 7 с.
%задаем граничные частоты полосы пропускания фильтра low_freq = 200; up_freq = 1000;
%выполняем расчет РЦФ
[b,a] = butter(IIR_Ord,[2*low_freq./Fd 2*up_freq./Fd],'bandpass');
% осуществляем фильтрацию, вызывая стандартные функции матлаба output_signal=filter(b,a,input_signal);
Spectr_input=fft(input_signal); % вычисляем спектр входного сигнала - посмотреть
Spectr_output=fft(output_signal); % вычисляем спектр выходного сигнала - посмотреть
% строим графики спектров входного и выходного сигналов figure(1)
X=20*log(abs(Spectr_input))/log(10); %Преобразовать в дБ f=[0:(Fd/N):Fd/2]; %Перевести Абсциссу в Гц
X=X(1:length(f));
semilogx(f,X);
grid;
xlabel('Частота (Гц)','fontsize',11,'position',[180,-70.38,0]); ylabel('Уровень (дБ)');
title('Амплитудные спектры аудиофайлов');
hold on
Y=20*log(abs(Spectr_output))/log(10); %Преобразовать в дБ Y=Y(1:length(f));
hLine(2)=semilogx(f,Y);
figure(1) hold off
legend('input audio','output audio') % строим график АЧХ фильтра
H, F] = freqz(b,a, N,'whole',Fd); f=[0:(Fd/N):Fd/2]; W=H(1:length(f));
figure(2), semilogx(f, 20*log(abs(W))./log(10)), grid ylim([-110 10])
xlim([1 22000])
%осуществляем построение графиков входного и выходного сигналов
figure(3)
subplot(2,1,1); plot(input_signal); subplot(2,1,2); plot(output_signal);
%sound(output_signal,Fd); %проигрываем выходной сигнал после фильтрации
audiowrite('D:/output_audio_time_filtered.wav', output_signal, Fd)% записываем новый аудиофайл
Рисунок 1 – MATLAB-программа фильтрации аудиосигнала во временной
области посредством РЦФ (пример для реализации полосового фильтра)
2
© Жаринов О.О. Учебно-методические материалы к выполнению лабораторной работы №2 по дисциплине “Мультимедиа-технологии” гр.5916, 4917, 4918. ГУАП, 2023. – 7 с.
Можно заметить, что результаты фильтрации алгоритмом, рассматриваемым в данной работе, могут несколько отличаться от результатов, полученных в предыдущей работе, поскольку преобразование частотных свойств сигналов разными фильтрами происходит несколько поразному.
Если нужно реализовать не полосовой, а любой из трех оставшихся типовых фильтров (фильтр нижних частот, фильтр верхних частот, широкополосный режекторный фильтр) заданного семейства (filter_family), а также изменить параметры фильтра, то в приведенном шаблоне программы необходимо модифицировать значения переменных IIR_Ord, low_freq, up_freq, а также заменить строку, в которой реализуется расчет полосового фильтра
[b,a] = butter(IIR_Ord,[2*low_freq./Fd 2*up_freq./Fd],'bandpass');
на одну из трех строк:
- для расчета ФНЧ частотой среза up_freq:
[b a]=filter_family(IIR_Ord,2 .*up_freq./Fd,'low');
- для расчета ФВЧ с частотой среза low_freq:
[b a]=filter_family(IIR_Ord, 2.*low_freq./Fd,'high');
- для расчета широкополосного режекторного фильтра с частотами среза low_freq и up_freq:
[b a]=filter_family(IIR_Ord,[2.*low_freq./Fd 2.*up_freq./Fd],'stop');
В качестве имени вызываемой функции, обозначенной выше как filter_family, можно использовать следующие идентификаторы:
-butter – для фильтра семейства Баттерворта,
-cheby1 – для фильтра семейства Чебышева 1-го рода,
-cheby2 – для фильтра семейства Чебышева 2-го рода.
При вызове функции для расчета фильтра Чебышева нужно дополнительно указывать параметр допустимой неравномерности частотной характеристики (параметр Rp, от англ. Ripples), выражаемый в децибелах.
[b, a] = cheby1(IIR_Ord, Rp, 2*up_freq./Fd,'high');
На практике вещественное значение числового параметра Rp выбирают из интервала от 1 до 3.
3
© Жаринов О.О. Учебно-методические материалы к выполнению лабораторной работы №2 по дисциплине “Мультимедиа-технологии” гр.5916, 4917, 4918. ГУАП, 2023. – 7 с.
Заметим, что, если нужно осуществить фильтрацию с не типовыми фильтрами, когда компоненты сигнала в заданном диапазоне частот ослабляются практически полностью, а, например, когда их нужно ослабить сигналы в каком-то диапазоне лишь частично, или даже когда нужно обеспечить усиление, тогда можно формировать выходной сигнал фильтра, смешивая результат фильтрации типовым фильтром и исходный сигнал до фильтрации, в необходимых пропорциях.
Например, если нужно поднять усиление в области высоких частот в 3 раза, то следует сначала пропустить исходный сигнал (input_signal) через ФВЧ, получив процесс (назовем его output_signal_HP), в котором представлены только компоненты с частотами выше заданной частоты среза, а затем сформировать выходной сигнал фильтра (output_signal) следующим образом:
output_signal = input_signal + 2.* output_signal_HP;
в результате в выходном сигнале будут представлены все частотные компоненты входного сигнала плюс увеличенные по уровню в 2 раза компоненты с частотами выше заданной: итого, общий уровень компонентов высоких частот окажется больше исходного в 1+2=3 раза.
Помимо описанных ранее фильтров, существует особый класс избирательных фильтров, которые называются узкополосными: для них отношение центральной частоты полосы пропускания к полосе пропускания много больше единицы. Для реализации узкополосных полосовых цифровых фильтров в MatLAB существует специализированная функция, которая вызывается следующим образом:
output_signal = bandpass(input_signal, [low_freq up_freq], Fd);
От универсальной функции фильтрации она отличается тем, что не требует задания порядка фильтра (IIR_Ord), обеспечивая минимальнодостаточное значение порядка для решения большинства практических задач фильтрации аудиосигналов.
Использование фильтров в мультимедиа при обработке аудиосигналов не ограничивается только трансформацией свойств речевых, музыкальных и иных записей. Заметное место в мультимедиа отводится имитационному моделированию разнообразных шумовых эффектов (например, “звуки космического пространства”, и т.п.).
Для создания шумоподобных процессов с заданными акустическими свойствами производится фильтрация первичного искусственного создаваемого источника белого шума. В зависимости от свойств применяемого фильтра выходной сигнал оказывается “спектрально окрашенным”, что порождает специфические слуховые ощущения. Например, если применить полосовой фильтр с узкой полосой, то выходной
4
© Жаринов О.О. Учебно-методические материалы к выполнению лабораторной работы №2 по дисциплине “Мультимедиа-технологии” гр.5916, 4917, 4918. ГУАП, 2023. – 7 с.
шум будет восприниматься как “звенящий”, если применить фильтр нижних частот (lowpass), то аудиосигнал на выходе представляет собой приглушенный шум, напоминающий шум фонтана, шелест листвы, и т.д.
Смешивание нескольких шумов, а также модуляция амплитуды одного процесса другим позволяет получать разнообразные звуковые эффекты.
На рисунке 2 приведен пример программы, реализующей формирующий фильтр на основе двух узкополосных полосовых фильтров, когда процесс, формируемый одним фильтром, модулируется по амплитуде посредством процесса, сформированного другим фильтром.
clc, clear, close all
Fd = 44100; % задаем стандартную частоту дискретизации в Гц Td = 1./Fd; % период дискретизации – обратный частоте
Ts = 10; % задаем длительность формируемого сигнала в секундах N = Fd*Ts; %количество дискретных отсчетов
x1 = randn(N,2);
%параметры основного шума - граничные частоты в Гц: f1_low = 700; f1_up = 1300;
y1 = bandpass(x1, [f1_low, f1_up], Fd); x2 = randn(N,2);
%параметр низкочастотного модулирующего процесса, в Гц f2_low = 0.05;
[b a] = butter(2, 2*f2_low./Fd, 'low'); y2 = filter(b, a, x2);
%возможный вариант закона модуляции -
%убывание громкости со временем
for k=1:N y2(k,1)=exp(-6*(k)/N);
% y2(k,2)=y2(k,1); % такой же закон для второго канала
end
y2(:,2)= (fliplr(y2(:,1)'))'; % для второго канала -
противоположно y12 = y1 .* y2;
%y12 = y1; % для тестирования
%нормировка по амплитуде:
maxy12 = max(y12(:,:)); miny12 = min(y12(:,:)); norm1 = abs(miny12(1)); norm2 = abs(miny12(2));
if (maxy12(1)>abs(miny12(1))) norm1 = maxy12(1); end if (maxy12(2)>abs(miny12(2))) norm2 = maxy12(2); end y(:,1) = 8192.*(y12(:,1) ./ norm1);
y(:,2) = 8192.*(y12(:,2) ./ norm2);
output_signal = int16(y); %задание разрядности данных % записываем новый аудиофайл:
audiowrite('D:/output_audio_model.wav', output_signal, Fd);
% построение графиков сигналов start=1; stop=N;
figure(1)
subplot(2,1,1); plot(y(start:stop,1)); subplot(2,1,2); plot(y(start:stop,2));
Рисунок 2 – MATLAB-программа формирования шумоподобного сигнала.
5
© Жаринов О.О. Учебно-методические материалы к выполнению лабораторной работы №2 по дисциплине “Мультимедиа-технологии” гр.5916, 4917, 4918. ГУАП, 2023. – 7 с.
Варианты заданий
Задание на лабораторную работу включает 2 части:
1)Осуществить фильтрацию тех же сигналов, что и в предыдущей лабораторной работе с целью проведения сравнительного анализа. Тип и параметры фильтра также сохраняются.
2)Сформировать шумоподобный процесс с заданными акустическими свойствами в соответствии с личными предпочтениями посредством формирующего фильтра. В принципе, можно на первых этапах отказаться от модуляции по амплитуде и прослушать стационарно протекающий процесс. При выполнении лабораторной работы приветствуются нешаблонные решения. Например:
-можно применить детерминированный закон модуляции по амплитуде (например, нарастание или убывание громкости),
-можно использовать разные законы модуляции в разных каналах,
-можно сформировать несколько процессов с различными свойствами и просуммировать их,
-можно просуммировать несколько процессов с различными свойствами, применив к каждому процессу свой закон модуляции, так что в начале записи процесс обладает одними свойствами, а к концу – другими.
Порядок выполнения работы
1.Согласовать с преподавателем вариант задания во время занятия по расписанию, удостовериться в правильном понимании задания и критериев его оценки.
2.Написать MATLAB-программу, которая реализует метод фильтрации на основе рекурсивного цифрового фильтра. Протестировать полученную программу на модельном файле аудиосигнала, сформированном в предыдущей лабораторной работе. Проиграв полученный звуковой файл данных, убедиться к корректности решения.
3.Обработать реальный аудиофайл из предыдущей лабораторной работы при помощи написанной программы. Желательно сравнить полученные результаты с результатами предыдущей лабораторной работы. После прослушивание аудиозаписи после фильтрации следует сформулировать выводы.
4.Выполнить моделирование шумоподобного процесса с заданными акустическими свойствами, используя формирующий фильтр. Прослушать результат и сформулировать свои ощущения от прослушивания.
6
© Жаринов О.О. Учебно-методические материалы к выполнению лабораторной работы №2 по дисциплине “Мультимедиа-технологии” гр.5916, 4917, 4918. ГУАП, 2023. – 7 с.
Содержание отчета
1.Цель работы.
2.Краткие теоретические сведения о задачах обработки аудиосигналов и их практическом применении, а также о методах фильтрации.
3.Описание тестовых сигналов, используемых при выполнении лабораторной работы.
4.Программа с необходимыми комментариями (назначение констант и переменных, функций, и т.п.).
5.Полученные графики частотных характеристик фильтра, спектров входного и выходного сигнала фильтра при различных исходных данных с соответствующими подрисуночными подписями.
6.Описание результатов слухового восприятия реального аудиосигнала после фильтрации.
7.Программа, формирующая шумоподобный сигнал на основе формирующего фильтра, с заданными акустическими свойствами.
8.Описание результатов слухового восприятия сформированного шумоподобного сигнала.
9.Выводы, в которых отражены особенности изученных методов и свойства полученных результатов.
10.Список используемых источников, желательно не только из списка рекомендуемой литературы, приветствуется использование Интернетресурсов; на все источники в тексте отчета должны быть ссылки.
Рекомендуемая литература
1. Введение в цифровую обработку речевых сигналов: учеб. пособие / Х.М. Ахмад, В.Ф. Жирков; Владим. гос. ун-т. - Владимир: Изд-во Владим. Гос. ун-та, 2007. 192 с. ISBN 5-89368-751-5
2.Разработка программы для анализа звуковых файлов пакете MATLAB.
//URL: https://gigabaza.ru/doc/106583.html
3.Алгоритм цифровой фильтрации в частотной и временной областях.
//URL: http://stu.sernam.ru/book_g_rts.php?id=137
4.Дьяконов В. MATLAB 8.0 (R2012b): создание, обработка и фильтрация сигналов, Signal Processing Toolbox. // Компоненты и технологии, 2013. №11, с. 151-161.
7
© Жаринов О.О. Учебно-методические материалы к выполнению лабораторной работы №2 по дисциплине “Мультимедиа-технологии” гр.5916, 4917, 4918. ГУАП, 2023. – 7 с.