
4
.docxМИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ
федеральное государственное автономное образовательное учреждение высшего образования
«САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
АЭРОКОСМИЧЕСКОГО ПРИБОРОСТРОЕНИЯ»
Кафедра 41
ПРЕПОДАВАТЕЛЬ
доц., к.т.н., доц. |
|
|
|
О. О. Жаринов |
должность, уч. степень, звание |
|
подпись, дата |
|
инициалы, фамилия |
Лабораторная работа №4
Применение формирующих фильтров для создания шумоподобных аудиосигналов
по курсу: Мультимедиа технологии
СТУДЕНТКА ГР. № |
Z0411 |
|
01.04.25 |
|
М. В. Карелина |
|
|
номер группы |
|
подпись, дата |
|
инициалы, фамилия |
Номер студенческого билета: 2020/3477
Санкт-Петербург
2025
Цель работы: Изучить методологию создания шумоподобных сигналов на основе формирующих фильтров.
Метод формирующего фильтра применяется для генерации шумоподобных аудиосигналов с заданными акустическими характеристиками. Он основывается на пропускании белого шума через фильтр, который изменяет его спектральные свойства. Это приводит к созданию "окрашенного" шума, способного имитировать различные природные звуки или использоваться для создания оригинальных аудиэффектов. Например, полосовые фильтры могут формировать шумы с частотами, похожими на колебания в определённых диапазонах, а фильтры низких частот — для воспроизведения звуков природы, таких как шум ветра или воды.
Различают несколько типов окрашенных шумов:
1. Белый шум: Имеет равномерную спектральную плотность мощности на всем частотном диапазоне и часто используется в качестве исходного сигнала для фильтрации.
2. Розовый шум: Его спектральная плотность мощности уменьшается с увеличением частоты, создавая мягкий звук, схожий с естественными звуками природы.
3. Коричневый (бурый) шум: Спектральная плотность мощности уменьшается быстрее, чем у розового шума, создавая глубокий и басовый звук.
4. Синий и фиолетовый шумы: У этих типов шумов спектральная плотность мощности возрастает с увеличением частоты, что приводит к высокочастотному звучанию.
5. Зеленый шум: Имеет пик спектральной плотности в области 500 Гц и имитирует звук листвы, колышущейся на ветру.
6. Серый шум: С учетом чувствительности человеческого слуха воспринимается как равномерный на всех частотах.
Использование формирующих фильтров для управления этими типами шумов позволяет создавать аудиосигналы с необходимыми акустическими свойствами. В зависимости от типа применяемого фильтра (низкочастотного, высокочастотного, полосового или режекторного) можно моделировать разнообразные звуковые эффекты.
В данной работе у меня было много попыток. Изначально я несколько раз пыталась создать звук рычания, но это никак не увенчалось успехом, в итоге я решила создать звук пения птиц, но по факту получился звук, напоминающий оригинальные звуки, исходящие от сверчков и лягушек. Результатом я довольна. Код программы приведен в Листинге 1.
Листинг 1. Моделирование звука с помощью белого шума и формирующих фильтров.
import numpy as np import matplotlib.pyplot as plt from scipy import signal from scipy.io.wavfile import write # Параметры Fs = 44100 # Частота дискретизации duration = 5 # Длительность звука в секундах N = int(Fs * duration) # Общее количество выборок f01 = 880 # Центральная частота первого фильтра f02 = 7 * f01 # Центральная частота второго фильтра ef1, ef2 = 0.03, 0.01 # половина относительной ширины полосы dn1, up1 = 1 - ef1, 1 + ef1 dn2, up2 = 1 - ef2, 1 + ef2 order = 2 # Генерация белого шума x = np.random.uniform(low=-1.0, high=1.0, size=(2, N)) # Создание полосовых фильтров sos1 = signal.butter(order, Wn=(f01 * dn1 / (Fs / 2), f01 * up1 / (Fs / 2)), btype='bandpass', output='sos') sos2 = signal.butter(order, Wn=(f02 * dn2 / (Fs / 2), f02 * up2 / (Fs / 2)), btype='bandpass', output='sos') # Применение фильтров к шуму y1 = signal.sosfilt(sos1, x[0]) y2 = signal.sosfilt(sos2, x[1]) # Создание сигмоидальной функции для изменения соотношения alfa = np.zeros((2, N)) for n in range(N): alfa[:, n] = 1 / (1 + np.exp(-10 * (2 * (n - N / 2) / N))) # Микширование сигналов с меняющимся во времени коэффициентами y = y1 * (1 - alfa[0]) + y2 * alfa[0] # Модуляция итогового сигнала Fm = 2 # Частота модуляции for n in range(N): alfa[:, n] = (0.5 * (1 - np.cos(2 * np.pi * Fm * n / Fs)))**2 y = y * alfa[0] # Применяем модуляцию # Нормализация итогового сигнала y /= np.max(np.abs(y)) # Нормализация # Сохранение результата в WAV файл write('LR4.wav', Fs, (y * 32767).astype(np.int16)) # Визуализация спектра Spectr_y = np.fft.fft(y) AS_y = np.abs(Spectr_y) eps = np.max(AS_y) * 1.0e-9 S_dB_y = 20 * np.log10(AS_y + eps) f = np.linspace(0, Fs / 2, N // 2) plt.figure(figsize=(8, 4)) plt.semilogx(f[:N // 2], S_dB_y[:N // 2], color='b') # slicing для соответствия длинам plt.grid(True, which='both', linestyle=":") plt.xlabel('Frequency (Hz)') plt.ylabel('Level (dB)') plt.title('Amplitude Spectrum of Generated Sound') plt.show() # Визуализация временного сигнала t = np.linspace(0, duration, N, endpoint=False) # Добавлено для создания временной оси plt.figure(figsize=(8, 4)) plt.plot(t[:2000], y[:2000]) plt.xlabel("Time (s)") plt.ylabel("Amplitude") plt.title("Time-domain Signal of Generated Sound") plt.show() print("Звук, похожий на пение птиц, был успешно сгенерирован и сохранен.") |
Код создан с использованием белого шума и полосовых фильтров. В начале импортируются необходимые библиотеки: numpy для численных вычислений, matplotlib для визуализации и scipy для обработки сигналов, а также сохранения аудиофайлов. Устанавливаются параметры, такие как частота дискретизации, равная 44100 Гц, и длительность звучания, равная 5 секундам. Также определяются центральные частоты для двух фильтров: первая частота составляет 880 Гц, а вторая — 7 раз выше первой. Для фильтров задаются значения относительной ширины полосы и порядок фильтра. Затем генерируется белый шум с равномерным распределением, который создаётся для двух каналов. После этого создаются два полосовых фильтра с помощью функции signal.butter, применяемых к сгенерированному белому шуму, что позволяет получить два разных аудиосигнала. В коде также создаётся сигмоидальная функция, которая плавно изменяет соотношение между двумя сигналами на протяжении времени. Эти два отфильтрованных сигнала комбинируются с изменяющимся во времени коэффициентом, чтобы добиться желаемого эффекта звучания. Получившийся звук сохраняется в формате WAV в файл с именем LR4.wav.
В результате работы получился аудиофайл, который напоминает звуки других животных, и графики получившегося сигнала, которые представлены на Рисунках 1 и 2.
Рисунок 1 - Амплитудный спектр
Рисунок 2 - Сигнал в временной области
Вывод
В ходе лабораторной работы была изучена методология создания шумоподобных сигналов с использованием формирующих фильтров. Основная идея заключается в том, чтобы пропускать белый шум через фильтры, которые изменяют его спектральные характеристики, создавая различные типы звуковых эффектов. Это может быть достигнуто с помощью различных типов фильтров, таких как фильтры нижних частот (ФНЧ), верхних частот (ФВЧ), полосовые фильтры и другие, которые позволяют «окрасить» шум в зависимости от нужных характеристик (например, частотной области или амплитудного спектра).
В процессе работы были проведены попытки создать звуки, напоминающие рычание и пение птиц. Однако, в результате применения выбранных фильтров, звук, который был получен, больше напоминал трели сверчков и кваканье лягушек. Это подчеркивает, что процесс создания и модификации звуковых сигналов с помощью формирующих фильтров может приводить к неожиданным результатам, поскольку итоговый звук зависит не только от используемого фильтра, но и от параметров белого шума и методов его обработки.
Таким образом, лабораторная работа продемонстрировала возможности и ограничения использования цифровой обработки сигналов для генерации природоподобных звуков, а также важность тщательной настройки параметров фильтров и шумового сигнала для достижения желаемого звучания.
Ссылка на аудиофайлы: https://drive.google.com/drive/folders/1-T1Y_1foDcRzw5ROi7un1AuykKyI-kU1?usp=drive_link
Список используемых источников
1. Жаринов О.О. Учебно-методические материалы к выполнению лабораторной работы №4 по дисциплине “Мультимедиа-технологии “. гр. Z0411. ГУАП, 2025. – 9 с. (Интернет-ресурс) // URL: https://pro.guap.ru/inside/student/tasks/20ecafed5f509289df455ec44add2fb9/download
2. Цвета шума. Википедия. // URL: https://ru.wikipedia.org/wiki/Цвета_шума
3. Морфинг (звуковой эффект). URL: // https://ru.wikipedia.org/wiki/Морфинг_(звуковой_эффект)
4. Алгоритм цифровой фильтрации в частотной и временной областях. // URL: http://stu.sernam.ru/book_g_rts.php?id=137