> 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/chattts.md).

# Разговорная речь ChatTTS

ChatTTS — это генеративная модель речи с 300 млн параметров, оптимизированная для диалоговых сценариев, таких как ассистенты LLM, чат-боты и интерактивные голосовые приложения. Она воспроизводит естественно звучащую речь с реалистичными паузами, смехом, словами-паразитами и интонацией — характеристиками, которые большинству TTS-систем трудно воспроизвести. Модель поддерживает английский и китайский языки и генерирует аудио с частотой 24 кГц.

**GitHub:** [2noise/ChatTTS](https://github.com/2noise/ChatTTS) (30K+ звёзд) **Лицензия:** AGPLv3+ (код), CC BY-NC 4.0 (веса модели — некоммерческое использование)

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

* **Разговорная просодия** — естественные паузы, слова-паразиты и интонация, настроенные для диалога
* **Метки тонкой настройки** — `[oral_0-9]`, `[laugh_0-2]`, `[break_0-7]`, `[uv_break]`, `[lbreak]`
* **Многоголосие** — выбирайте случайных дикторов или повторно используйте встраивания дикторов для согласованности
* **Температура / top-P / top-K** — управляют разнообразием генерации
* **Пакетный вывод** — синтезируйте несколько текстов за один вызов
* **Компактность** — \~300 млн параметров, работает на 4 ГБ VRAM

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

| Компонент | Минимум                  | Рекомендуется       |
| --------- | ------------------------ | ------------------- |
| GPU       | RTX 3060 (4 ГБ свободно) | RTX 3090 / RTX 4090 |
| VRAM      | 4 ГБ                     | 8 ГБ+               |
| ОЗУ       | 8 ГБ                     | 16 ГБ               |
| Диск      | 5 ГБ                     | 10 ГБ               |
| Python    | 3.9+                     | 3.11                |
| CUDA      | 12.8+                    | 12.8+               |

**Рекомендация Clore.ai:** RTX 3060 ($0.03–0.07/час) комфортно справляется с ChatTTS. Для пакетного производства или меньшей задержки выберите RTX 3090 ($0.07–0.21/час).

## Установка

```bash
# Установка из PyPI
pip install ChatTTS torch torchaudio

# Или установите из исходного кода для получения последних возможностей
git clone https://github.com/2noise/ChatTTS.git
cd ChatTTS
pip install -r requirements.txt

# Проверить GPU
python -c "import torch; print(torch.cuda.get_device_name(0))"
```

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

```python
import ChatTTS
import torch
import torchaudio

# Инициализация и загрузка модели (загружает веса при первом запуске)
chat = ChatTTS.Chat()
chat.load(compile=False)  # Установите compile=True для более быстрого вывода после прогрева

texts = [
    "Привет! Как проходит твой день?",
    "Я всё утро работаю над этим проектом. Всё идёт очень хорошо.",
]

wavs = chat.infer(texts)

for i, wav in enumerate(wavs):
    audio_tensor = torch.from_numpy(wav)
    if audio_tensor.dim() == 1:
        audio_tensor = audio_tensor.unsqueeze(0)
    torchaudio.save(f"output_{i}.wav", audio_tensor, 24000)
    print(f"Сохранён output_{i}.wav")
```

## Примеры использования

### Стабильный голос диктора

Сэмплируйте случайное встраивание диктора и повторно используйте его в нескольких генерациях для стабильного голоса:

```python
import ChatTTS
import torch
import torchaudio

chat = ChatTTS.Chat()
chat.load(compile=False)

# Сэмплируйте диктора — сохраните эту строку, чтобы использовать позже
rand_spk = chat.sample_random_speaker()

params_infer_code = ChatTTS.Chat.InferCodeParams(
    spk_emb=rand_spk,
    temperature=0.3,
    top_P=0.7,
    top_K=20,
)

params_refine_text = ChatTTS.Chat.RefineTextParams(
    prompt='[oral_2][laugh_0][break_4]',
)

texts = ["Добро пожаловать в сегодняшний выпуск. Позвольте мне рассказать вам кое-что интересное."]

wavs = chat.infer(
    texts,
    params_refine_text=params_refine_text,
    params_infer_code=params_infer_code,
)

audio = torch.from_numpy(wavs[0])
if audio.dim() == 1:
    audio = audio.unsqueeze(0)
torchaudio.save("consistent_speaker.wav", audio, 24000)
```

### Метки управления на уровне слов

Вставляйте управляющие метки прямо в текст для точной просодии:

```python
import ChatTTS
import torch
import torchaudio

chat = ChatTTS.Chat()
chat.load(compile=False)

# Метки: [uv_break] = короткая пауза, [laugh] = смех, [lbreak] = длинная пауза
text = 'Какое [uv_break]ваше любимое блюдо?[laugh][lbreak]'

rand_spk = chat.sample_random_speaker()
params = ChatTTS.Chat.InferCodeParams(spk_emb=rand_spk, temperature=0.3)

# skip_refine_text=True сохраняет ваши ручные управляющие метки
wavs = chat.infer(text, skip_refine_text=True, params_infer_code=params)

audio = torch.from_numpy(wavs[0])
if audio.dim() == 1:
    audio = audio.unsqueeze(0)
torchaudio.save("controlled_output.wav", audio, 24000)
```

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

ChatTTS поставляется с веб-интерфейсом Gradio для интерактивного использования:

```bash
cd ChatTTS
python examples/web/webui.py --server_name 0.0.0.0 --server_port 7860
```

Откройте `http_pub` URL-адрес из панели заказов Clore.ai для доступа к интерфейсу.

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

* **Используйте `compile=True`** после первоначального тестирования — компиляция PyTorch добавляет время запуска, но значительно ускоряет повторные запуски вывода
* **Проброс портов** — откройте порт `7860/http` при развёртывании с WebUI
* **Docker-образ** — используйте `pytorch/pytorch:2.11.0-cuda12.8-cudnn9-runtime` в качестве базового
* **Сохранение голоса диктора** — сохраните `rand_spk` строки в файл, чтобы можно было повторно использовать голоса между сеансами без повторного сэмплирования
* **Пакетируйте запросы** — `chat.infer()` принимает список текстов и обрабатывает их вместе, что эффективнее, чем вызовы по одному
* **Некоммерческая лицензия** — веса модели распространяются по лицензии CC BY-NC 4.0; проверьте требования к лицензированию для вашего случая использования

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

| Проблема                             | Решение                                                                                                                                     |
| ------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------- |
| `CUDA out of memory`                 | Уменьшите размер пакета или используйте GPU с ≥ 6 ГБ VRAM                                                                                   |
| Модель медленно загружается          | Заранее скачайте с HuggingFace: `huggingface-cli download 2Noise/ChatTTS`                                                                   |
| В аудио есть статический шум         | Это сделано намеренно в модели с открытым исходным кодом (мера против злоупотреблений); используйте `compile=True` для более чистого вывода |
| `torchaudio.save` ошибка размерности | Убедитесь, что тензор двумерный: `audio.unsqueeze(0)` при необходимости                                                                     |
| Искажённый китайский вывод           | Убедитесь, что входной текст закодирован в UTF-8; установите `WeTextProcessing` для лучшей нормализации                                     |
| Медленный первый инференс            | Обычный — компиляция модели и загрузка весов происходят при первом вызове; последующие вызовы быстрее                                       |


---

# 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/chattts.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.
