funov / audio-editor

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Audio Editor

Автор: @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

About


Languages

Language:Python 100.0%