# F5-TTS

Генерируйте естественную речь с F5-TTS — быстрым и плавным TTS-системой.

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

## Что такое F5-TTS?

F5-TTS предлагает:

* Быструю генерацию (быстрее реального времени)
* Естественную просодию и интонацию
* Клонирование голоса в режиме zero-shot
* Поддержку нескольких языков

## Ресурсы

* **GitHub:** [SWivid/F5-TTS](https://github.com/SWivid/F5-TTS)
* **HuggingFace:** [SWivid/F5-TTS](https://huggingface.co/SWivid/F5-TTS)
* **Статья:** [Статья F5-TTS](https://arxiv.org/abs/2410.06885)
* **Демо:** [HuggingFace Space](https://huggingface.co/spaces/mrfakename/E2-F5-TTS)

## Рекомендованное оборудование

| Компонент | Минимум       | Рекомендуется | Оптимально    |
| --------- | ------------- | ------------- | ------------- |
| GPU       | RTX 3060 12GB | RTX 4080 16GB | RTX 4090 24GB |
| VRAM      | 6 ГБ          | 12GB          | 16GB          |
| CPU       | 4 ядра        | 8 ядер        | 16 ядер       |
| ОЗУ       | 16GB          | 32GB          | 64GB          |
| Хранилище | 20 ГБ SSD     | 50GB NVMe     | 100GB NVMe    |
| Интернет  | 100 Мбит/с    | 500 Мбит/с    | 1 Гбит/с      |

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

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

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

**Порты:**

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

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

```bash
pip install f5-tts && \
f5-tts-webui
```

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

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

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

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

## Установка

```bash
pip install f5-tts

# Или из исходников
git clone https://github.com/SWivid/F5-TTS.git
cd F5-TTS
pip install -e .
```

## Что вы можете создать

### Содержимое голоса

* Производство подкастов
* Чтение аудиокниг
* Озвучивание видео

### Доступность

* Программы чтения с экрана
* Читалки документов
* Учебные материалы

### Интерактивные приложения

* Голосовые ассистенты
* NPC в играх
* Боты для обслуживания клиентов

### Творческие проекты

* Голоса персонажей
* Аудиодрамы
* Вокал для музыки

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

### Простой TTS

```python
from f5_tts import F5TTS

# Инициализация
tts = F5TTS(device="cuda")

# Сгенерировать речь
audio = tts.generate(
    text="Hello! This is F5-TTS generating natural speech.",
    output_path="output.wav"
)
```

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

```python
from f5_tts import F5TTS

tts = F5TTS(device="cuda")

# Клонировать голос из образца аудио
audio = tts.generate(
    text="This is my cloned voice speaking new text.",
    ref_audio="reference_voice.wav",
    ref_text="This is the reference text spoken in the audio.",
    output_path="cloned_output.wav"
)
```

## Поддержка нескольких языков

```python
from f5_tts import F5TTS

tts = F5TTS(device="cuda")

# Английский
tts.generate(
    text="Hello, how are you today?",
    ref_audio="english_speaker.wav",
    output_path="english.wav"
)

# Китайский
tts.generate(
    text="你好，今天怎么样？",
    ref_audio="chinese_speaker.wav",
    output_path="chinese.wav"
)

# Французский
tts.generate(
    text="Bonjour, comment allez-vous?",
    ref_audio="french_speaker.wav",
    output_path="french.wav"
)
```

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

```python
from f5_tts import F5TTS
import os

tts = F5TTS(device="cuda")

texts = [
    "Welcome to our product demonstration.",
    "Today we'll show you the key features.",
    "Let's start with the main dashboard.",
    "As you can see, the interface is intuitive.",
    "Thank you for watching!"
]

ref_audio = "narrator_voice.wav"
ref_text = "Sample text from the reference audio."
output_dir = "./narration"
os.makedirs(output_dir, exist_ok=True)

for i, text in enumerate(texts):
    print(f"Generating {i+1}/{len(texts)}: {text[:50]}...")

    tts.generate(
        text=text,
        ref_audio=ref_audio,
        ref_text=ref_text,
        output_path=f"{output_dir}/segment_{i:03d}.wav"
    )
```

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

```python
from f5_tts import F5TTS

tts = F5TTS(device="cuda")

long_text = """
Добро пожаловать в это подробное руководство по машинному обучению.
В этой главе мы изучим основы нейронных сетей.
Нейронные сети — это вычислительные системы, вдохновлённые биологическими нейронными сетями.
Они состоят из взаимосвязанных узлов, которые обрабатывают информацию.
Давайте начнём с основных понятий.
"""

# F5-TTS обрабатывает длинный текст, разбивая его на предложения
audio = tts.generate(
    text=long_text,
    ref_audio="narrator.wav",
    output_path="long_narration.wav",
    chunk_size=200  # Символов в одном фрагменте
)
```

## Интерфейс Gradio

```python
import gradio as gr
from f5_tts import F5TTS
import tempfile

tts = F5TTS(device="cuda")

def generate_speech(text, ref_audio, ref_text):
    with tempfile.NamedTemporaryFile(suffix=".wav", delete=False) as f:
        tts.generate(
            text=text,
            ref_audio=ref_audio,
            ref_text=ref_text,
            output_path=f.name
        )
        return f.name

demo = gr.Interface(
    fn=generate_speech,
    inputs=[
        gr.Textbox(label="Text to Speak", lines=5),
        gr.Audio(type="filepath", label="Reference Voice"),
        gr.Textbox(label="Reference Text", lines=2)
    ],
    outputs=gr.Audio(label="Generated Speech"),
    title="F5-TTS Voice Cloning",
    description="Clone any voice with F5-TTS on CLORE.AI servers"
)

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

## API-сервер

```python
from fastapi import FastAPI, UploadFile, File, Form
from fastapi.responses import FileResponse
from f5_tts import F5TTS
import tempfile

app = FastAPI()
tts = F5TTS(device="cuda")

@app.post("/synthesize")
async def synthesize(
    text: str = Form(...),
    ref_audio: UploadFile = File(...),
    ref_text: str = Form(...)
):
    with tempfile.NamedTemporaryFile(suffix=".wav", delete=False) as ref_file:
        ref_file.write(await ref_audio.read())
        ref_path = ref_file.name

    with tempfile.NamedTemporaryFile(suffix=".wav", delete=False) as out_file:
        tts.generate(
            text=text,
            ref_audio=ref_path,
            ref_text=ref_text,
            output_path=out_file.name
        )
        return FileResponse(out_file.name, media_type="audio/wav")

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

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

| Длина текста  | GPU      | Время генерации | Коэффициент реального времени |
| ------------- | -------- | --------------- | ----------------------------- |
| 100 символов  | RTX 3090 | 0.5 с           | 5x                            |
| 100 символов  | RTX 4090 | 0.3 с           | 8x                            |
| 500 символов  | RTX 4090 | 1.2 с           | 10x                           |
| 1000 символов | A100     | 2.0с            | 12x                           |

## Распространённые проблемы и решения

### Плохое соответствие голоса

**Проблема:** Сгенерированный голос не соответствует образцу

**Решения:**

* Используйте 5–15 секунд чистого образца аудио
* Предоставьте точную расшифровку текста образца
* Избегайте фонового шума в образце
* Совпадение языка текста и образца

### Проблемы с произношением

**Проблема:** Неправильно произносит слова или имена

**Решения:**

```python

# Используйте фонетические подсказки для трудных слов
text = "Welcome to CLORE (pronounced KLOR) AI platform."

# Или используйте форматирование, похожее на SSML
text = "The CEO, John Smith (SMIHTH), will speak."
```

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

**Проблема:** Выход звучит роботизированно или искажённо

**Решения:**

* Используйте высококачественный образец аудио (24 кГц+)
* Очистите образец от шума
* Попробуйте другие образцы
* Увеличьте настройки качества генерации

### Проблемы с памятью

**Проблема:** Недостаточно памяти для длинных текстов

**Решения:**

```python

# Обрабатывайте меньшими фрагментами
tts.generate(
    text=long_text,
    chunk_size=100,  # Меньшие фрагменты
    overlap=20  # Плавные переходы
)
```

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

**Проблема:** Генерация занимает слишком много времени

**Решения:**

* Используйте инференс на GPU (CUDA)
* Уменьшите chunk\_size для более быстрой обработки
* Используйте RTX 4090 или лучше
* Включите половинную точность (fp16)

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

### Голос не соответствует образцу

* Используйте 5–15 секунд чистого образца аудио
* Точно расшифруйте текст образца
* Избегайте фонового шума в образце

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

* Используйте образец с высокой частотой дискретизации (24 кГц+)
* Очистите образец от шума
* Попробуйте другие образцы

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

* Используйте CUDA (не 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** токенов
* Сравнивайте цены у разных провайдеров

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

* [XTTS](https://docs.clore.ai/guides/guides_v2-ru/audio-i-golos/xtts-coqui) - Альтернативный TTS
* [Bark TTS](https://docs.clore.ai/guides/guides_v2-ru/audio-i-golos/bark-tts) - Экспрессивный TTS
* [SadTalker](https://docs.clore.ai/guides/guides_v2-ru/govoryashie-golovy/sadtalker) - Говорящие головы
