# Dia TTS (Nari Labs)

Dia от Nari Labs — это продвинутая модель преобразования текста в речь, которая специализируется на **реалистичных многоголосых диалогах**. В отличие от традиционного TTS, который обрабатывает одного говорящего за раз, Dia генерирует естественные разговоры между несколькими говорящими с эмоциями, смехом, колебаниями и другими невербальными сигналами. При 1,6 миллиардах параметров она работает на любой видеокарте с 8 ГБ и более.

## Ключевые особенности

* **Многоголосые диалоги**: Генерирует разговоры между 2 и более говорящими за один проход
* **Невербальные сигналы**: Смех `(смеётся)`, колебания `(вздыхает)`, паузы — автоматически встраиваются
* **Эмоциональная речь**: Естественная интонация без явных тегов эмоций
* **1,6B параметров**: Помещается на RTX 3070/3080 (8–10 ГБ видеопамяти)
* **Лицензия Apache 2.0**: Полное коммерческое использование
* **Интеграция с HuggingFace**: Работает с библиотекой Transformers

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

| Компонент | Минимум        | Рекомендуется   |
| --------- | -------------- | --------------- |
| GPU       | RTX 3070 (8GB) | RTX 3080 (10GB) |
| VRAM      | 8GB            | 10GB+           |
| ОЗУ       | 16GB           | 32GB            |
| Диск      | 10GB           | 15GB            |
| Python    | 3.9+           | 3.11            |

**Рекомендуемый GPU на Clore.ai**: RTX 3080 10GB (\~$0.2–0.5/день)

## Установка

```bash
# Вариант 1: pip install
pip install dia-tts

# Вариант 2: Из исходников
git clone https://github.com/nari-labs/dia.git
cd dia
pip install -e .
```

## Быстрый старт

### Базовый многоголосый диалог

```python
from dia import Dia

# Загрузить модель
model = Dia.from_pretrained("nari-labs/Dia-1.6B")

# Сгенерировать многоголосый разговор
# [S1] = Говорящий 1, [S2] = Говорящий 2
text = """[S1] Эй, ты пробовал новую платформу для аренды GPU?
[S2] Ты про Clore? Да, я арендовал RTX 4090 вчера.
[S1] Как прошло?
[S2] (смеётся) Честно? Гораздо дешевле, чем я ожидал. Примерно два бакса в день.
[S1] Не может быть. Это... это действительно безумие."""

audio = model.generate(text)

# Сохранить в файл
import soundfile as sf
sf.write("dialog.wav", audio, samplerate=24000)
```

### С эмоциями и невербальными сигналами

```python
# Dia автоматически обрабатывает естественные речевые паттерны
text = """[S1] Я только что получил результаты...
[S2] И? Не томи меня!
[S1] (вздыхает) Мы прошли. Мы действительно прошли все тесты.
[S2] (смеётся) Я же говорила! Я говорила, что у нас получится!
[S1] Не могу в это поверить... (смеётся) Ладно, ладно, давайте праздновать."""

audio = model.generate(text, temperature=0.8)
sf.write("emotional_dialog.wav", audio, samplerate=24000)
```

### Один говорящий

```python
# Работает и для одного говорящего
text = "[S1] Добро пожаловать в документацию Clore AI. В этом руководстве мы пройдём по настройке вашей первой аренды GPU и развертыванию модели машинного обучения."

audio = model.generate(text)
sf.write("narration.wav", audio, samplerate=24000)
```

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

```python
# Запустить интерактивную демонстрацию
python -m dia.app --port 7860 --share

# Или вручную:
import gradio as gr
from dia import Dia

model = Dia.from_pretrained("nari-labs/Dia-1.6B")

def generate_speech(text):
    audio = model.generate(text)
    return (24000, audio)

demo = gr.Interface(
    fn=generate_speech,
    inputs=gr.Textbox(label="Диалог (используйте теги [S1], [S2])", lines=10),
    outputs=gr.Audio(label="Generated Speech"),
    title="Dia TTS — Многоголосый диалог"
)
demo.launch(server_port=7860)
```

## Сценарии использования

* **Генерация подкастов**: Создавайте разговорные подкасты по сценариям
* **Диалоги для аудиокниг**: Генерируйте диалоги персонажей с различными голосами
* **Диалоги для игр**: Разговоры NPC с естественными речевыми паттернами
* **Данные для обучения**: Генерируйте разнообразные речевые датасеты для обучения ASR
* **Голоса для чатботов**: Многотуровые диалоги с эмоциональными ответами

## Советы для пользователей Clore.ai

* **RTX 3080 — идеально**: 10 ГБ видеопамяти легко справляются с Dia примерно за \~$0.2–0.5/день
* **Пакетная генерация**: Обрабатывайте несколько диалогов в цикле, чтобы максимально использовать время аренды
* **Сохраняйте модели на постоянном хранилище**: Если у вашего экземпляра Clore есть постоянный диск, кешируйте модель, чтобы избежать повторной загрузки
* **Температура 0.7–0.9**: Ниже = более последовательный, выше = более выразительный/разнообразный
* **Только английский**: В настоящее время Dia ориентирована на английский — для многоязычности см. руководство Qwen3-TTS

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

| Проблема                          | Решение                                                                                    |
| --------------------------------- | ------------------------------------------------------------------------------------------ |
| CUDA — недостаточно памяти        | Используйте `model.to("cuda", torch_dtype=torch.float16)` для половинной точности          |
| Голоса говорящих похожи           | Добавьте больше текста/контекста для каждого говорящего; попробуйте увеличить температуру  |
| Невербальные сигналы игнорируются | Убедитесь в правильном формате: `(смеётся)`, `(вздыхает)` в скобках                        |
| Низкое качество аудио             | Увеличьте `num_steps` параметр, если он доступен; убедитесь в частоте дискретизации 24 кГц |

## Дополнительное чтение

* [GitHub Nari Labs](https://github.com/nari-labs/dia)
* [Модель на HuggingFace](https://huggingface.co/nari-labs/Dia-1.6B)
* [Сравнение: Dia vs ElevenLabs](https://nari-labs.github.io/dia/) — официальная демонстрационная страница
