Добавил:
t.me Инфо для ГУАП студентов от меня: https://kafaka.notion.site/99e6d9b70ca74f7baef3daea17839e5a Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

LR2 / Z9411_КафкаРС_ММТ_ЛР2

.pdf
Скачиваний:
1
Добавлен:
18.06.2024
Размер:
430.3 Кб
Скачать

МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ федеральное государственное автономное образовательное учреждение высшего образования

«САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ АЭРОКОСМИЧЕСКОГО ПРИБОРОСТРОЕНИЯ»

ИНСТИТУТ НЕПРЕРЫВНОГО И ДИСТАНЦИОННОГО ОБРАЗОВАНИЯ

КАФЕДРА 41

ОЦЕНКА

 

 

 

 

ПРЕПОДАВАТЕЛЬ

 

 

 

 

 

доц., канд. техн. наук, доц.

 

 

 

О. О. Жаринов

 

должность, уч. степень, звание

 

подпись, дата

 

инициалы, фамилия

ЛАБОРАТОРНАЯ РАБОТА №2

ОСНОВЫ ОБРАБОТКИ АУДИОСИГНАЛОВ СРЕДСТВАМИ MATLAB. МЕТОД ФИЛЬТРАЦИИ В СПЕКТРАЛЬНОМ ПРОСТРАНСТВЕ

по дисциплине: Мультимедиа технологии

РАБОТУ ВЫПОЛНИЛ

 

 

 

 

 

СТУДЕНТ гр. №

Z9411

 

 

 

Р. С. Кафка

 

номер группы

подпись, дата

 

инициалы, фамилия

 

 

 

 

Студенческий билет №

2019/3603

 

 

 

 

 

 

 

 

 

Шифр ИНДО

Санкт-Петербург 2024

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

метода фильтрации сигналов в спектральном пространстве.

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

аудиосигналов и их практическом применении, а также о методах

фильтрации.

Фильтрация аудиосигналов является ключевым аспектом их обработки,

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

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

режекторные фильтры), а также метод быстрого преобразования Фурье (БПФ),

позволяющий перевести сигнал из временного пространства в частотное.

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

коррекции акустических искажений.

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

2

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

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

Индивидуальный вариант

Вариант №8 приведён в таблице 1.

Таблица 1 – Индивидуальный вариант задания

 

 

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

Вариант

Тип фильтра

пропускания фильтра

 

 

fниж, Гц

fверх, Гц

8

Фильтр высоких

800

-

частот

 

 

 

Ход работы

Для лабораторной работы был создан аудиофайл, который содержит как низкочастотные (300 Гц), так и высокочастотные (2100 Гц) компоненты. Этот файл будет хорошо подходить для демонстрации эффекта применения фильтра высоких частот с граничной частотой 800 Гц, так как после фильтрации мы должны заметить, что низкочастотный компонент (300 Гц) будет значительно подавлен или полностью удален, в то время как высокочастотный компонент (2100 Гц) останется. Для генерации аудиофайла, где диапазон частот плавно увеличивается от 300-400 Гц до 2000-2100 Гц был написан код на языке Python, который представлен в листинге 1.

Листинг 1 – Код для генерации аудиофайла

3

from scipy.io.wavfile import write import numpy as np

# Параметры аудиосигнала

Fs = 44100 # частота дискретизации duration = 5 # длительность в секундах

t = np.linspace(0, duration, int(Fs*duration), endpoint=False)

#Параметры для увеличивающегося диапазона частот start_freq = 300 # начальная частота диапазона end_freq = 2000 # конечная частота диапазона freq_range = 100 # ширина диапазона частот

#Инициализация сигнала

signal_sweep = np.zeros_like(t)

# Генерация сигнала

for i in range(int(duration * Fs)):

# Текущая частота в центре диапазона

current_freq = start_freq + (end_freq - start_freq) * (i / (duration * Fs))

# Генерация сигнала для текущего момента времени с учетом диапазона

for j in range(-freq_range // 2, freq_range // 2, 10): #

шаг в 10 Гц для генерации "плавности"

signal_sweep[i] += np.sin(2 * np.pi * (current_freq + j) * i / Fs)

# Нормализация сигнала

signal_sweep = np.int16((signal_sweep / signal_sweep.max()) * 32767)

# Запись в файл

filename_sweep = 'frequency_sweep_signal.wav' write(filename_sweep, Fs, signal_sweep)

Этот код создаёт сигнал, в котором частота постепенно увеличивается от заданного начального до конечного значения с диапазоном в 100 Гц, что создаёт уникальный звуковой эффект. Затем сигнал записывается в WAVфайл. Сгенерированный файл представлен на рисунке 1.

4

Рисунок 1 – Сгенерированный аудиофайл

Описание переменных, использованных в Python коде, представлено в таблице 1.

Таблица 1 – Список переменных программы генерации аудиофайла

Переменная

Тип

Описание

 

 

 

Fs

int

Частота дискретизации аудиосигнала (в Гц).

 

 

 

duration

int

Длительность аудиосигнала (в секундах).

 

 

 

t

ndarray

Массив времени, используемый для генерации аудиосигнала.

 

 

 

start_freq

int

Начальная частота диапазона (в Гц), с которой начинается

 

 

увеличение частоты в аудиосигнале.

 

 

 

end_freq

int

Конечная частота диапазона (в Гц), до которой происходит

 

 

увеличение частоты.

 

 

 

freq_range

int

Ширина диапазона частот, который плавно увеличивается (в

 

 

Гц).

signal_sweep

ndarray

Массив аудиосигнала, содержащий увеличение частот в

 

 

заданном диапазоне.

 

 

 

filename_sweep

str

Имя файла, в который записывается сгенерированный

 

 

аудиосигнал.

Далее была написана MATLAB-программа, которая реализует метод Фурье-фильтрации для фильтра высоких частот (ФВЧ) с граничной частотой 800 Гц. Код представлен в листинге 2.

Листинг 2 – Код для реализации Фурье-фильтрации

%MATLAB-программа для Фурье-фильтрации с ФВЧ clc; clear; close all;

%Загрузка аудиосигнала

[file,path] = uigetfile({'*.wav;*.mp3'},'Выберите аудиофайл для обработки');

5

[signal, Fs] = audioread([path file]); % Fs - частота дискретизации

if size(signal, 2) > 1

signal = mean(signal, 2); % Конвертация в моно, если необходимо

end

%Временной массив для графика t = (0:length(signal)-1)/Fs;

%Вычисление спектра сигнала

Spectrum = fft(signal);

f = Fs*(0:(length(signal)/2))/length(signal); % Частотный массив для графика

%Определение граничной частоты для ФВЧ

f_cutoff = 800; % Граничная частота в Гц

n_cutoff = round(f_cutoff/(Fs/length(signal))); % Индекс в массиве спектра

% Создание массива фильтра

H = ones(length(Spectrum), 1); % Инициализация фильтра единицами

H(1:n_cutoff) = 0; % Подавление низких частот H(end-n_cutoff+1:end) = 0; % Зеркальное подавление для отрицательных частот

%Применение фильтра

FilteredSpectrum = Spectrum .* H;

%Обратное преобразование Фурье для получения отфильтрованного сигнала

filtered_signal = real(ifft(FilteredSpectrum));

%Построение графиков

figure;

subplot(2,2,1); plot(t, signal);

title('Исходный сигнал'); xlabel('Время (с)'); ylabel('Амплитуда');

subplot(2,2,2);

plot(f, abs(Spectrum(1:length(f)))); title('Спектр исходного сигнала'); xlabel('Частота (Гц)'); ylabel('|S(f)|');

subplot(2,2,3);

plot(t, filtered_signal); title('Отфильтрованный сигнал'); xlabel('Время (с)'); ylabel('Амплитуда');

6

subplot(2,2,4);

plot(f, abs(FilteredSpectrum(1:length(f)))); title('Спектр отфильтрованного сигнала'); xlabel('Частота (Гц)');

ylabel('|S(f)|');

% Воспроизведение исходного и отфильтрованного сигналов для оценки на слух

disp('Воспроизведение исходного сигнала...'); sound(signal, Fs);

pause(length(signal)/Fs + 1); % Пауза для окончания воспроизведения

disp('Воспроизведение отфильтрованного сигнала...'); sound(filtered_signal, Fs);

Эта программа сначала загружает аудиофайл, выбранный пользователем, конвертирует его в моно (если это необходимо), а затем применяет ФВЧ с граничной частотой 800 Гц. После фильтрации программа строит графики исходного и отфильтрованного сигналов во временной области, а также их спектры в частотной области. В конце программа воспроизводит исходный и отфильтрованный сигналы, чтобы вы могли оценить изменения на слух.

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

Полученные графики представлены на рисунке 2.

7

Рисунок 2 – Графики спектров до и после фильтрации для сгенерированного аудиофайла

Также был проведен тест с использованием аудиофрагмента из песни "

Rick Astley - Never Gonna Give You Up" (первые 10 секунд). Графики представлены на рисунке 3.

Рисунок 3 – Графики спектров до и после фильтрации для аудиофрагмента из песни

8

После применения фильтра высоких частот с граничной частотой 800 Гц к данному аудиофрагменту были зафиксированы следующие изменения в характере звучания:

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

Изменение общего восприятия трека: В целом музыкальное произведение приобрело более "лёгкое" и "воздушное" звучание за счёт уменьшения доминирования низких частот.

Таким образом, фильтрация значительно изменила атмосферу и настроение песни, подчеркнув высокочастотные элементы и сделав звучание более прозрачным.

9

ВЫВОД

Впроцессе выполнения данной лабораторной работы мной были изучены

ипрактически применены методы фильтрации аудиосигналов в спектральном пространстве. Основное внимание уделялось фильтру высоких частот (ФВЧ)

с заданной граничной частотой. Работа позволила глубже понять принципы обработки звуковых данных и их влияние на качество и характер звучания.

Быстрое преобразование Фурье (БПФ) является мощным инструментом для анализа частотного состава аудиосигналов. Это позволяет точно определить,

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

Фильтрация сигналов показала, как можно управлять звучанием, подавляя или акцентируя определённые частотные диапазоны. Применение ФВЧ с граничной частотой 800 Гц к различным аудиоматериалам, включая музыкальные композиции и специально подготовленные звуковые примеры,

продемонстрировало значительное влияние такой обработки на общее восприятие звука.

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

Разработка MATLAB-программы для фильтрации дала возможность укрепить практические навыки программирования и работы с аудиоданными,

что будет полезно в будущей профессиональной деятельности.

Экспериментирование с различными параметрами фильтра и типами аудиосигналов стимулировало творческий подход к задаче обработки звука,

позволяя исследовать новые способы изменения и улучшения аудиоматериалов.

10

Соседние файлы в папке LR2