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

Теория / мт__МТ__лаб02

.pdf
Скачиваний:
0
Добавлен:
25.04.2024
Размер:
488.56 Кб
Скачать

Лабораторная работа №2.

Основы обработки аудиосигналов средствами MATLAB. Метод фильтрации в спектральном пространстве

Цель работы. Изучить основы обработки аудиосигналов на примере метода фильтрации сигналов в спектральном пространстве.

Краткие теоретические сведения

Фильтрация является одним из широко применяемых методов обработки сигналов вообще и аудиосигналов в частности. К методам фильтрации часто прибегают, когда есть основания полагать, что в аудиозаписи имеется несколько источников звука, и хочется подчеркнуть или ослабить звучание одного из них. Кроме того, посредством фильтрации можно достичь эффектов, имитирующих звучание, характерное для записи звука в различных замкнутых помещениях, а также, наоборот, “выровнять” нежелательную неравномерность частотной характеристики примененных ранее средств записи аудиосигнала.

Методологической основой фильтрации является тот факт, что любая функция (а оцифрованный звук представляет собой набор последовательных значений некоторой неизвестной сложной функции) может быть представлена суммой множества гармонических компонентов с различными частотами и фазами. Всевозможные аудиосигналы любой природы содержат в себе в различных сочетаниях колебания с частотами от 20 Гц до 20 кГц, причем частотные характеристики многих источников звуковых колебаний хорошо известны.

Например, частотный диапазон человеческого голоса представлен последовательностью тонов, плавно сменяющих друг друга во времени, каждый из которых находится в пределах границ между самым низким и самым высоким звуками: обычно от 64 до 1400 Гц [1].

Частотные диапазоны человеческого голоса (в Герцах):

-бас: 75-300,

-баритон: 100-400,

-тенор: 120-500,

-контральто: 170-780,

-меццо-сопрано: 200-900,

-сопрано: 230-1000,

-колоратурное сопрано: 260-1400.

Частотные диапазоны аудиосигналов некоторых музыкальных инструментов:

-контрабас: 40-300,

-виолончель - 65-880,

-скрипка - 210-2800,

-кларнет - 140-1980,

-флейта - 240-2300,

1

© Жаринов О.О. Учебно-методические материалы к выполнению лабораторной работы №1 по дисциплине “Мультимедиа-технологии”, гр.4016,4017. ГУАП, 2024. – 10 с.

-тромбон - 80-500,

-труба - 160-990.

Электронные синтезаторы позволяют формировать звуки в любом сочетании отдельных частотных составляющих.

Компоненты человеческого голоса можно условно разделить на три диапазона [2], согласно входящим в них звукам: взрывным, гласным и шипящим. Взрывные звуки лежат в диапазоне от 125 Гц до 250 Гц и "отвечают" за разборчивость речи, так как именно они позволяют нам определить, кто именно говорит. На долю гласных, которые лежат в диапазоне от 350 Гц до 2000 Гц, приходится максимальное количество голосовой энергии. Шипящие в диапазоне от 1500 Гц до 4000 Гц несут сравнительно мало энергии, однако от них зависит четкость и разборчивость речи. Частотный диапазон от 63 Гц до 500 Гц содержит около 60% всей энергии голоса, однако на его долю приходится лишь 5% информационного наполнения речи. Диапазон от 500 Гц до 1 кГц содержит около 35% информации, а остальные 60% информационного наполнения приходятся на долю "шипящего" диапазона от 1 кГц до 8 кГц, который несет лишь 5% энергии.

Для получения информации о частотном составе любых сигналов в дискретном времени существует специальный метод и алгоритм – быстрое преобразование Фурье (БПФ). В результате его применения к массиву {xn}, который представляет собой, например, последовательность оцифрованных значений звука, образуется массив значений спектра {Xn}. Значения спектра являются комплексными числами, а модуль каждого из них пропорционален амплитуде гармонического компонента, содержащегося в обрабатываемой записи аудисосигнала. Связь целочисленного индекса элементов массива {Xn} с частотой дается формулой

n=fNTД,

где TД – период дискретизации сигнала.

Существует также и алгоритм обратного действия (обратное БПФ): по массиву значений спектра {Xn} можно вычислить массив значений сигнала {xn} (иногда говорят “восстановить сигнал из его спектра”).

Идея метода фильтрации в спектральном пространстве (который также известен под названием “метод Фурье-фильтрации”) заключается в том, чтобы каким-то образом изменить спектр исходного сигнала и восстановить аудиосигнал из измененного спектра.

Таким образом, метод фильтрации реализуется в три шага:

1)производится вычисление спектра {Xn} исходного аудиосигнала {xn},

2)осуществляется изменение некоторого количества значений спектра

{Xn} в соответствии желаемыми частотными свойствами фильтра, в результате чего получается измененный спектр {Yn},

2

© Жаринов О.О. Учебно-методические материалы к выполнению лабораторной работы №1 по дисциплине “Мультимедиа-технологии”, гр.4016,4017. ГУАП, 2024. – 10 с.

3) выполняется формировании выходного аудиосигнала посредством вычисления обратного преобразования Фурье спектра {Yn}.

Процедура изменения спектра исходного сигнала при реализации методов линейной фильтрации реализуется как поэлементное умножение двух массивов: исходного спектра {Xn} и предварительно сформированного массива значений передаточной функции фильтра {Wn}:

Y

W

X

n

, для n 0,1, N 1.

n

n

 

 

(1)

При задании массива {Wn} исходят из требований к типу фильтрации. Например, если необходимо оставить без изменения частотные компоненты аудиосигнала в определенном диапазоне частот и максимально ослабить остальные компоненты, то используется следующий подход:

 

 

 

W

 

1, для n, соответствующих частотам, которые следует оставить неизменным и,

 

n

 

 

 

0, для n, соответствующих частотам, которые следует полностю подавить,

 

 

 

При реализации цифровых эквалайзеров можно задавать желаемый коэффициент пропускания, отличный от нуля, для разных частотных диапазонов, можно даже задавать функциональную зависимость желаемого коэффициента пропускания от частоты.

На практике, например, при обработке не очень качественных записей речевых сигналов бывает полезно несколько уменьшить уровень сигнала в области низких частот и "поднять" в диапазоне 1..5 кГц, что заметно улучшает субъективно воспринимаемую четкость и разборчивость речи. Подъем частотной характеристики в области 100..250 Гц делает звучание вокальных партий в музыкальных произведениях гулким и "грудным". Вырезание частотного диапазона 150..500 Гц приводит к тому, что голос начинает звучать "как в трубе", открыто и пусто. "Провалы" отдельных участков в диапазоне 500..1000 Гц делают голос жестче, а подъемы в области 1 кГц и 3 кГц придают вокалу металлический "носовой" оттенок. Вырезание участков в диапазоне 2..5 кГц делает голос вялым, безжизненным и неразборчивым, а усиление частот 4..10 кГц приводит к появлению яркости и "искристости”.

При программной реализации метода фильтрации в спектральном пространстве, нужно обязательно выполнять требование комплексносопряженной симметрии [3] для задаваемого массива {Wn}:

W W *

 

, n 1,2,

N

1,

(3)

n

 

n N

2

 

 

 

 

 

 

где * означает операцию комплексного сопряжения (другими словами, если. например W2=0.5+j∙0.5, то нужно выполнить WN−2=0.5−j∙0.5). Значения W0 и

3

© Жаринов О.О. Учебно-методические материалы к выполнению лабораторной работы №1 по дисциплине “Мультимедиа-технологии”, гр.4016,4017. ГУАП, 2024. – 10 с.

WN/2 должны быть обязательно вещественными. Нужно заметить, что формула (3) записана для случая, когда индексация массива начинается с нуля. В Matlab индексация элементов массивов начинается с единицы и формулу (3) следует немного скорректировать достаточно очевидным образом.

На листинге 1 приведен пример программы, реализующей алгоритм полосовой Фурье-фильтрации аудиосигнала, в котором также используются последовательности команд для визуализации этапов обработки.

Листинг 1 – MATLAB-программа Фурье-фильтрации аудиосигнала (пример для полосового фильтра в диапазоне частот от 1500 до 2000 Гц).

clc, clear, close all %очистка памяти

[input_signal,Fd] = audioread('D:/input.wav');%звуковой файл %sound(input_signal,Fd); % проигрываем файл

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)); y=20*log10(abs(Spectr_input(:,1))); %Преобразовать в дБ f=[0:(Fd/N):Fd/2]; %Перевести абсциссу графика в Гц

%строим график амплитудного спектра входного сигнала y=y(1:length(f));

figure(2),

semilogx(f,y); grid; axis([1 Fd/2 -100 100]) xlabel('Частота (Гц)');

ylabel('Уровень (дБ)');

title('Амплитудный спектр исходного аудиосигнала'); legend('Audio');

%создаем пустой массив для последующей записи вых. сигнала: output_signal_1 = zeros(N,2);

%создаем пустой массив для спектра вых. сигнала

%небольшая константа добавляется, чтобы избежать lg(0) Spectr_output = zeros(size(Spectr_input))+0.00001;

%задаем граничные частоты полосы пропускания фильтра, в Герцах lower_frequency = 1500;

upper_frequency = 2000;

%переводим Герцы в целочисленные индексы массива: см. ф-лу (1) n_lower_frequency = round(N.*lower_frequency/Fd); n_upper_frequency = round(N.*upper_frequency/Fd);

%модифицируем спектр в соответствии с характеристикой фильтра

%в целом реализована концепция формул (2) и (3), но

; немного нетривиально и в несколько шагов

4

© Жаринов О.О. Учебно-методические материалы к выполнению лабораторной работы №1 по дисциплине “Мультимедиа-технологии”, гр.4016,4017. ГУАП, 2024. – 10 с.

%********************************************************

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,:);

%следует обратить внимание на измененную индексацию

%из-за того, что индексы в Matlab начинаются с единицы 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,:);

%по сути созданы 2 спектра, в которых сохранены низкие частоты

%от 0 до lower_frequency и от 0 до upper_frequency

%теперь вычитанием массивов создаем массив, в котором

%будут в наличии лишь компоненты

%с частотами от lower_frequency до upper_frequency

%т.е. будет реализован именно полосовой фильтр:

Spectr_output = Spectr_output_HIGH - Spectr_output_LOW; % ******************************************************

%посмотрим на график выходного спектра (только левый канал): y=20*log10(abs(Spectr_output(:,1))); %Преобразовать в дБ f=[0:(Fd/N):Fd/2]; %Перевести Абсциссу в Гц y=y(1:length(f));

figure(3), semilogx(f,y); grid; axis([1 Fd/2 -100 100]) xlabel('Частота (Гц)'); ylabel('Уровень (дБ)'); title('Амплитудный спектр выходного сигнала аудиофайла');legend('Audio');

%обратное БПФ от модифицированного спектра:

%раздельно для каждого канала

output_signal_1(:,1) =ifft(Spectr_output(:,1)); output_signal_1(:,2) =ifft(Spectr_output(:,2));

%можно прослушать результат фильтрации прямо в Matlab: sound(100*output_signal_1, Fd);

%выведем графики исходного аудиосигнала и после фильтрации:

%сейчас выводится весь график.

%можно модифицировать значения переменных start и stop,

%чтобы рассмотреть детали аудиосигнала на любом фрагменте 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('D:/output_filtered.wav', output_signal_1, Fd)

5

© Жаринов О.О. Учебно-методические материалы к выполнению лабораторной работы №1 по дисциплине “Мультимедиа-технологии”, гр.4016,4017. ГУАП, 2024. – 10 с.

Если нужно реализовать не полосовой, а любой из трех оставшихся типовых фильтров (фильтр нижних частот, фильтр верхних частот, широкополосный режекторный фильтр), а также изменить параметры фильтра, то в приведенном шаблоне программы необходимо модифицировать значения переменных lower_frequency, upper_frequency, а также заменить команды, которыми реализуется полосовой фильтр (фрагмент кода на листинге 1, расположенный между комментариями, состоящими из последовательности символов *) на один из трех возможных вариантов:

- для расчета ФНЧ частотой среза upper_frequency (фильтр оставляет неизменными компоненты с частотами, начиная от самый низких до указанной граничной, − звучание становится более “глухим” по сравнению с исходным):

Spectr_output = zeros(size(Spectr_input))+0.00001; for n =2:n_upper_frequency

Spectr_output(n,:)=Spectr_input(n,:); Spectr_output(N+2-n,:)=Spectr_input(N+2-n,:);

end Spectr_output(1,:)=Spectr_input(1,:);

- для расчета ФВЧ с частотой среза lower_frequency (фильтр оставляет неизменными компоненты с частотами, начиная от указанной граничной, более низкие частоты фильтр подавляет – из звука “уходят басы”):

Spectr_output = zeros(size(Spectr_input))+0.00001; for n =n_2:n_lower_frequency

Spectr_output(n,:)=Spectr_input(n,:); Spectr_output(N+2-n,:)=Spectr_input(N+2-n,:);

end Spectr_output(1,:)=Spectr_input(1,:);

Spectr_output = Spectr_input - Spectr_output;

- для расчета широкополосного режекторного фильтра (РФ) с частотами среза lower_frequency и upper_frequency (фильтр удаляет компоненты с частотами в указанном диапазоне, такие фильтры чаще всего используются для удаления “звенящих” помех из звука):

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,:);

6

© Жаринов О.О. Учебно-методические материалы к выполнению лабораторной работы №1 по дисциплине “Мультимедиа-технологии”, гр.4016,4017. ГУАП, 2024. – 10 с.

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;

Заметим, что, если нужно осуществить фильтрацию с не типовыми фильтрами, в которых компоненты сигнала в заданном диапазоне частот ослабляются практически полностью, а, например, когда нужно ослабить сигналы в каком-то диапазоне лишь частично, или даже когда нужно обеспечить усиление, тогда можно формировать выходной сигнал фильтра, смешивая результат фильтрации типовым фильтром и исходный сигнал до фильтрации, в необходимых пропорциях.

Например, если нужно поднять усиление в области высоких частот в 3 раза, то следует сначала модифицировать спектр в соответствии с ФВЧ, получив спектр Spectr_output_HP, в котором остались только компоненты с частотами выше заданной граничной частоты, а затем сформировать спектр выходного сигнала фильтра (Spectr_output) следующим образом:

Spectr_output = Spectr_input + 2.*Spectr_output_HP;

в результате в выходном сигнале будут представлены все частотные компоненты входного сигнала плюс увеличенные по уровню в 2 раза компоненты с частотами выше заданной. В итоге, общий уровень компонентов высоких частот окажется больше исходного в 1+2=3 раза.

Достоинство метода Фурье-фильтрации – простота, а для длинных записей звуковых файлов зачастую метод является довольно быстрым по сравнению с другими методами частотной фильтрации. Недостатком является невозможность реализовать плавное изменение параметров фильтрации, чтобы на разных участках записи образовывались разные звуковые эффекты.

Варианты заданий

Задание на лабораторную работу предполагает реализацию метода Фурье-фильтрации аудиофайла посредством фильтра с заданными свойствами. Аудиозапись каждый обучающийся выбирает самостоятельно, для чего при желании можно обратиться к открытой интернет-базе звуковых фрагментов [6]. При выполнении заданий, связанных с поднятием уровня сигнала, рекомендуется избегать использования аудиофайлов, записанных на уровнях громкости, близких к максимальным, поскольку велика вероятность возникновения эффекта ограничения (“перегрузки”), с возникновением заметных на слух “хрипов”. Если ограничение все же происходит (Matlab в процессе записи в файл выдаст предупреждающее сообщение со

7

© Жаринов О.О. Учебно-методические материалы к выполнению лабораторной работы №1 по дисциплине “Мультимедиа-технологии”, гр.4016,4017. ГУАП, 2024. – 10 с.

словосочетанием “data clipped”), то перед осуществлением фильтрации желательно программно уменьшить уровень сигнала, используя подходы, приведенные в теоретической части методических указаний к выполнению лабораторной работы №1.

Одним из необходимых требований к отчету о лабораторной работе является словесная формулировка изменения характера звучания аудиозаписи после обработки заданным фильтром. Если характер выбранной аудиозаписи таков, что внесенные изменения окажутся слабо выраженными, то обучающийся должен самостоятельно изменить значения граничных частот заданного по варианту фильтра (для ФНЧ, ФВЧ и ПФ эффект становится сильнее выражен при сужении полосы пропускаемых частот, для РФ – при расширении полосы подавляемых частот).

Варианты заданий приведены в таблице.

Таблица – Варианты заданий на реализацию фильтров

 

 

Граничные частоты полосы пропускания

Вар.

Тип фильтра

 

фильтра

 

 

fниж, Гц

 

fверх, Гц

1

полосовой фильтр

500

 

1000

2

фильтр нижних частот

0

 

2700

3

режекторный фильтр

1500

 

2000

4

фильтр высоких частот

3400

 

-

5

полосовой фильтр

400

 

3400

6

режекторный фильтр

150

 

500

7

фильтр нижних частот

0

 

600

8

фильтр высоких частот

800

 

-

9

Подавить уровень сигнала в диапазоне 300Гц..3 Гц в 30 раз

10

Подавить уровень сигнала в диапазоне 2..5 кГц в 30 раз

11

Поднять уровень сигнала в диапазоне 4..10к Гц в 3 раза

12

Поднять уровень сигнала в диапазоне 1..3 кГц в 2 раза, в диапазоне 3..5

 

кГц – в 4 раза

 

 

 

13

Поднять уровень сигнала в диапазоне 100..250 Гц в 3 раза

14

Поднять уровень сигнала в диапазоне 1..3 кГц в 4 раза

15

Подавить уровень сигнала в диапазоне 500..1000 Гц в 10 раз

16

Подавить уровень сигнала в диапазоне 1..3 кГц в 30 раз

17

Поднять уровень сигнала в диапазонах 20..250 Гц и 5..10кГц в 3 раза

18

Поднять уровень сигнала в диапазоне 1..3 кГц в 2 раза, в диапазоне

 

3..10 кГц – подавить в 10 раз

 

 

19

Подавить уровень сигнала в диапазоне 45..55 Гц в 100 раз

20

Поднять уровень сигнала в диапазоне 300Гц..3 кГц в 3 раза

8

© Жаринов О.О. Учебно-методические материалы к выполнению лабораторной работы №1 по дисциплине “Мультимедиа-технологии”, гр.4016,4017. ГУАП, 2024. – 10 с.

Порядок выполнения работы

1.Согласовать с преподавателем вариант задания во время занятия по расписанию, удостовериться в правильном понимании задания и критериев его оценки.

2.Написать MATLAB-программу, которая реализует метод Фурьефильтрации для заданного по варианту типа фильтра. Построив графики спектров звукового сигнала до и после фильтрации, убедиться в корректности решения. Оценить на слух изменения в звучании.

3.В случае, если изменения звучания оказываются слабо выраженными для того, чтобы это удалось внятно сформулировать, следует изменить значения граничных частот реализованного фильтра.

4.При желании можно выполнить дополнительное задание: создать файл аудиозаписи, в котором будет заметная на слух “звенящая” помеха и попробовать удалить ее, используя режекторный фильтр. В качестве основы для формирования исходной записи сигнала с помехой лучше всего подходит запись речевого сигнала, к которой следует добавить тональный сигнал (синусоидальное колебание), используя для этого навыки, приобретенные при выполнении лабораторной работы №1.

Содержание отчета

1.Цель работы.

2.Краткие теоретические сведения о задачах обработки аудиосигналов и их практическом применении, а также о методах фильтрации.

3.Программа, в которой представлены необходимые комментарии (назначение констант и переменных, функций, и т.п.), которые специфичны для полученного варианта задания.

4.Графики спектров до и после фильтрации, с соответствующими подрисуночными подписями, при необходимости – с исходно заданными параметрами фильтра и с измененными обучающимся.

5.Формулировка изменений, внесенных фильтров в характер звучания аудиозаписи, при необходимости – с исходно заданными параметрами фильтра и с измененными обучающимся.

6.Выводы, в которых отражены особенности изученных методов и свойства полученных результатов.

7.Список используемых источников, желательно не только из списка рекомендуемой литературы, приветствуется использование Интернетресурсов; на все источники в тексте отчета должны быть ссылки.

9

© Жаринов О.О. Учебно-методические материалы к выполнению лабораторной работы №1 по дисциплине “Мультимедиа-технологии”, гр.4016,4017. ГУАП, 2024. – 10 с.

Контрольные вопросы

1.Во сколько раз произошло подавление уровня сигнала, если по графику амплитудного спектра уровень компонента после фильтрации оказался ниже исходного на 46 dB (возможные модификации вопроса: на 3 dB, на 6 dB, на 12 dB, на 14 dB, на 20 dB, на 26 dB, на 34 dB)? Ответ необходимо уметь давать с точностью до единиц, не прибегая к помощи вычислительной техники.

2.На сколько децибел поднимется уровень сигнала, если увеличить значения всех отсчетов массива оцифрованного звука в 4 раза (варианты модификации вопроса: в 2 раза, в корень из двух раз, в 5 раз, в 10 раз, в 20 раз)? Ответ необходимо уметь давать с точностью до единиц, не прибегая к помощи вычислительной техники.

Рекомендуемая литература

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.Фильтрация сигнала в частотной области - Цифровая обработка сигналов. // URL: http://www.cyberforum.ru/digital-signal- processing/thread1663620.html

5.Дьяконов В. MATLAB 8.0 (R2012b): создание, обработка и фильтрация сигналов, Signal Processing Toolbox. // Компоненты и технологии, 2013. №11, с. 151-161.

6.Zvukogram. База звуковых эффектов для монтажа.

//URL: https://zvukogram.com/category/

10

© Жаринов О.О. Учебно-методические материалы к выполнению лабораторной работы №1 по дисциплине “Мультимедиа-технологии”, гр.4016,4017. ГУАП, 2024. – 10 с.

Соседние файлы в папке Теория