> 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 Marketplace](https://clore.ai/marketplace).
{% endhint %}

## Почему Stable Audio?

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

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

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

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

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

```
pytorch/pytorch:2.5.1-cuda12.4-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='Prompt'),
        gr.Slider(1, 47, value=10, label='Duration (sec)'),
        gr.Slider(10, 150, value=100, label='Steps'),
        gr.Number(value=-1, label='Seed')
    ],
    outputs=gr.Audio(label='Generated Audio'),
    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 12 ГБ  | 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 = [
    "Energetic drum and bass track",
    "Calm piano melody",
    "Sci-fi laser sound effects",
    "Rain on a tin roof"
]

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"Generated: {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="Prompt", 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 Scale"),
        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 40GB     | \~$0.17          | \~200                   |

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

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

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

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

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

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

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

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

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

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

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

## Stable Audio vs Другие

| Функция      | Stable Audio | AudioCraft | Bark   |
| ------------ | ------------ | ---------- | ------ |
| Музыка       | Отлично      | Отлично    | Плохо  |
| SFX          | Отлично      | Хорошо     | Плохо  |
| Речь         | Нет          | Нет        | Да     |
| Длительность | 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.
