Во-первых был подобран датасет: Common Voice (https://commonvoice.mozilla.org/ru/datasets). Объёмный, свежий, с хорошей разметкой - идеально для нашей задачи.
Действуем по плану:
Some manipulations выбрано просто прибавление рандомного тензора (https://github.com/AlberetOZ/MIL_test_noise/blob/master/Noise_my_dataset.ipynb).
По известной статье (https://arxiv.org/pdf/1609.07132.pdf) и важному результату для задачи Denoising:
Мы будем использовать CNN, для выбора архитектуры:
Skip connections показывают отличный результат. Была выбрана CR-CED(Skip) по принципу большей точности с 16 слоями, т.к. R-CED(Skip) с 20 слоями имеет уже в 3 раза больше параметров, хотя не сильно увеличивает точность, а время на обучение у нас ограничено, особенно без сервера.
Обучать будем фреймворком tensorflow => преобразуем датасет в tfrecords формат, метрика выбрана MSE.
Полученные веса (checkpoints) лежат в https://drive.google.com/file/d/19S_St8aHIM9YEBOsbDVM8-UsFRKg7amr/view?usp=sharing
На тестовом датасете rmse: 0.3816 Был интересен результат при очень высоком уровне зашумления (Bassboosted) и получилось довольно неплохо(само аудио есть в репозитории):
Мы получили неплохую демо версию. В перспективе этот проект можно оптимизировать и увеличить количество слоёв для лучшего результата. По времени было затрачено ~25 часов.