Цель работы — разработка и исследование двуступенчатого автоэнкодера для сжатия и восстановления аудиосигналов.
Задачи:
- реализовать архитектуру двуступенчатого автоэнкодера;
- обучить модель на реальных аудиоданных;
- выполнить реконструкцию аудиосигнала;
- проанализировать качество восстановления.
Используются аудиофайлы в формате WAV.
Параметры данных:
- моно-сигнал;
- частота дискретизации — 16 000 Гц;
- длительность фрагмента — 1–2 секунды.
Перед подачей в модель сигнал:
- ресэмплируется;
- приводится к фиксированной длине (padding / обрезка).
Модель состоит из двух автоэнкодеров.
Первая ступень выполняет сжатие исходного сигнала в латентное пространство меньшей размерности.
Вторая ступень выполняет дополнительное сжатие латентного представления первой ступени.
Схема: Вход → AE1 → Латент1 → AE2 → Латент2 → Декодирование → Выход
Используется среднеквадратичная ошибка (MSE):
L = MSE(x, x̂₁) + MSE(x, x̂₂)
где:
- x — исходный сигнал,
- x̂₁ — реконструкция первой ступени,
- x̂₂ — реконструкция второй ступени.
Обучение выполняется оптимизатором Adam.
Пример запуска:
python3 main.py --mode train --epochs 50 --latent-dim-1 512 --latent-dim-2 128 --max-duration-sec 2.0
После обучения модель используется для восстановления аудиофайла:
python3 main.py --mode reconstruct --checkpoint checkpoints/checkpoint_epoch_50.pth --input-wav audio_data/test/sample1.wav --output-wav reconstructed.wav --latent-dim-1 512 --latent-dim-2 128 --max-duration-sec 2.0
Модель демонстрирует способность восстанавливать форму аудиосигнала.
Качество реконструкции повышается при увеличении числа эпох и размерности латентных пространств.
Используемые технологии
Python
PyTorch
TorchAudio
NumPy
SoundFile
Jupyter Notebook