Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Отчет_лаба1.docx
Скачиваний:
0
Добавлен:
25.04.2024
Размер:
313.87 Кб
Скачать

ГУАП

КАФЕДРА ПИ

ОТЧЕТ ЗАЩИЩЕН С ОЦЕНКОЙ

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

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

О. О. Жаринов

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

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

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

ОТЧЕТ О ЛАБОРАТОРНОЙ РАБОТЕ № 1

ОСНОВЫ МОДЕЛИРОВАНИЯ АУДИОСИГНАЛОВ СРЕДСТВАМИ PYTHON

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

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

СТУДЕНТ ГР. №

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

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

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

Цель работы

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

Вариант задания

Номер варианта: №8

Свойства моделируемого аудиосигнала: Синусоидальный сигнал, громкость которого линейно увеличивается от 0 в начале записи до максимума в конце записи в левом канале и одновременно уменьшается от максимума до 0 в правом канале. Частота сигнала не изменяется на всем протяжении записи.

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

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

  • Редактирование аудиофайлов – это процесс изменения звуковых файлов, например, удаление шумов, вырезание фрагментов, добавление эффектов и т.д.;

  • Воспроизведение аудиофайлов – процесс проигрывания звуковых файлов на разных устройствах;

  • Визуализация аудиофайлов – возможность визуально оценить звук, записанный внутри файла, а также узнать АЧХ звука;

  • Транскодирование аудиофайлов – процесс преобразования аудиофайлов из одного формата в другой;

  • И т.д.

Для генерации простейших аудиосигналов можно применять различные языки программирования: С++, Java, MATLAB, C# и т.д. Однако среди всего этого набора был выбран язык программирования Python, поскольку он является одним из самых популярных языков программирования в мире. И плюсов, которые можно отметить у данного языка, можно выделить следующие: очень легкий синтаксис и огромное количество разнообразных библиотек, благодаря которым возможности данного языка расширяются многократно.

Формирование модельного аудиофайла

Теперь перейдем к основным частям лабораторной работы. Сама работа состоит из двух частей, и в первой части необходимо написать программу, осуществляющую формирование модельного аудиофайла с заданными по варианту свойствами и последующую запись его в файл в формате wav. Список используемых переменных представлен в таблице 1, а сам код программы – в листинге 1.

Таблица 1. Список используемых переменных

Название

Тип

Описание

Sample_rate

Целочисленный

Частота дискретизации звука

Td

Дробный

Период дискретизации звука

Signal_left

Массив дробей

Сгенерированный звук 1-го канала

Signal_right

Массив дробей

Сгенерированный звук 2-го канала

Stereo_signal

Двумерный массив

Конечный двухканальный звук

Duration

Целочисленный

Длительность звуковой дорожки

freq

Целочисленный

Частота генерируемого звука

Листинг 1. Формирование аудиофайла

def generate_signal(duration: int, freq: int):

    sample_rate = 44100     # частота дискретизации

    td = 1/sample_rate      # период дискретизации

    # Генерируем звуковой сигнал для левого уха (эталонный)

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

    signal_left = np.sin(2 * np.pi * freq * t)

    # Меняем амплитуду

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

        signal_left[i] = signal_left[i] * i/int(sample_rate * duration)

    # Генерируем звуковой сигнал для правого канала (копируем эталонный)

    signal_right = signal_left[::-1]

    # Создаем стерео звуковой сигнал

    stereo_signal = np.column_stack((signal_left, signal_right))

    return stereo_signal, sample_rate

# Генерация звука

signal, rate = generate_signal(5, 800)

# Воспроизводим стерео звук и сохраняем в файл

sd.play(signal, rate)

sd.wait()

sf.write("output_audio.wav", signal, rate)

Далее, для того чтобы убедиться в том, что данная программа создает именно ту звуковую дорожку, которая требуется по варианту задания, была создана визуализация сгенерированного аудиофайла, которая показана на рисунке 1. Также, исходный код программы и сгенерированный аудиофайл расположен в репозитории на GitHub [1].

Рисунок 1 – Визуализация сформированного аудиофайла

Если же приблизить данный график, то будет видно, что амплитуда сигналов уменьшается (и увеличивается) не прямолинейно, а волнообразно, как показано на рисунке 2.

Рисунок 2 – Волнообразный спуск амплитуды

Соседние файлы в предмете Мультимедиа технологии