Image

Обработка музыки с помощью Python: от вайбкодинга до мастеринга в один клик

Продолжаю рассказывать, как я в одного делаю проект — сайт, радио и медиаплатформу для своей музыки. В первой части был фронт и админка, теперь — как я встроил мастеринг аудио через Python сервис, чтобы не бегать по разным сайтам и не возиться с Audacity. Ну и немного про вайбкодинг — куда ж без него.

ee3b4f254f7299aee2377c3bf8ae90ac

🎧 Вступление

Продолжаю рассказывать, как можно в одного делать большие проекты с помощью новомодного явления — вайбкодинг.

На днях видел даже курсы от инфобизнесменов, где теперь учат, как молодым предпринимателям можно «сэкономить» на разработчиках, дизайнерах и прочих специалистах. Разумеется, всего за стоимость этих самых специалистов 😅

Но давайте честно — вайбкодинг это не замена, это инструмент. Если ты хоть немного разбираешься в теме, он сэкономит массу времени и денег. Если нет — затраты будут только расти, вместе с количеством подписок на разные ИИ-сервисы.

💡 Три вещи, которые стоит знать про вайбкодинг

1. Сервисы платные, и чем дальше, тем дороже

Пока проект маленький — всё прекрасно. Но как только он растёт, ИИ начинает путать, что ты вообще хочешь от него. А ты, вдохновлённый первыми успехами, закупаешь всё подряд: Midjourney для картинок, ChatGPT для кода, Claude для текста, Suno для музыки… И в какой-то момент сумма подписок догоняет зарплату разработчика.

2. Промт — это новое ТЗ

Поначалу всё просто: «Сделай красивый сайт про йогу». ИИ делает, ты радуешься. Но потом: «Добавь базу данных, сделай авторизацию, API и расчёт аналитики». ИИ всё делает, но ты уже не понимаешь, что именно. Код работает, но странно. Через пару недель начинаешь чинить сам. Так появляется новая профессия — вайбклинер 😅

3. Это не магия, это инструмент

Если понимать, что происходит, эффект — потрясающий. Например, раньше на подготовку описания API для среднего интерфейса из n-методов у меня уходил день. Теперь — минут 30, и это только на проверку, что всё корректно. Так что вайбкодинг — ускоритель, а не волшебная палочка.

Переходим к делу: обработка музыки

А теперь вернёмся к сайту. В этой части расскажу про мастеринг, который я реализовываю через Python-сервис и связал с админкой. Задача — убрать ручной труд при обработке треков.

🐍 Python-сервис для аудио

Изначально всё выглядело вот так:
загрузил файл в мастерскую → обработал→ скачал→ проверил → если что-то не понравилось → снова загрузил . Работает, но очень утомительно.

f5a7ff47ba0847e62742f3e86b4acceb

Потом я решил объединить весь процесс в одно целое: фронт → бэк → Python → облако.

Теперь при загрузке песни сайт сам:

  1. Прослушать как будет выглядеть трек после обработки

  2. Далее отправить аудио в Python-сервис.

  3. Тот применяет выбранный пресет (мастеринг, шумоподавление, тюнинг).

  4. И скачивается mp3(уже с тегами) или wav

  5. Так же отдельно можно сохранить обработанный файл на S3.

Использую:

  • Railway — для бекенда.

  • S3 от REG.RU — для хранения.

  • librosa, scipy, soundfile — для аудио.

⚙️ Вот как выглядит базовая функция мастеринга, максимально просто

def _apply_mastering(input_path: str, output_path: str, preset: dict, ms: bool, clean: bool): «»» Применяет мастеринг к аудиофайлу согласно пресету «»» audio_data, sample_rate = sf.read(input_path) if audio_data.shape[0] < 15: print(«WARNING: Audio file is very short (<15 samples)») preset_value = preset.get(‘value’, {}) has_effects = any([ preset_value.get(‘eq’), preset_value.get(‘compressor’), preset_value.get(‘limiter’), preset_value.get(‘normalize_lufs’), preset_value.get(‘stereo_width’), preset_value.get(‘saturation’), preset_value.get(‘extras’) ]) audio_data = _apply_dynamic_effects(audio_data, sample_rate, preset_value) if clean and preset.get(‘clean’): audio_data = _apply_dynamic_cleanup(audio_data, sample_rate, preset[‘clean’]) if ms and len(audio_data.shape) == 2 and audio_data.shape[1] == 2: audio_data = _apply_mid_side_processing(audio_data) sf.write(output_path, audio_data, sample_rate, format=’WAV’) print(«Mastering completed successfully»)

Пресеты, превью и немного лени

Раньше я вручную выбирал пресет, прогонял трек, скачивал результат, слушал, потом снова всё по кругу. И тут сработал вечный двигатель прогресса — лень.

Теперь при загрузке песни можно сразу:

  • Применить все доступные пресеты.

  • Прослушать результат.

  • Сохранить понравившийся вариант.

То есть всё — прямо в браузере.

Пресеты теперь хранятся в базе данных, в виде JSON.
Это удобно, потому что у каждого набора настроек своя структура.

Так он выглядел, когда жил на стороне сервиса

{ «name»: «Стадион», «eq»: {«low»: -3, «mid»: 0, «high»: 4}, «compressor»: {«ratio»: 3.5, «threshold»: -20}, «stereo_width»: 1.2, «normalize_lufs»: -14, «extras»: [«saturation», «air»] }

Вот так он теперь выглядит на стороне БД

id |name|value |status|clean |clean_filter| ————————————+—-+—————————————————————————————————————————————————————————————————————————————————————+——+————————————————————————————————————————-+————+ 1fd1c1ef-2211-1111-b1a1-1cc1e55a2073|soft|{«eq»: {«low»: 1, «mid»: 0.5, «high»: 1.5, «low_freq»: 80, «mid_freq»: 1200, «q_factor»: 1.2, «high_freq»: 9000}, «extras»: {«depth»: 0.3, «reverb»: «room», «presence»: 0.6}, «limiter»: {«release»: 100, «threshold»: -1.0}, «compressor»: {«ratio»: 2.0, «at|active|{«filter»: {«type»: «lowpass», «cutoff_hz»: 19500}, «remove_hiss»: true, «remove_clicks»: true, «remove_dc_offset»: true}|true |

Интерфейс и визуализация

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

63f3da3c0a1505cbc6dc8eb03d2a6488

Двигать ползунки пока нельзя, но в планах:

  • редактирование кастомных пресетов;

  • визуальный редактор эквалайзера;

  • и, возможно, автоматическая рекомендация под жанр трека.

Админка постепенно превращается в медиа-комбайн, где можно:

  • добавить трек,

  • настроить обработку,

  • сделать превью,

  • опубликовать в соцсетях — всё из одного места.

Что дальше

Про радио я расскажу в следующей статье — там своя интересная история.
А пока планирую:

  • Добавить анализ звучания трека (чтобы в эквалайзер выводить как было и как стало).

  • Реализовать возможность делать кастомные пресеты.

Финал

Если интересно, сервис для теста пресетов я выложил отдельно — можно покликать и сказать/подсказать, что так или не так.

mastering.frogyfeofun.ru

Для пресета «Стадион» есть возможность изменять Доп. эфекты. Надо кликнуть два раза на доп. эфекты и откроется модальное окно, с доступными эфектами.

Источник: habr.com

✅ Найденные теги: новости, Обработка

ОСТАВЬТЕ СВОЙ КОММЕНТАРИЙ

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Каталог бесплатных опенсорс-решений, которые можно развернуть локально и забыть о подписках

галерея

Звёздное небо с галактиками и туманностями, космос, Вселенная, астрофотография.
Женщина с длинными тёмными волосами в синем свете, нейтральный фон.
Спутник исследует черную дыру в космосе, испускающий световой луч.
Пикачу использует электрический разряд на фоне неба.
Черный углеродное волокно с текстурой плетения, отражающий свет.
Круглый экран с изображением замка и горы, рядом электронная плата.
Код на экране компьютера, программирование, интерфейс разработчика.
Статистика использования видеокарт NVIDIA RTX, показывающая изменения за октябрь-февраль.
Макросъемка клетки под микроскопом, текстура и форма на голубом фоне.
Image Not Found
Звёздное небо с галактиками и туманностями, космос, Вселенная, астрофотография.

Система оповещения обсерватории Рубина отправила 800 000 сигналов в первую ночь наблюдений.

Астрономы будут получать оповещения о небесных явлениях в течение нескольких минут после их обнаружения. Теренс О'Брайен, редактор раздела «Выходные». Публикации этого автора будут добавляться в вашу ежедневную рассылку по электронной почте и в ленту новостей на главной…

Мар 2, 2026
Женщина с длинными тёмными волосами в синем свете, нейтральный фон.

Расследование в отношении 61-фунтовой машины, которая «пожирает» пластик и выплевывает кирпичи.

Обзор компактного пресса для мягкого пластика Clear Drop — и что будет дальше. Шон Холлистер, старший редактор Публикации этого автора будут добавляться в вашу ежедневную рассылку по электронной почте и в ленту новостей на главной странице вашего…

Мар 2, 2026
Черный углеродное волокно с текстурой плетения, отражающий свет.

Материал будущего: как работает «бессмертный» композит

Учёные из Университета штата Северная Каролина представили композит нового поколения, способный самостоятельно восстанавливаться после серьёзных повреждений.  Речь идёт о модифицированном армированном волокном полимере (FRP), который не просто сохраняет прочность при малом весе, но и способен «залечивать» внутренние…

Мар 2, 2026
Круглый экран с изображением замка и горы, рядом электронная плата.

Круглый дисплей Waveshare для креативных проектов

Круглый 7-дюймовый сенсорный дисплей от Waveshare создан для разработчиков и дизайнеров, которым нужен нестандартный экран.  Это IPS-панель с разрешением 1 080×1 080 пикселей, поддержкой 10-точечного ёмкостного сенсора, оптической склейкой и защитным закалённым стеклом, выполненная в круглом форм-факторе.…

Мар 2, 2026

Впишите свой почтовый адрес и мы будем присылать вам на почту самые свежие новости в числе самых первых