ГУАП
КАФЕДРА 41
ОТЧЕТ ЗАЩИЩЕН С ОЦЕНКОЙ
ПРЕПОДАВАТЕЛЬ
доцент, канд. тех. наук, доцент |
|
|
|
О. О. Жаринов |
должность, уч. степень, звание |
|
подпись, дата |
|
инициалы, фамилия |
ОТЧЕТ О ЛАБОРАТОРНОЙ РАБОТЕ № 4 |
ПРИМЕНЕНИЕ ФОРМИРУЮЩИХ ФИЛЬТРОВ ДЛЯ СОЗДАНИЯ ШУМОПОДОБНЫХ АУДИОСИГНАЛОВ НА PYTHON |
по курсу: Мультимедиа технологии |
|
|
РАБОТУ ВЫПОЛНИЛ
СТУДЕНТ ГР. № |
|
|
|
|
|
|
|
|
подпись, дата |
|
инициалы, фамилия |
Санкт-Петербург 2024
Цель работы
Изучить методологию создания шумоподобных сигналов на основе формирующих фильтров.
Теоретические сведения
Метод формирующего фильтра (ФФ) используется как для улучшения качества звука и удаления нежелательных шумов, так и для создания шумоподобных аудиосигналов с заданными акустическими свойствами. Основная идея метода заключается в пропускании через фильтр сигнала от искусственного создаваемого источника белого шума.
В зависимости от свойств применяемого фильтра выходной сигнал оказывается «спектрально окрашенным», что порождает специфические слуховые ощущения. Цвет шума – это система терминов, которая приписывает определённые цвета, исходя из аналогии между спектром сигнала произвольной природы и спектрами различных цветов видимого света. Цветовые соответствия различных типов шумового сигнала определяются с помощью графиков спектральной плотности, или же АЧХ. Цвета шума могут быть различными, например, белый, розовый, синий, черный. Белый шум имеет равномерное распределение амплитуды по всему диапазону частот; розовый шум имеет спектральную плотность, которая уменьшается с увеличением частоты; у синего шума амплитуда растёт вместе с ростом частоты; а черный шум имеет нулевую спектральную плотность.
Генерация цветного шума
Сама лабораторная работа состоит из 3 частей, и в первой из них необходимо попробовать повторить один из существующих цветных шумов. Так, в качестве эталонного сигнала был взят фиолетовый шум, в котором отсутствуют нижние частоты, а амплитуда частот растёт прямо пропорционально исходной частоте. В таблице 1 приведён список переменных, используемых в данной программе, а в листинге 1 – исходный код программы. Также, исходный код программы вместе со всеми аудиофайлами находится в репозитории на GitHub [1].
Таблица 1. Список используемых переменных
Название |
Тип |
Описание |
Sample_rate |
Целочисленный |
Частота дискретизации звука |
duration |
Целочисленный |
Продолжительность аудиофайла |
Output_signal |
Двумерный массив |
Сгенерированный сигнал |
x |
Двумерный массив |
Источник белого шума |
Y |
Двумерный массив |
Отфильтрованный белый шум |
B, a |
Массивы |
Параметры для фильтрации сигнала |
Листинг 1. Генерация фиолетового шума на Python
def check_filter(rate: int, duration: int, volume: float, ftype: str, forder: int, freqs, detailed_data: bool = False): N = duration*rate x = np.random.rand(N, 2) b, a = signal.butter(forder, freqs, btype=ftype, fs=rate) y = signal.lfilter(b ,a, x, axis=0) output_signal = amplitude_norm(y, volume) if detailed_data: filter(b, a, sample_rate) afr(output_signal[:,0], sample_rate) return output_signal
sample_rate, duration, vol = 44100, 10, 0.5 output_signal = check_filter(sample_rate, duration, vol, "high", 2, 2200, detailed_data=True) visualize(output_signal, sample_rate) io.wavfile.write("4/violet_noise.wav", sample_rate, output_signal) plt.show() |
Далее, для того чтобы убедиться в том, что данная программа корректно, запустим данную программу и посмотрим на результаты. Сперва, на рисунке 1 показана частотная характеристика фильтра, используемого для генерации сигнала, на рисунке 2 – амплитудный спектр сигнала, а на рисунке 3 – визуализация сгенерированного шума.
Рисунок 1 – АЧХ фильтра
Рисунок 2 – АЧХ созданного шума
Рисунок 3 – Визуализация шума
При прослушивании и сравнении созданного сигнала с эталонным [2] можно заметить, что в созданном ощущается присутствие более низких частот, которых нету в представленным в качестве примера. А так, в целом, разницы никакой в данных двух сигналах не наблюдается.