> For the complete documentation index, see [llms.txt](https://docs.clore.ai/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.clore.ai/guides/guides_v2-ru/audio-i-golos/stable-audio.md).

# Stable Audio

Создавайте музыку и звуковые эффекты с помощью Stable Audio от Stability AI на GPU CLORE.AI.

{% hint style="success" %}
Все примеры можно запускать на GPU-серверах, арендованных через [маркетплейс CLORE.AI](https://clore.ai/marketplace).
{% endhint %}

## Почему Stable Audio?

* **Высокое качество** - Генерация стереозвука 44,1 кГц
* **Переменная длительность** - Генерируйте до 95 секунд
* **Универсальный** - Музыка, звуковые эффекты, фоновые звуки
* **Текст в аудио** - Опишите, что хотите услышать
* **Открытые веса** - Доступен Stable Audio Open

## Варианты модели

| Модель            | Длительность | Качество | VRAM | Лицензия     |
| ----------------- | ------------ | -------- | ---- | ------------ |
| Stable Audio Open | 47 сек       | Хорошо   | 8 ГБ | Открыть      |
| Stable Audio 2.0  | 3 мин        | Отлично  | 12GB | Коммерческое |

## Быстрое развертывание на CLORE.AI

**Docker-образ:**

```
pytorch/pytorch:2.11.0-cuda12.8-cudnn9-devel
```

**Порты:**

```
22/tcp
7860/http
```

**Команда:**

```bash
pip install stable-audio-tools gradio && \\
python -c "
import gradio as gr
import torch
from stable_audio_tools import get_pretrained_model
from stable_audio_tools.inference.generation import generate_diffusion_cond
import soundfile as sf
import tempfile

model, model_config = get_pretrained_model('stabilityai/stable-audio-open-1.0')
model = model.to('cuda')

def generate(prompt, duration, steps, seed):
    conditioning = [{
        'prompt': prompt,
        'seconds_start': 0,
        'seconds_total': duration
    }]

    generator = torch.Generator('cuda').manual_seed(seed) if seed > 0 else None

    output = generate_diffusion_cond(
        model,
        conditioning=conditioning,
        steps=steps,
        cfg_scale=7,
        sample_size=model_config['sample_size'],
        sample_rate=model_config['sample_rate'],
        device='cuda',
        seed=seed if seed > 0 else None
    )

    audio = output[0].T.cpu().numpy()

    with tempfile.NamedTemporaryFile(suffix='.wav', delete=False) as f:
        sf.write(f.name, audio, model_config['sample_rate'])
        return f.name

gr.Interface(
    fn=generate,
    inputs=[
        gr.Textbox(label='Промпт'),
        gr.Slider(1, 47, value=10, label='Длительность (сек)'),
        gr.Slider(10, 150, value=100, label='Шаги'),
        gr.Number(value=-1, label='Сид')
    ],
    outputs=gr.Audio(label='Сгенерированное аудио'),
    title='Stable Audio Open'
).launch(server_name='0.0.0.0', server_port=7860)
"
```

## Доступ к вашему сервису

После развертывания найдите свой `http_pub` URL в **Мои заказы**:

1. Перейдите на **Мои заказы** страницу
2. Нажмите на свой заказ
3. Найдите `http_pub` URL (например, `abc123.clorecloud.net`)

Используйте `https://YOUR_HTTP_PUB_URL` вместо `localhost` в примерах ниже.

## Требования к оборудованию

| Модель            | Минимальная GPU | Рекомендуется |
| ----------------- | --------------- | ------------- |
| Stable Audio Open | RTX 3070 8GB    | RTX 3090 24GB |
| Stable Audio 2.0  | RTX 3090 12GB   | RTX 4090 24GB |

## Установка

```bash
pip install stable-audio-tools torch torchaudio
```

## Базовое использование

### Текст в музыку

```python
import torch
import torchaudio
from stable_audio_tools import get_pretrained_model
from stable_audio_tools.inference.generation import generate_diffusion_cond

# Загрузить модель
model, model_config = get_pretrained_model("stabilityai/stable-audio-open-1.0")
model = model.to("cuda")

sample_rate = model_config["sample_rate"]
sample_size = model_config["sample_size"]

# Определите, что хотите
conditioning = [{
    "prompt": "Зажигательная электронная танцевальная музыка с запоминающейся синтезаторной мелодией, 128 BPM",
    "seconds_start": 0,
    "seconds_total": 30
}]

# Генерировать
output = generate_diffusion_cond(
    model,
    conditioning=conditioning,
    steps=100,
    cfg_scale=7,
    sample_size=sample_size,
    sample_rate=sample_rate,
    device="cuda"
)

# Сохранить
audio = output[0].T
torchaudio.save("music.wav", audio.cpu(), sample_rate)
```

### Звуковые эффекты

```python
conditioning = [{
    "prompt": "Гроза с сильным дождем и далеким громом",
    "seconds_start": 0,
    "seconds_total": 20
}]

output = generate_diffusion_cond(
    model,
    conditioning=conditioning,
    steps=100,
    cfg_scale=7,
    sample_size=sample_size,
    sample_rate=sample_rate,
    device="cuda"
)

torchaudio.save("thunderstorm.wav", output[0].T.cpu(), sample_rate)
```

### Фоновые звуки

```python
conditioning = [{
    "prompt": "Спокойная лесная атмосфера с пением птиц и легким ветром",
    "seconds_start": 0,
    "seconds_total": 45
}]

output = generate_diffusion_cond(
    model,
    conditioning=conditioning,
    steps=100,
    cfg_scale=7,
    sample_size=sample_size,
    sample_rate=sample_rate,
    device="cuda"
)

torchaudio.save("forest.wav", output[0].T.cpu(), sample_rate)
```

## Примеры промптов

### Музыкальные жанры

```python
prompts = {
    "electronic": "Энергичный EDM-трек с глубоким басом, синтезаторными арпеджио и ритмичным битом, 130 BPM",
    "jazz": "Гладкое джазовое фортепианное трио с контрабасом и щеточками на барабанах, расслабленный темп",
    "rock": "Тяжелый рок-рифф на электрогитаре с искажением, барабанами и басом, мощный и энергичный",
    "classical": "Оркестровое произведение со струнными и деревянными духовыми, драматичное и кинематографичное",
    "ambient": "Атмосферный эмбиент-саундскейп с пэдами и тонкими текстурами, мечтательный",
    "hiphop": "Лоу-фай хип-хоп бит с потрескиванием винила, мягким пианино и расслабленными барабанами, 85 BPM"
}
```

### Звуковые эффекты

```python
prompts = {
    "explosion": "Мощный взрыв с обломками и огнем, кинематографично",
    "footsteps": "Шаги по гравию, медленный темп ходьбы",
    "car": "Ревущий и ускоряющийся двигатель спортивного автомобиля",
    "water": "Брызги и капли воды в пещере",
    "wind": "Сильный ветер, завывающий в горах",
    "fire": "Треск костра с потрескиванием дров"
}
```

### Атмосферные/фоновые

```python
prompts = {
    "cafe": "Атмосфера кофейни с тихим разговором и эспрессо-машиной",
    "ocean": "Океанские волны на песчаном пляже, чайки вдали",
    "city": "Оживленная городская улица с движением, сигналами и пешеходами",
    "rain": "Мягкий дождь по окну с редкими раскатами грома",
    "space": "Гул и сигналы интерьера научно-фантастического космического корабля"
}
```

## Дополнительные параметры

### Управление генерацией

```python
output = generate_diffusion_cond(
    model,
    conditioning=conditioning,
    steps=150,              # Больше шагов = лучшее качество
    cfg_scale=7,            # Соответствие промпту (5-10)
    sample_size=sample_size,
    sample_rate=sample_rate,
    device="cuda",
    seed=42                 # Воспроизводимые результаты
)
```

### Переменная длительность

```python
# Короткий звуковой эффект (5 секунд)
conditioning = [{
    "prompt": "Скрипящая дверь, медленно открывающаяся",
    "seconds_start": 0,
    "seconds_total": 5
}]

# Средний клип (30 секунд)
conditioning = [{
    "prompt": "Зажигательная рок-музыка",
    "seconds_start": 0,
    "seconds_total": 30
}]

# Максимальная длина (47 секунд для Open)
conditioning = [{
    "prompt": "Амбиентная электронная музыка, развивающиеся текстуры",
    "seconds_start": 0,
    "seconds_total": 47
}]
```

## Пакетная генерация

```python
import os

prompts = [
    "Энергичный трек drum and bass",
    "Спокойная мелодия фортепиано",
    "Звуковые эффекты научно-фантастического лазера",
    "Дождь по жестяной крыше"
]

output_dir = "./audio_output"
os.makedirs(output_dir, exist_ok=True)

for i, prompt in enumerate(prompts):
    conditioning = [{
        "prompt": prompt,
        "seconds_start": 0,
        "seconds_total": 15
    }]

    output = generate_diffusion_cond(
        model,
        conditioning=conditioning,
        steps=100,
        cfg_scale=7,
        sample_size=sample_size,
        sample_rate=sample_rate,
        device="cuda"
    )

    torchaudio.save(f"{output_dir}/audio_{i}.wav", output[0].T.cpu(), sample_rate)
    print(f"Сгенерировано: {prompt[:30]}...")

    torch.cuda.empty_cache()
```

## Веб-интерфейс Gradio

```python
import gradio as gr
import torch
import torchaudio
from stable_audio_tools import get_pretrained_model
from stable_audio_tools.inference.generation import generate_diffusion_cond
import tempfile

model, model_config = get_pretrained_model("stabilityai/stable-audio-open-1.0")
model = model.to("cuda")

sample_rate = model_config["sample_rate"]
sample_size = model_config["sample_size"]

def generate_audio(prompt, duration, steps, cfg_scale, seed):
    conditioning = [{
        "prompt": prompt,
        "seconds_start": 0,
        "seconds_total": duration
    }]

    generator_seed = seed if seed > 0 else None

    output = generate_diffusion_cond(
        model,
        conditioning=conditioning,
        steps=steps,
        cfg_scale=cfg_scale,
        sample_size=sample_size,
        sample_rate=sample_rate,
        device="cuda",
        seed=generator_seed
    )

    audio = output[0].T.cpu()

    with tempfile.NamedTemporaryFile(suffix=".wav", delete=False) as f:
        torchaudio.save(f.name, audio, sample_rate)
        return f.name

demo = gr.Interface(
    fn=generate_audio,
    inputs=[
        gr.Textbox(label="Промпт", placeholder="Опишите нужное вам аудио..."),
        gr.Slider(1, 47, value=15, step=1, label="Длительность (секунды)"),
        gr.Slider(20, 200, value=100, step=10, label="Шаги"),
        gr.Slider(1, 15, value=7, step=0.5, label="Масштаб CFG"),
        gr.Number(value=-1, label="Seed (-1 для случайного)" )
    ],
    outputs=gr.Audio(label="Сгенерированное аудио", type="filepath"),
    title="Stable Audio Open - Текст в аудио",
    description="Генерируйте музыку и звуковые эффекты по текстовым описаниям. Работает на CLORE.AI.",
    examples=[
        ["Зажигательная электронная танцевальная музыка с синтезаторами, 128 BPM", 20, 100, 7, 42],
        ["Гроза с сильным дождем", 15, 100, 7, 123],
        ["Спокойная мелодия фортепиано, эмоциональная", 30, 100, 7, 456]
    ]
)

demo.launch(server_name="0.0.0.0", server_port=7860)
```

## Производительность

| Длительность | Шаги | GPU      | Время  |
| ------------ | ---- | -------- | ------ |
| 10 сек       | 100  | RTX 3090 | \~15с  |
| 10 сек       | 100  | RTX 4090 | \~10 с |
| 30 сек       | 100  | RTX 3090 | \~40 с |
| 30 сек       | 100  | RTX 4090 | \~25 с |
| 47 сек       | 100  | RTX 4090 | \~40 с |

## Советы по качеству

### Лучше для музыки

```python
# Укажите темп и стиль
prompt = "Энергичная рок-музыка, электрогитара, барабаны, бас, 140 BPM, высокая энергия"

# Будьте конкретны в отношении инструментов
prompt = "Партия акустической гитары перебором соло, фолк-стиль, теплый и интимный"

# Опишите настроение
prompt = "Меланхоличное произведение для фортепиано, минорная тональность, медленный темп, эмоциональное и грустное"
```

### Лучше для звуковых эффектов

```python
# Будьте конкретны
prompt = "Одиночный выстрел из винтовки, на открытом воздухе, эхо"

# Укажите окружение
prompt = "Шаги по деревянному полу, в помещении, медленный темп, скрип"

# Опишите текстуру
prompt = "Треск огня, большой костер, потрескивание дров, искры"
```

## Оценка стоимости

Типичные расценки маркетплейса CLORE.AI:

| GPU           | Почасовая ставка | \~30-сек клипов/час |
| ------------- | ---------------- | ------------------- |
| RTX 3060 12GB | \~$0.03          | \~50                |
| RTX 3090 24GB | \~$0.06          | \~90                |
| RTX 4090 24GB | \~$0.10          | \~140               |
| A100 40 ГБ    | \~$0.17          | \~200               |

*Цены варьируются. Проверьте* [*маркетплейс CLORE.AI*](https://clore.ai/marketplace) *актуальные тарифы.*

## Устранение неполадок

### Недостаточно памяти

```python
# Уменьшите длительность
conditioning = [{
    "prompt": prompt,
    "seconds_total": 15  # Вместо 47
}]

# Или включите выгрузку на CPU
model.enable_model_cpu_offload()
```

### Плохое качество вывода

* Увеличьте число шагов (150-200)
* Настройте масштаб CFG (попробуйте 5-10)
* Будьте более конкретны в промпте
* Попробуйте другие seed-значения

### Нет звука / тишина

* Проверьте, достаточно ли описателен промпт
* Избегайте слишком абстрактных описаний
* Сначала попробуйте известные рабочие промпты

### Аудио-артефакты

* Увеличьте число шагов
* Уменьшите масштаб CFG
* Сократите длительность
* Проверьте, нет ли троттлинга GPU из-за перегрева

## Stable Audio и другие

| Функция          | Stable Audio | AudioCraft | Bark   |
| ---------------- | ------------ | ---------- | ------ |
| Музыка           | Отлично      | Отлично    | Плохо  |
| Звуковые эффекты | Отлично      | Хорошо     | Плохо  |
| Речь             | Нет          | Нет        | Да     |
| Длительность     | 47 с / 3 мин | 30 с       | 15 с   |
| Качество         | 44,1 кГц     | 32 кГц     | 24 кГц |
| Открыть          | Частично     | Да         | Да     |

**Используйте Stable Audio, когда:**

* Генерация музыки высокого качества
* Звуковые эффекты для игр/видео
* Фоновая музыка
* Атмосферные звуковые пейзажи

## Дальнейшие шаги

* [AudioCraft](/guides/guides_v2-ru/audio-i-golos/audiocraft-music.md) - Генерация музыки от Meta
* [Bark TTS](/guides/guides_v2-ru/audio-i-golos/bark-tts.md) - Синтез речи
* [Demucs](/guides/guides_v2-ru/audio-i-golos/demucs-separation.md) - Разделение аудио
* [Whisper](/guides/guides_v2-ru/audio-i-golos/whisper-transcription.md) - Транскрибация


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.clore.ai/guides/guides_v2-ru/audio-i-golos/stable-audio.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
