TGViewer
iOS Dev iOS Dev @iosdev · 7.92K subscribers
Post #1844 3.21K
Создаём музыку бесплатно: как я упаковал MusicGen в нативное приложение для MacOS (Swift + Python и щепотка шейдеров)

Вчера холодным зимним вечером смотрел ролик на ютубе, услышал ненавязчивую музыку и вспомнил про опрос в нашем канале.

Стало интересно, можно ли создать собственный генератор без регистрации и смс без подписок, и короткий ответ - да, можно.

Простой рецепт, из которого можно создать более-менее приемлемый вариант:

Движок - Python + Apple MLX (кстати, сначала пробовал без этого и очевидно упёрся в проблему использования GPU на Apple Silicon).
В качестве модели заттачил MusicGen Small (можно потяжелее).
Обёртку запилил на SwiftUI и добавил немного красоты для фона.


Проблемы, которые пришлось решать:

Оригинальный скрипт юзал библиотеку scipy для сохранения звука (а это потенциально дофига зависимостей). В качестве норм решения прокатило переписать модуль сохранения звука audio.pyна чистом Python (wave + numpy).

Упаковка для приложения:

С этим ожидаемо было больше всего проблем - начиная от того, что чёртов питон постоянно терял файлы при импорте или вовсе зависимости были кривыми, пришлось с напильником фигачить по очереди каждый вручную (в итоге просто скопировал с репы).


Вся магия внутри самого приложения происходит с помощью Process:

В итоге остановился на 4 доступных параметрах (можно меньше, больше к сожалению, вряд ли):

process.arguments = [promptText, selectedStyle, outputURL.path, durationString]

В качестве промпта можно использовать любой вариант музыки, который вам нравится, для стиля в целом тоже. У меня, например, сейчас несколько пресетов: от саундтреков до Lo-Fi.

С длительностью все сложнее: есть и ограничения модели, и сам трансформ происходит не слишком понятно на первый взгляд, модуль принимает шаги: steps = int(duration_sec * 50).

И вообще максимальная длительность ограничена типом модели, так что тут тоже пришлось немного подкрутить.

Так или иначе, в итоге получилось завести проект, который генерит безлимитно музыку без использования сторонних решений, доп. зависимостей, подписок и чего-либо ещё.

На видосе приложил, как получившийся проект работает в реальном времени (у меня M1 Max).

🛠 Расширенная инструкция и пример кода (а также все необходимые скрипты для настройки):

💰 На бусти и ⭐️ в телеграме.

🎹 Примеры музыки: в комментариях.

😃 iOS Dev
  • 🔥 10
  • 🏆 7
  • ❤‍🔥 3
  • 👍 3
  • 🎅 2
  • 🎄 1
  • 🆒 1
More from @iosdev
  1. Oct 1, 2026SwiftUI Charts и динамическое маскирование Одним из применений для диаграмм является разны…
  2. Sep 29, 2026⚡️Сегодня ночью десятки тысяч приложений массово начали крашиться из-за либы для аналитики…
  3. Sep 28, 2026От pbxproj к xcproj: разбор конфигураций проекта 📖 В этой статье можно посмотреть на новы…
  4. Sep 25, 2026Симулятор iPhone Duo: тестирование и оптимизация приложения Как только был анонсирован iPh…
  5. Sep 24, 2026Настоящая причина, почему на презентации не показали, как выглядит звонок с iPhone Duo. 😃…
  6. Sep 23, 2026Работа с тулбарами на iPhone Duo На iPhone Duo элементы управления навигацией, тулбар-экшн…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →