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

ЛР1 / мт + МТ - лаб_01

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

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

Основы обработки аудиосигналов средствами MATLAB

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

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

Аудиоданные для обработки представляют собой файлы данных, представленные в одном из стандартных форматов кодирования. Средства MATLAB позволяют считывать и записывать аудиоданные, закодированные в форматах *.wav и *.mp3, посредством стандартных команд:

[data,Fd] = audioread('имя файла на диске ПК'),

и

audiowrite('имя файла на диске ПК', data, Fd)

где data представляет собой массив, либо матрицу (для стереозвука), параметр Fd определяет частоту дискретизации. Для музыкальных файлов обычно используется стандартное значение частоты дискретизации 44100 Гц, хотя, при записи речевых сигналов нередко используется меньшее значение Fd=8000 Гц. Важно чтобы частота дискретизации выходного звукового файла, полученного после обработки, была бы такой же, как у исходного файла.

Врезультате выполнения функции audioread в переменную data будет перемещено всё содержимое указанного файла. Строки матрицы data соответствуют отсчётам сигнала, столбцы – каналам, которых в звуковом файле может быть несколько (обычно два).

Взвуковом файле отсчёты сигнала представлены целыми числами со знаком, лежащими в диапазоне минус 128...+127 (8 бит на отсчёт, формат int8), либо минус 32768…+32767 (16 бит на отсчёт, формат int16). Часто для улучшения точности обработки после считывания данных из файла их дополнительно преобразуют в формат высокой разрядности (double), а перед записью в файл производят преобразование в формат int16.

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

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

сразными частотами: в низкочастотном, среднечастотном и высокочастотном звуковом диапазоне.

1

© Жаринов О.О. Учебно-методические материалы к выполнению лабораторной работы №1 по дисциплине “Мультимедиа-технологии“, гр.4916,4917, 4918. Испр. 08.02.23. ГУАП, 2023. – 11 с.

Fd = 44100; % задаем стандартную частоту дискретизации в Гц Td = 1./Fd; % период дискретизации – обратный частоте

Ts = 5; % задаем длительность формируемого сигнала в секундах N = Fd*Ts; %количество дискретных отсчетов

f1=100; f2=1000; f3=5000; % частоты компонентов

A1=30; A2=30; A3=30; % амплитуды компонентов в процентах от максимума

A1=(A1/100)*32768; A2=(A2/100)*32768; A3=(A3/100)*32768; y=zeros(N,2);

for n=1:N

nt = 2*pi*n*Td;

if (n<N/3) y(n,1) = A1*sin(f1*nt); end

if ((n>=N/3) && (n<2*N/3)) y(n,1) = A2*sin(f2*nt); end if (n>=2*N/3) y(n,1) = A3*sin(f3*nt); end

y(n,2) = y(n,1); % формируем второй "стерео" канал звука

end

output_signal = int16(y); %задание разрядности данных sound(y,Fd); %проигрываем смоделированный cигнал

% записываем новый аудиофайл: audiowrite('D:/output_audio_model.wav', output_signal, Fd)

Рисунок 1 – MATLAB-программа в виде mat-файла, позволяющая формировать простейший аудиосигнал, проигрывать его и сохранять в файл.

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

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

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

-бас: 75-300,

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

-тенор: 120-500,

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

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

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

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

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

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

2

© Жаринов О.О. Учебно-методические материалы к выполнению лабораторной работы №1 по дисциплине “Мультимедиа-технологии“, гр.4916,4917, 4918. Испр. 08.02.23. ГУАП, 2023. – 11 с.

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

-альт - 130-1240,

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

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

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

-тромбон - 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} можно вычислить массив значений сигнала {xn}.

Метод фильтрации в частотной области. Если обработке подлежит записанная реализация {xn} (массив из N дискретных отсчетов), часто применяют метод фильтрации в спектральном пространстве (метод Фурьефильтрации). Идея метода заключается в вычислении спектра {Xn} исходного процесса {xn}, последующей модификации спектра в соответствии

3

© Жаринов О.О. Учебно-методические материалы к выполнению лабораторной работы №1 по дисциплине “Мультимедиа-технологии“, гр.4916,4917, 4918. Испр. 08.02.23. ГУАП, 2023. – 11 с.

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

Для модификации спектра исходного сигнала {Xn} необходимо задать массив отсчетов дискретной передаточной функции фильтра {Wn}, после чего выполнить преобразование

 

=

, для всех n.

(1)

 

 

 

 

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

= {1, для , соответствующих частотам полезного сигнала 0, для , не соответствующих частотам полезного сигнала

Связь целочисленного индекса элементов массива с частотой дается формулой

n=fNTД,

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

При реализации цифровых эквалайзеров можно задавать желаемый коэффициент пропускания, отличный от нуля, для разных частотных диапазонов, можно даже задавать функциональную зависимость желаемого коэффициент пропускания от частоты. Важно иметь в виду, что свойство симметрии алгоритма БПФ требует обязательного выполнения условия комплексно-сопряженной симметрии [3] для массива {Wn}.

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

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

4

© Жаринов О.О. Учебно-методические материалы к выполнению лабораторной работы №1 по дисциплине “Мультимедиа-технологии“, гр.4916,4917, 4918. Испр. 08.02.23. ГУАП, 2023. – 11 с.

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

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

[input_signal,Fd] = audioread('D:/output_audio_model.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*log(abs(Spectr_input(:,1)))/log(10); %Преобразовать в дБ 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);

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

Spectr_output = zeros(size(Spectr_input))+0.00001;

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

upper_frequency = 2000;

%переводим Герцы в целочисленные индексы массива

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

5

© Жаринов О.О. Учебно-методические материалы к выполнению лабораторной работы №1 по дисциплине “Мультимедиа-технологии“, гр.4916,4917, 4918. Испр. 08.02.23. ГУАП, 2023. – 11 с.

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*log(abs(Spectr_output))/log(10); %Преобразовать в дБ 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_audio_filtered.wav', output_signal_1, Fd)

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

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

6

© Жаринов О.О. Учебно-методические материалы к выполнению лабораторной работы №1 по дисциплине “Мультимедиа-технологии“, гр.4916,4917, 4918. Испр. 08.02.23. ГУАП, 2023. – 11 с.

- для расчета ФНЧ частотой среза 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,:); 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) следующим образом:

7

© Жаринов О.О. Учебно-методические материалы к выполнению лабораторной работы №1 по дисциплине “Мультимедиа-технологии“, гр.4916,4917, 4918. Испр. 08.02.23. ГУАП, 2023. – 11 с.

Spectr_output = Spectr_input + 2.*Spectr_output_HP;

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

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

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

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

 

 

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

Вар.

Тип фильтра

 

фильтра

 

 

fниж, Гц

 

fверх, Гц

1

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

500

 

1000

2

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

0

 

3000

3

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

1500

 

2000

4

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

3400

 

-

5

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

400

 

3400

6

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

150

 

500

7

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

0

 

1400

8

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

1000

 

-

9

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

10

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

11

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

 

кГц – в 4 раза

 

 

 

12

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

13

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

14

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

15

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

16

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

17

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

 

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

 

 

18

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

19

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

20

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

8

© Жаринов О.О. Учебно-методические материалы к выполнению лабораторной работы №1 по дисциплине “Мультимедиа-технологии“, гр.4916,4917, 4918. Испр. 08.02.23. ГУАП, 2023. – 11 с.

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

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

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

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

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

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

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

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

3.Описание тестовых сигналов, сформированных при выполнении первой части лабораторной работы.

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

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

6.Результаты прослушивания аудиосигналов после фильтрации.

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

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

9

© Жаринов О.О. Учебно-методические материалы к выполнению лабораторной работы №1 по дисциплине “Мультимедиа-технологии“, гр.4916,4917, 4918. Испр. 08.02.23. ГУАП, 2023. – 11 с.

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

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.Сизиков В.С., Лавров А.В. Устойчивые методы математикокомпьютерной обработки изображений и спектров. Учебное пособие. СПб: Университет ИТМО. 2018. 70 с.

7.Генерация сигналов в пакете Signal Processing.

//URL: https://megapredmet.ru/1-71591.html

10

© Жаринов О.О. Учебно-методические материалы к выполнению лабораторной работы №1 по дисциплине “Мультимедиа-технологии“, гр.4916,4917, 4918. Испр. 08.02.23. ГУАП, 2023. – 11 с.

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