# Как генерировать музыку и звуковые эффекты локально через ИИ: Stable Audio 3 и MCP-серверы

> AI Release · @ai_release1 · https://ai-release.org/guides/kak-generirovat-muzyku-i-zvukovye-effekty-lokalno-chere.html

## TL;DR

- Время выполнения: 45–90 минут (первый запуск, без учёта скачивания весов модели)
- Уровень сложности: Intermediate
- Понадобится: Python 3.10+ (минимальную версию сверьте с документацией модели), `ffmpeg` в PATH, Node.js + `npx` для MCP Inspector, GPU NVIDIA с драйвером или CPU-режим, свободное место под веса модели и выходные WAV-файлы, каталог с правами на запись
- Результат: локальный пайплайн «текстовый промпт → WAV-файл на диске → вызов генерации из ИИ-клиента через MCP»

## Требования и подготовка
![Иллюстрация к разделу «Требования и подготовка»](https://ai-release.org/guides/img/kak-generirovat-muzyku-i-zvukovye-effekty-lokalno-chere-ru-1.jpg)


- ОС: Linux, macOS или Windows 10/11 (64-bit). Команды ниже — для bash; в Windows используйте PowerShell и пути вида `C:\audio-lab`.
- Python 3.10 или новее в PATH. Точную минимальную версию и поддерживаемые колёса (`torch` и т. п.) сверьте с документацией модели — от этого зависит, какая версия Python реально подойдёт.
- `ffmpeg` — утилита для чтения/конвертации аудио. Нужна для проверки результата через `ffprobe` и для конвертации WAV в mp3/ogg.
- Node.js и `npx` — нужны только для отладки MCP-сервера через MCP Inspector (официальный отладочный клиент протокола). Версию Node.js сверьте с документацией Inspector.
- GPU NVIDIA с актуальным драйвером — опционально; без неё генерация идёт на CPU, но дольше. Замеры на вашем железе делайте сами: официальных цифр «столько-то секунд на кадр» для вашей конфигурации никто не гарантирует.
- Свободное место: под веса модели (точный объём указан на странице загрузки модели — сверьтесь с документацией) плюс запас под выходные файлы, WAV занимает десятки мегабайт на минуту звука.
- API-ключ не требуется: всё считается локально. Ключ нужен только если вы сознательно ходите в облачный API провайдера модели.
- Если локальное железо не тянет — см. альтернативу с облачным API в гайде [Как использовать GPT-6.1 Sol через API: полное руководство](https://ai-release.org/guides/kak-ispolzovat-gpt-6-1-sol-cherez-api-polnoe-rukovodstv.html?utm_source=tg&utm_medium=channel&utm_campaign=guide_inline&utm_content=guide_to_guide).

Общая схема пайплайна, которую вы соберёте:

1. Промпт (текст) → 2. локальная модель Stable Audio 3 → 3. WAV в каталоге `out/` → 4. MCP-сервер отдаёт агенту путь к файлу как результат инструмента (tool).

MCP (Model Context Protocol) — открытый протокол, который описывает, как ИИ-клиент вызывает внешние инструменты по стандартной схеме: сервер объявляет список tools, клиент их вызывает и получает результат. Для генерации аудио это удобно тем, что агент не «изобретает» команды, а вызывает объявленный инструмент.

| Способ запуска | Что делает | Когда выбирать |
|---|---|---|
| Скрипт/CLI напрямую | Вы сами передаёте промпт и параметры, получаете файл | Отладка модели, разовые генерации, батчи |
| MCP-сервер | Оборачивает ту же модель в tool, который вызывает ИИ-клиент | Агентские сценарии: «сгенерируй джингл и положи в проект» |

## Шаг 1. Проверка окружения и изоляция зависимостей

**Что сделать:** убедиться, что Python, `ffmpeg` и (опционально) GPU доступны, затем создать отдельное виртуальное окружение и каталоги проекта.

**Зачем:** модель Stable Audio 3 тянет тяжёлые зависимости (`torch` и аудио-библиотеки), которые конфликтуют с системным Python. Виртуальное окружение (venv) — изолированная папка с пакетами: ставите что угодно, системный Python не ломается.

```bash
python3 --version
ffmpeg -version | head -n 1
nvidia-smi --query-gpu=name,memory.total --format=csv
```

Ожидаемый вывод: строка вида `Python 3.11.9`, строка `ffmpeg version ...`, и таблица с именем GPU и объёмом памяти. Если `nvidia-smi` пишет `command not found` — у вас нет драйвера NVIDIA или карты; работайте в CPU-режиме.

```bash
mkdir -p ~/audio-lab/models ~/audio-lab/out
cd ~/audio-lab
python3 -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
```

**Пример:** после активации `which python` печатает `/home/<user>/audio-lab/.venv/bin/python`, а `pip -V` — путь внутри `~/audio-lab/.venv`. Если путь другой, окружение не активировалось.

**Как проверить:** выполните

```bash
python -c "import sys; print(sys.prefix)"
```

Успех — вывод заканчивается на `/audio-lab/.venv`. Это значит, что все дальнейшие `pip install` пойдут в изолированную папку, а не в систему.

## Шаг 2. Установка модели и подключение MCP-сервера
![Иллюстрация к разделу «Шаг 2. Установка модели и подключение MCP-сервера»](https://ai-release.org/guides/img/kak-generirovat-muzyku-i-zvukovye-effekty-lokalno-chere-ru-2.jpg)


**Что сделать:** установить пакет с моделью/инференсом, скачать веса, затем описать MCP-сервер в конфиге вашего ИИ-клиента.

**Зачем:** сам по себе файл весов ничего не умеет — нужен код инференса (загрузка модели, подготовка промпта, сэмплирование, запись WAV). MCP-сервер — тонкая обёртка над этим кодом, которая объявляет инструмент вида «сгенерируй аудио по описанию».

Установка (имя пакета и точную команду возьмите из документации модели — здесь шаблон, подставьте своё):

```bash
pip install "<имя-пакета-из-документации>"
python -c "import <модуль>; print(getattr(<модуль>, '__version__', 'ok'))"
```

**Пример:** если в документации указан пакет `stable-audio-tools`, команда будет `pip install stable-audio-tools`, а проверка — `python -c "import stable_audio_tools; print('ok')"`. Сверьтесь с документацией: набор пакетов и имя модуля у разных сборок отличаются.

Веса положите в `~/audio-lab/models` (или дайте библиотеке скачать их самой — как именно, указано в документации; размер и лицензию смотрите там же).

Теперь конфиг MCP. Для Claude Desktop файл лежит по пути `~/Library/Application Support/Claude/claude_desktop_config.json` (macOS) или `%APPDATA%\Claude\claude_desktop_config.json` (Windows). Добавьте сервер:

```json
{
  "mcpServers": {
    "stable-audio": {
      "command": "/home/<user>/audio-lab/.venv/bin/python",
      "args": ["-m", "<модуль-сервера-из-документации>"],
      "env": {
        "AUDIO_OUT_DIR": "/home/<user>/audio-lab/out",
        "AUDIO_MODEL_PATH": "/home/<user>/audio-lab/models",
        "AUDIO_DEVICE": "cuda"
      }
    }
  }
}
```

Ключевые моменты: `command` — абсолютный путь к Python внутри venv (иначе клиент запустит системный Python и получит `ModuleNotFoundError`); `AUDIO_DEVICE` переключите на `cpu`, если GPU нет; имена переменных окружения сверьте с README сервера — они задаются автором пакета.

**Как проверить:** запустите отладочный клиент:

```bash
npx @modelcontextprotocol/inspector
```

Он печатает в консоль URL (по умолчанию `http://localhost:6274` — точный адрес смотрите в выводе команды). Откройте его, в панели Connect укажите команду и аргументы из конфига, нажмите Connect → вкладка Tools. Успех — сервер в статусе connected и в списке есть инструмент генерации аудио.

## Шаг 3. Проверка работы и финальный результат
![Иллюстрация к разделу «Шаг 3. Проверка работы и финальный результат»](https://ai-release.org/guides/img/kak-generirovat-muzyku-i-zvukovye-effekty-lokalno-chere-ru-3.jpg)


**Что сделать:** сгенерировать один короткий файл и убедиться, что он физически существует, читается как аудио и возвращается агенту как результат tool-вызова.

**Зачем:** «зелёный» статус сервера ничего не говорит о том, что модель реально отработала: частая ситуация — tool вызывается, но падает на записи файла или на нехватке памяти.

Запустите генерацию из панели Inspector: выберите инструмент, передайте описание, например `warm lo-fi drum loop, 90 bpm, no vocals`, и короткую длительность (точные имена и допустимые значения параметров — в схеме инструмента, которую Inspector показывает автоматически).

Затем проверьте файл:

```bash
ls -lh ~/audio-lab/out
ffprobe -hide_banner ~/audio-lab/out/test.wav
```

Ожидаемый вывод: в `ls` появляется файл ненулевого размера (например, `-rw-r--r-- 1 user user 1.4M ... test.wav`), а `ffprobe` печатает блок `Input #0` и строку вида `Stream #0:0: Audio: pcm_s16le, <частота> Hz, stereo`. Конкретные частота дискретизации и формат сэмплов зависят от настроек генерации — сверьтесь с документацией модели.

Чек-лист приёмки:

- [ ] `nvidia-smi` или CPU-режим выбран осознанно, `AUDIO_DEVICE` соответствует железу
- [ ] `python -c "import sys; print(sys.prefix)"` указывает на venv проекта
- [ ] MCP Inspector показывает статус connected и непустой список tools
- [ ] В `~/audio-lab/out` появился WAV, `ffprobe` видит аудиопоток
- [ ] Файл открывается плеером и соответствует промпту на слух
- [ ] Агент в чате возвращает путь к файлу, а не текст «готово»

Последний пункт — главный признак, что MCP-обвязка работает: результат инструмента должен содержать путь или содержимое файла, который вы можете открыть.

## Возможные проблемы и решения

**Проблема. Генерация падает на середине, GPU переполнен**

- Ошибка: `torch.cuda.OutOfMemoryError: CUDA out of memory. Tried to allocate ... MiB`
- Причина: слишком длинный фрагмент, большой batch или на GPU висят другие процессы (браузер с аппаратным ускорением, другая модель).
- Решение: уменьшите длительность и batch до 1, освободите память и проверьте её остаток:

```bash
nvidia-smi
```

Если память всё равно не влезает — переключите сервер в CPU-режим, поправив `env` в конфиге MCP:

```json
"env": { "AUDIO_OUT_DIR": "/home/<user>/audio-lab/out", "AUDIO_DEVICE": "cpu" }
```

**Проблема. Сервер не стартует, клиент пишет, что процесс завершился**

- Ошибка: `ModuleNotFoundError: No module named '<модуль>'` в логе MCP-сервера
- Причина: в `command` указан системный `python`, а пакет установлен в venv; либо venv пересоздали и путь устарел.
- Решение: пропишите абсолютный путь и проверьте его вручную той же командой, что в конфиге:

```bash
/home/<user>/audio-lab/.venv/bin/python -m <модуль-сервера-из-документации>
```

Если команда в терминале отрабатывает без ошибки, а клиент — нет, перезапустите клиент полностью (правка JSON не подхватывается на лету).

**Проблема. Inspector не запускается**

- Ошибка: `Error: spawn npx ENOENT`
- Причина: не установлен Node.js или `npx` отсутствует в PATH (часто после установки Node.js без перезапуска терминала).
- Решение: установите Node.js LTS, перезапустите терминал и проверьте:

```bash
node -v && npx -v
```

Обе команды должны печатать номера версий. После этого повторите `npx @modelcontextprotocol/inspector`.

## Резюме и следующие шаги

Вы подняли изолированное окружение, подключили локальную модель генерации аудио и обёрнули её в MCP-сервер, который ИИ-клиент вызывает как обычный инструмент. Дальше имеет смысл собрать батч-скрипт для пачки промптов и добавить постобработку через `ffmpeg` — базовые приёмы локального запуска моделей разобраны в гайде [Как запустить ИИ-модель локально на своём компьютере: гайд для начинающих](https://ai-release.org/guides/kak-zapustit-ii-model-lokalno-na-svoem-kompyutere-gayd.html?utm_source=tg&utm_medium=channel&utm_campaign=guide_inline&utm_content=guide_to_guide).

## FAQ

**Нужна ли видеокарта, чтобы генерировать музыку локально?**
Нет, но на CPU генерация заметно медленнее. Точные цифры зависят от модели, длины фрагмента и вашего железа — измеряйте сами и фиксируйте время команды `time`.

**Работает ли всё без интернета?**
После установки пакетов и скачивания весов — да, инференс локальный. Интернет нужен только для первичной установки, загрузки весов и обновлений.

**Можно ли использовать сгенерированные треки в коммерческом проекте?**
Это определяется лицензией конкретной модели и весов, а не протоколом MCP. Сверьтесь с лицензией на странице загрузки модели — универсального ответа нет.

**Зачем вообще MCP-сервер, если есть скрипт?**
Скрипт вызываете вы руками, а MCP-сервер объявляет инструмент, который ИИ-клиент вызывает сам в рамках задачи. Для разовой генерации хватит скрипта, для агентских сценариев — сервера.
