Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ЛР2 / мт + МТ_лаб_02

.pdf
Скачиваний:
6
Добавлен:
25.06.2023
Размер:
620.91 Кб
Скачать

Лабораторная работа №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 с.

Соседние файлы в папке ЛР2