feat: add minimal Gradio web UI (app.py)

Single-page form wrapping src.generate.generate_period: pick model, mode,
key, style, function, time, sampling params and optional prefix; returns
the chord grid plus downloadable .chord and .mid files. Russian usage
instructions are embedded on the same page.

Auto-length output is capped at 16 bars (the period maximum) so a model
that never emits EOS can't run away into dozens of NC/hold bars.

Added per the author's explicit request — web UI was previously out of
scope; updated CLAUDE.md and README accordingly. Choices for style/
function/time are derived from VOCAB so the form can't drift from the
tokenizer.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-06-04 15:38:01 +03:00
parent f00a6c1b3a
commit c147c47acb
4 changed files with 353 additions and 4 deletions
+29 -2
View File
@@ -22,6 +22,7 @@
- [3. Установка](#3-установка)
- [4. Структура репозитория](#4-структура-репозитория)
- [5. Быстрый старт](#5-быстрый-старт)
- [5.1 Веб-интерфейс](#51-веб-интерфейс)
- [6. Подготовка датасета](#6-подготовка-датасета)
- [6.1 Собственный корпус](#61-собственный-корпус)
- [6.2 Публичный корпус](#62-публичный-корпус)
@@ -169,6 +170,31 @@ python scripts/generate.py \
Модель достроит остаток периода в логике, выученной на собственном корпусе
автора.
### 5.1 Веб-интерфейс
Для интерактивной работы без командной строки предусмотрен простой
веб-интерфейс на базе Gradio. Запуск:
```bash
python app.py
```
После запуска интерфейс открывается в браузере по адресу
`http://127.0.0.1:7860`. На одной странице расположены форма выбора
параметров (модель, лад, тональность, стиль, функция, тактовый размер,
параметры сэмплирования, опциональный префикс) и блок результата —
текстовая сетка аккордов и кнопки скачивания `.chord`- и `.mid`-файлов.
Краткая инструкция на русском языке встроена в саму страницу (раздел
«Инструкция»).
Интерфейс является надстройкой над тем же модулем `src/generate.py`,
что и CLI; вся логика генерации общая. Полезные флаги:
```bash
python app.py --port 8000 # другой порт
python app.py --share # временная публичная ссылка
```
## 6. Подготовка датасета
Подготовка датасета — самая трудозатратная часть проекта (10–15 часов
@@ -340,8 +366,9 @@ python scripts/evaluate.py \
- Ритмический паттерн внутри удержания аккорда (синкопы, проходящие фигуры,
альбертиевы басы).
- Аранжировка, тембр, динамика, артикуляция.
- Графический пользовательский интерфейс. Взаимодействие осуществляется
через командную строку.
- Развитый графический интерфейс. Реализован лишь минимальный веб-интерфейс
(см. раздел 5.1) как надстройка над CLI; полноценного редактора с
визуализацией нотного стана, проигрывателем и историей версий нет.
- Прямая интеграция с REAPER в режиме реального времени. Обмен с DAW
происходит через файлы MIDI.
- Обработка модуляций внутри одного периода. При наличии модуляции в