# Bark TTS

Генерируйте реалистичную речь и аудио с Bark AI.

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

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

| Параметр      | Минимум      | Рекомендуется  |
| ------------- | ------------ | -------------- |
| ОЗУ           | 8GB          | 16 ГБ+         |
| VRAM          | 4 ГБ (small) | 8 ГБ+ (обычно) |
| Сеть          | 200 Мбит/с   | 500 Мбит/с+    |
| Время запуска | 3–5 минут    | -              |

{% hint style="warning" %}
**Время запуска:** При первом запуске загружаются модели Bark (3–5 минут в зависимости от скорости сети). HTTP 502 в это время — нормально.
{% endhint %}

## Аренда на CLORE.AI

1. Посетите [CLORE.AI Marketplace](https://clore.ai/marketplace)
2. Отфильтруйте по типу GPU, объему VRAM и цене
3. Выберите **On-Demand** (фиксированная ставка) или **Spot** (цена по ставке)
4. Настройте ваш заказ:
   * Выберите Docker-образ
   * Установите порты (TCP для SSH, HTTP для веб-интерфейсов)
   * Добавьте переменные окружения при необходимости
   * Введите команду запуска
5. Выберите способ оплаты: **CLORE**, **BTC**, или **USDT/USDC**
6. Создайте заказ и дождитесь развертывания

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

* Найдите данные для подключения в **Моих заказах**
* Веб-интерфейсы: используйте URL HTTP-порта
* SSH: `ssh -p <port> root@<proxy-address>`

## Что такое Bark?

Bark от Suno AI может генерировать:

* Реалистичную речь на нескольких языках
* Различные голоса говорящих
* Невербальные звуки (смех, вздохи)
* Музыку и звуковые эффекты
* Многоязычная речь

## Требования

| Качество  | VRAM | Рекомендуется |
| --------- | ---- | ------------- |
| Небольшая | 4 ГБ | RTX 3060      |
| Обычно    | 8GB  | RTX 3070      |
| Высокий   | 12GB | RTX 3090      |

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

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

```
pytorch/pytorch:2.5.1-cuda12.4-cudnn9-runtime
```

**Порты:**

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

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

```bash
pip install git+https://github.com/suno-ai/bark.git gradio scipy && \
python -c "
import gradio as gr
from bark import SAMPLE_RATE, generate_audio, preload_models
import scipy.io.wavfile as wav
import numpy as np
import tempfile

preload_models()

def generate(text, voice):
    audio = generate_audio(text, history_prompt=voice)
    with tempfile.NamedTemporaryFile(suffix='.wav', delete=False) as f:
        wav.write(f.name, SAMPLE_RATE, (audio * 32767).astype(np.int16))
        return f.name

voices = ['v2/en_speaker_0', 'v2/en_speaker_1', 'v2/en_speaker_2', 'v2/en_speaker_3',
          'v2/en_speaker_4', 'v2/en_speaker_5', 'v2/en_speaker_6', 'v2/en_speaker_7',
          'v2/en_speaker_8', 'v2/en_speaker_9']

demo = gr.Interface(fn=generate, inputs=[gr.Textbox(lines=5), gr.Dropdown(voices)],
                   outputs=gr.Audio(), title='Bark TTS')
demo.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` в примерах ниже.

### Проверьте, что всё работает

```bash
# Проверьте, доступен ли интерфейс Gradio
curl https://your-http-pub.clorecloud.net/
```

{% hint style="warning" %}
Если вы получаете HTTP 502, подождите 3–5 минут — сервис загружает модели.
{% endhint %}

## Установка

```bash
pip install git+https://github.com/suno-ai/bark.git
pip install scipy
```

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

```python
from bark import SAMPLE_RATE, generate_audio, preload_models
import scipy.io.wavfile as wav
import numpy as np

# Предзагрузка моделей (загрузка при первом запуске)
preload_models()

# Генерация аудио
text = "Hello, this is a test of Bark text to speech."
audio = generate_audio(text)

# Сохранить как WAV
wav.write("output.wav", SAMPLE_RATE, (audio * 32767).astype(np.int16))
```

## Выбор голоса

### Встроенные голоса

```python

# Англоязычные говорящие (0–9)
audio = generate_audio("Hello!", history_prompt="v2/en_speaker_0")
audio = generate_audio("Hello!", history_prompt="v2/en_speaker_3")
audio = generate_audio("Hello!", history_prompt="v2/en_speaker_9")

# Другие языки
audio = generate_audio("Bonjour!", history_prompt="v2/fr_speaker_0")  # Французский
audio = generate_audio("Hallo!", history_prompt="v2/de_speaker_0")    # Немецкий
audio = generate_audio("Hola!", history_prompt="v2/es_speaker_0")     # Испанский
audio = generate_audio("Ciao!", history_prompt="v2/it_speaker_0")     # Итальянский
audio = generate_audio("Olá!", history_prompt="v2/pt_speaker_0")      # Португальский
audio = generate_audio("Привет!", history_prompt="v2/ru_speaker_0")   # Русский
audio = generate_audio("こんにちは!", history_prompt="v2/ja_speaker_0") # Японский
audio = generate_audio("你好!", history_prompt="v2/zh_speaker_0")      # Китайский
```

### Доступные языки

| Язык          | Код | Говорящие |
| ------------- | --- | --------- |
| Английский    | en  | 0-9       |
| Немецкий      | de  | 0-9       |
| Испанский     | es  | 0-9       |
| Французский   | fr  | 0-9       |
| Хинди         | hi  | 0-9       |
| Итальянский   | it  | 0-9       |
| Японский      | ja  | 0-9       |
| Корейский     | ko  | 0-9       |
| Польский      | pl  | 0-9       |
| Португальский | pt  | 0-9       |
| Русский       | ru  | 0-9       |
| Турецкий      | tr  | 0-9       |
| Китайский     | zh  | 0-9       |

## Невербальные звуки

Bark может генерировать невербальное аудио:

```python

# Смех
audio = generate_audio("Hello! [laughs] That's so funny!")

# Вздохи
audio = generate_audio("[sighs] I'm so tired today.")

# Задыхание
audio = generate_audio("[gasps] Oh my god!")

# Окашливание
audio = generate_audio("[clears throat] Ahem, attention please.")

# Музыкальные ноты
audio = generate_audio("♪ La la la ♪")
```

## Длительное аудио

Для текста длиннее 13 секунд:

```python
from bark import generate_audio
from bark.generation import SAMPLE_RATE
import numpy as np

def generate_long_audio(text, voice="v2/en_speaker_6"):
    # Разбить на предложения
    sentences = text.replace(".", ".|").replace("?", "?|").replace("!", "!|").split("|")
    sentences = [s.strip() for s in sentences if s.strip()]

    audio_segments = []
    for sentence in sentences:
        audio = generate_audio(sentence, history_prompt=voice)
        audio_segments.append(audio)
        # Добавить небольшую паузу между предложениями
        audio_segments.append(np.zeros(int(0.25 * SAMPLE_RATE)))

    return np.concatenate(audio_segments)

long_text = """
Это более длинный фрагмент текста, который будет разбит на несколько сегментов.
Каждый сегмент будет сгенерирован отдельно. Затем они будут объединены.
Это позволяет генерировать аудио любой длины.
"""

audio = generate_long_audio(long_text)
```

## Клонирование голоса

Создание пользовательских голосовых подсказок:

```python
from bark.generation import preload_models, generate_text_semantic
from bark.api import semantic_to_waveform
from bark import generate_audio, SAMPLE_RATE
import numpy as np

# Генерировать с определёнными характеристиками

# Подсказка может включать описание говорящего

# Сначала сгенерируйте эталон
voice_prompt = "v2/en_speaker_6"
text = "This is how I sound when I speak normally."
audio = generate_audio(text, history_prompt=voice_prompt)

# Сохранить как пользовательский голос (упрощённый пример)
np.savez("custom_voice.npz", audio=audio)
```

## Пакетная обработка

```python
import os
from bark import generate_audio, SAMPLE_RATE
import scipy.io.wavfile as wav
import numpy as np

texts = [
    "Welcome to our podcast.",
    "Today we'll discuss artificial intelligence.",
    "Let's get started with the introduction.",
]

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

voice = "v2/en_speaker_6"

for i, text in enumerate(texts):
    print(f"Generating {i+1}/{len(texts)}")
    audio = generate_audio(text, history_prompt=voice)
    wav.write(
        os.path.join(output_dir, f"clip_{i:03d}.wav"),
        SAMPLE_RATE,
        (audio * 32767).astype(np.int16)
    )
```

## API-сервер

```python
from fastapi import FastAPI
from fastapi.responses import FileResponse
from bark import generate_audio, preload_models, SAMPLE_RATE
import scipy.io.wavfile as wav
import numpy as np
import tempfile
import os

app = FastAPI()
preload_models()

@app.post("/generate")
async def generate_speech(text: str, voice: str = "v2/en_speaker_6"):
    audio = generate_audio(text, history_prompt=voice)

    with tempfile.NamedTemporaryFile(suffix=".wav", delete=False) as f:
        wav.write(f.name, SAMPLE_RATE, (audio * 32767).astype(np.int16))
        return FileResponse(f.name, media_type="audio/wav")

# Запуск: uvicorn server:app --host 0.0.0.0 --port 8000
```

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

```bash
curl -X POST "http://localhost:8000/generate?text=Hello%20world&voice=v2/en_speaker_6" \
    --output speech.wav
```

## Оптимизация памяти

### Для ограниченной видеопамяти (VRAM)

```python
import os

# Используйте меньшую модель
os.environ["SUNO_USE_SMALL_MODELS"] = "1"

# Выгрузить на CPU
os.environ["SUNO_OFFLOAD_CPU"] = "1"

from bark import generate_audio
audio = generate_audio("Hello world")
```

### Включить FP16

```python
os.environ["SUNO_ENABLE_MPS"] = "0"

from bark import generate_audio
audio = generate_audio("Hello!", history_prompt="v2/en_speaker_6")
```

## Комбинирование с другим аудио

```python
from pydub import AudioSegment
import numpy as np
from bark import generate_audio, SAMPLE_RATE
import scipy.io.wavfile as wav
import tempfile

def bark_to_pydub(audio_array):
    with tempfile.NamedTemporaryFile(suffix=".wav", delete=False) as f:
        wav.write(f.name, SAMPLE_RATE, (audio_array * 32767).astype(np.int16))
        return AudioSegment.from_wav(f.name)

# Сгенерировать речь
speech = generate_audio("Welcome to the show!")
speech_audio = bark_to_pydub(speech)

# Загрузить фоновую музыку
music = AudioSegment.from_mp3("background.mp3")

# Смешать вместе
music = music - 20  # Понизить громкость музыки
combined = speech_audio.overlay(music)
combined.export("output.mp3", format="mp3")
```

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

| Режим     | GPU      | Время (10 слов) |
| --------- | -------- | --------------- |
| Обычно    | RTX 3090 | \~5 с           |
| Обычно    | RTX 4090 | \~3s            |
| Небольшая | RTX 3060 | \~8s            |
| CPU       | -        | \~60 с          |

## Сравнение с другими TTS

| Функция      | Bark     | Coqui   | Piper  |
| ------------ | -------- | ------- | ------ |
| Качество     | Лучшее   | Отлично | Хорошо |
| Скорость     | Медленно | Средне  | Быстро |
| Языки        | 13+      | 20+     | 30+    |
| Невербальные | Да       | Нет     | Нет    |
| VRAM         | 8 ГБ+    | 4 ГБ    | 1GB    |

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

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

```python

# Использовать маленькие модели
os.environ["SUNO_USE_SMALL_MODELS"] = "1"
os.environ["SUNO_OFFLOAD_CPU"] = "1"
```

### Медленная генерация

* Использовать GPU (не CPU)
* Держать модели загруженными между генерациями
* Генерировать более короткие сегменты

### Проблемы с качеством аудио

* Попробуйте разных говорящих
* Разбивайте длинный текст на предложения
* Избегайте специальных символов

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

Типичные ставки на маркетплейсе CLORE.AI (по состоянию на 2024):

| GPU       | Почасовая ставка | Дневная ставка | Сессия 4 часа |
| --------- | ---------------- | -------------- | ------------- |
| RTX 3060  | \~$0.03          | \~$0.70        | \~$0.12       |
| RTX 3090  | \~$0.06          | \~$1.50        | \~$0.25       |
| RTX 4090  | \~$0.10          | \~$2.30        | \~$0.40       |
| A100 40GB | \~$0.17          | \~$4.00        | \~$0.70       |
| A100 80GB | \~$0.25          | \~$6.00        | \~$1.00       |

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

**Экономьте деньги:**

* Используйте **Spot** рынок для гибких рабочих нагрузок (часто на 30–50% дешевле)
* Платите с помощью **CLORE** токенов
* Сравнивайте цены у разных провайдеров

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

* [Клонирование голоса RVC](/guides/guides_v2-ru/audio-i-golos/rvc-voice-clone.md)
* [Whisper Transcription](/guides/guides_v2-ru/audio-i-golos/whisper-transcription.md)
* [AudioCraft Music](/guides/guides_v2-ru/audio-i-golos/audiocraft-music.md)


---

# Agent Instructions: 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:

```
GET https://docs.clore.ai/guides/guides_v2-ru/audio-i-golos/bark-tts.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
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.
