Skip to content

Repository files navigation

Miskam'o

Версия 1.0.0-alpha

Личный музыкальный помощник. Локально, без облачных API.

Разработан методом вайб-кодинга в оболочке OpenCode на модели opencode/deepseek-v4-flash.


Разработка: веду на Windows. Если есть возможность протестировать на macOS — буду премного благодарен за feedback.

Возможности

  • 🎤 Аудио в MIDI — запись с микрофона или загрузка WAV; CREPE + DDSP → чистый MIDI
  • 🎹 MIDI Generator — 5 алгоритмов (Scale Walk, Chord, Markov, Contour, Combined), тональность/гамма/октава/BPM, массовая генерация
  • 📊 Dataset Generator — MIDI → искажённые WAV-пары (clean + corrupt) для обучения моделей audio-to-audio
  • 📜 History — просмотр, прослушивание, пианолла обработанных файлов
  • 🧪 Tests — запуск 164 тестов прямо из UI
  • 🧠 Тренировка модели (в разработке)
  • 🌐 i18n — русский / английский (с авто-перезагрузкой переводов)

Модульная архитектура

Miskam'o построен по принципу независимых модулей. Каждый модуль — это самодостаточная папка в modules/, которую можно добавить или удалить.

Доступные модули

Модуль Папка Назначение
Аудио → MIDI audio2midi/ Загрузка/запись WAV → CREPE+DDSP → MIDI
Ручная оценка eval/ Оценка аудио по 10-балльной шкале
История history/ Просмотр, плеер, пианолла, скачивание, удаление
MIDI Генератор midigen/ 5 алгоритмов, пресеты, batch, предпросмотр
Датасет dataset/ Clean/corrupt WAV-пары из MIDI-банков
Тренировка train/ Заглушка (в разработке)
Тесты testing/ Запуск 164 тестов из UI

Как это работает

  • Фреймворк (core/) — отвечает за базовую инфраструктуру: запуск сервера, загрузку модулей, общие утилиты (fluidsynth, midi), единый эндпоинт настроек.
  • Модули (modules/*/) — содержат весь свой код: API-эндпоинты (routes.py), бизнес-логику, статические файлы (static/) и переводы.
  • При инициализации каждый модуль создаёт необходимые ему служебные папки и файлы. Если они уже существуют — использует как есть, не перезаписывая чужие данные.
  • При удалении папки модуля его функционал полностью исчезает из приложения.
  • Установка модуля не требует изменений в коде фреймворка — достаточно поместить папку в modules/.

Модульная инициализация

При первом импорте модуль проверяет наличие своих директорий и создаёт их при необходимости с проверкой exist_ok=True. Это гарантирует, что модули не interfering с данными друг друга.

В планах: реализовать «умную» деинсталляцию, которая при удалении модуля убирает только его зависимости (pip-пакеты, DLL), не затрагивая общие данные и файлы других модулей.


Быстрый старт

Требования

  • Python 3.11+
  • NVIDIA GPU с CUDA 12+ (рекомендуется) или CPU
  • FluidR3_GM.sf2 (148 MB) — положить в libs/FluidR3_GM.sf2

Установка

# Windows
install_windows.bat

# macOS
bash install_macos.sh

# Вручную:
pip install -r requirements.txt
pip install -r requirements-test.txt   # для тестов

Запуск

# Windows (GPU)
start_win_web_ui_gui.bat

# Windows (CPU)
start_win_web_ui_cpu.bat

# macOS (GPU)
bash start_mac_web_ui_gui.sh

# macOS (CPU)
bash start_mac_web_ui_cpu.sh

# Или напрямую:
python main.py        # Windows
python3 main.py       # macOS

Открыть в браузере: http://127.0.0.1:7890


Настройки

  • Язык: выбор при первом запуске, смена в любой момент
  • Default instrument: инструмент для превью Voice→MIDI (по умолч. саксофон)
  • Toast duration: 3–15 сек
  • Порядок вкладок: drag-to-reorder в Settings
  • Очистка _shared/_tmp/: при запуске (опционально)

Тесты

python -m pytest tests/ -v
# 164 теста, ~4 секунды

Форматы данных

  • Аудио на входе: WAV (16-bit, 44100 Hz)
  • MIDI на выходе: стандартный .midi
  • Датасет: WAV-пары NNN_clean.wav / NNN_corrupt.wav + _params.json
  • Пресеты: JSON-файлы с параметрами искажений/генерации

Зависимости

  • PyTorch 2.x + CUDA 12
  • torchcrepe, hmmlearn, pretty_midi
  • FastAPI + Jinja2 + uvicorn
  • pyfluidsynth + FluidR3_GM.sf2
  • matplotlib + librosa (пианолла)
  • pytest + httpx + httpx2 (тесты)

Лицензия

MIT

About

Miskamo - Personal Music Assistant. Voice-to-MIDI via CREPE+DDSP, MIDI generation (5 algorithms), dataset generator for audio-to-audio ML models.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages