Автор: @s_vanyaa
Графический аудиоредактор, который можно использовать как аудиоплеер. Для редактирования аудиозаписей применяется ffmpeg, поэтому данное приложение можно также назвать графической оболочкой над ffmpeg.
- Склейка нескольких аудиозаписей
- Разрез аудиозаписи
- Вставка одной аудиозаписи в другую
- История всех изменений, с возможностью выбора, какие аудиозаписи сохранять
- Воспроизведение задом наперед (как полностью, так и для фрагмента)
- Изменение скорости (как полностью, так и для фрагмента)
- Изменение громкости (как полностью, так и для фрагмента)
- Конвертация из wav в mp3 и обратно
- Каждую аудиозапись можно послушать и отматать на тот фрагмент, который нужен
- Спектрограмма
В приложении адаптивный и интуитивно понятный интерфейс. Пользователя встречает главное окно аудиоредактора,
которое является плеером. По кнопке с иконкой Проводник
можно выбрать в файловой системе нужные аудиозаписи,
далее они появятся в большом поле по середине экрана. Выбрав одну аудиозапись и, нажав на кнопку с иконкой Play
,
начнет воспроизводиться, выбранная аудиозапись. Для перемотки на 10 секунд назад/вперед есть соответствующие кнопки.
Также перематывать можно, нажимая на полосу прокрутки плеера, которая двигается при воспроизведении аудиозаписей.
Справа от полосы прокрутки есть таймер, по которому можно понять текущее время аудиозаписи для последующего
редактирования. Нажав на кнопку Меню
появится диалоговое окно с функциями аудиоредактора, нажатия по которым приведет
к изменению главного экрана приложения. Меню редактирования будет появляться под полем со списком аудиозаписей. Для
каждой функции аудиоредактора - своя панель.
В нескольких подряд идущих (по горизонтали) выпадающих меню нужно выбрать аудиозаписи,
после нажатия кнопки Склеить
, они склеятся в том же порядке. Для добавления новых выпадающих меню есть кнопка справа.
В выпадающем меню нужно выбрать аудиозапись, указать временной промежуток, после чего
нажать кнопку Разрезать
.
В двух выпадающих меню нужно выбрать, что вставлять и куда. Далее выбрать время вставки и нажать на кнопку Вставить
.
В выпадающем меню нужно выбрать аудиозапись, указать временной промежуток (если надо),
после чего нажать на кнопку Развернуть
.
В выпадающем меню нужно выбрать аудиозапись, указать временной промежуток (если надо) и выбрать значение скорости,
после чего нажать на кнопку Изменить скорость
.
В выпадающем меню нужно выбрать аудиозапись, указать временной промежуток (если надо) и выбрать значение громкости,
после чего нажать на кнопку Изменить громкость
.
В выпадающем меню нужно выбрать аудиозапись и нажать на соответствующую кнопку.
Результаты работы аудиоредактора сначала попадают в временную директорию, которая удалится после работы приложения. Поэтому выбрав аудиозапись в списке можно по-настоящему сохранить ее.
Нажав на соответствующую кнопку, покажется спектрограмма аудиозаписи в отдельном окне. Под изображением будет кнопка
Сохранить
, нажав на нее можно будет сохранить спектрограмму в формате .png
.
Это кнопка в диалоговом окне убирает панель редактирования с главного экрана.
Это область со всеми аудиозаписями. (сохраненными и нет)
Весь интерфейс интуитивно понятен и повсюду есть подсказки. Также интерфейс защищен от ввода некорректных данных.
- Использование библиотеки PyQt5 для графического интерфейса
- Использование ffmpeg для работы с аудиозаписями
- Соблюдать паттерн MVC
- Сохранение промежуточных файлов во временной директории
- Не использовать готовые методы для спектрограммы (т.е. использовать Ряды Фурье самому)
- Запуск приложения из
view/gui_entry_point.py
- Отрисовка и логика панели аудиоредактора:
view/audio_editor_dialog.py
- Полоса прокрутки плеера:
view/slider.py
- Конфигурация кнопок:
view/utils.py
- Контроллер для приложения с графическим интерфейсом:
controller/gui_controller.py
- Методы редактирования аудиозаписи:
model/audio_editor.py
- Вспомогательный класс с информацией об аудиозаписи:
model/audio_info.py
- Исполнение команд ffmpeg:
model/command_line_executor.py
- Работа с файлами:
model/files_utils.py
- Для получения спектрограммы:
model/spectrogram.py
- Работа с временными форматами и генерация имени файла (имя генерируется по времени):
model/time_utils.py
- Тесты:
tests/tests.py
Написаны модульные тесты на model/audio_info
и model/time_utils
Если в конфиг файле установить debug=True
, то аудиоредактор будет логировать все свои операции,
произведенный через ffmpeg
, и выводить сообщения об вычислительных ошибках при работе программы.
Аудиоредактор при этом крашиться не будет. Если debug=False
или любое другое неверное значение, то
аудиоредактор будет работь в «безшумном режиме».
Пример settings.toml
title = "Конфигурация запуска"
[start]
debug = true
Для работы приложения на компьютере должна быть установлена и добавлена в PATH
консольная утилита ffmpeg