Universal TTS Guide

A comprehensive guide to TTS dataset prep and training

View on GitHub

Ръководство 2: Настройка за TTS обучение

Навигация: Главно README Предишна стъпка: Подготовка на данни Следваща стъпка: Обучение на модела

Това ръководство ще ви помогне да настроите средата за обучение и да конфигурирате вашия TTS модел за обучение.


1. Избор на TTS рамка

Първата стъпка е да изберете TTS рамка, която отговаря на вашите нужди. Ето сравнение на популярните опции:

Рамка Предимства Недостатъци Хардуерни изисквания Най-добра за
Coqui TTS • Лесна за използване
• Много модели
• Добра документация
• Активна общност
• По-малко оптимизирана
• Някои модели са остарели
• Фина настройка: 8GB VRAM
• Пълно обучение: 12GB+ VRAM
Начинаещи, бързо прототипиране
ESPnet • Високо качество
• Най-съвременни модели
• Научно ориентирана
• По-стръмна крива на обучение
• По-сложна настройка
• Фина настройка: 8GB VRAM
• Пълно обучение: 16GB+ VRAM
Изследователи, високо качество
VITS • Най-високо качество
• End-to-end архитектура
• Бързо извеждане
• Трудна за обучение
• Изисква повече данни
• По-малко стабилна
• Фина настройка: 12GB VRAM
• Пълно обучение: 24GB+ VRAM
Продукционно качество, когато данните и GPU са налични
FastPitch/HiFi-GAN • Бързо извеждане
• Добро качество
• Стабилна
• Двустепенна архитектура
• По-малко гъвкава
• Фина настройка: 8GB VRAM
• Пълно обучение: 16GB+ VRAM
Продукционни приложения, балансирани изисквания
Tacotron 2 • Добре разбрана
• Много ресурси
• Стабилна
• По-старо качество
• По-бавно извеждане
• Проблеми с вниманието
• Фина настройка: 6GB VRAM
• Пълно обучение: 12GB+ VRAM
Наследствени системи, ограничен хардуер
XTTS/YourTTS • Многоезична
• Zero-shot възможности
• Малко данни за фина настройка
• Сложна архитектура
• По-трудна за модифициране
• Фина настройка: 16GB VRAM
• Пълно обучение: 32GB+ VRAM
Многоезични приложения, zero-shot TTS

1.1. Инсталиране на избраната рамка

След като изберете рамка, инсталирайте я и нейните зависимости:

Coqui TTS

# Инсталиране на Coqui TTS
pip install TTS

ESPnet

# Клониране на ESPnet репозиторито
git clone https://github.com/espnet/espnet
cd espnet

# Инсталиране на зависимостите
pip install -e .

VITS

# Клониране на VITS репозиторито
git clone https://github.com/jaywalnut310/vits
cd vits

# Инсталиране на зависимостите
pip install -r requirements.txt

2. Хардуерни изисквания

2.1. GPU изисквания

Хардуерните изисквания варират значително в зависимост от избрания модел и размера на набора от данни:

Тип обучение Размер на модела Минимален GPU Препоръчителен GPU Приблизително време за обучение
Фина настройка Малък (Tacotron 2) NVIDIA GTX 1060 6GB NVIDIA GTX 1660 Ti 6GB 4-8 часа
Фина настройка Среден (FastPitch) NVIDIA GTX 1070 8GB NVIDIA RTX 2060 8GB 6-12 часа
Фина настройка Голям (VITS, XTTS) NVIDIA RTX 2080 11GB NVIDIA RTX 3080 12GB 12-24 часа
Пълно обучение Малък (Tacotron 2) NVIDIA GTX 1080 8GB NVIDIA RTX 2070 8GB 2-5 дни
Пълно обучение Среден (FastPitch) NVIDIA RTX 2080 11GB NVIDIA RTX 3080 12GB 4-7 дни
Пълно обучение Голям (VITS, XTTS) NVIDIA RTX 3090 24GB NVIDIA A100 40GB 7-14 дни

2.2. CPU и системна памет

2.3. Облачни GPU опции

Ако нямате достъп до подходящ локален GPU, обмислете тези облачни опции:

Доставчик Опции Приблизителна цена Бележки
Google Colab T4/P100, 12GB VRAM Безплатно (ограничено)
Pro: $10/месец
Добро за фина настройка, ограничено време за изпълнение
Kaggle P100, 16GB VRAM Безплатно (ограничено) 30 часа/седмица, добро за фина настройка
Vast.ai Различни GPU ~$0.20-$1.00/час Рентабилно, изисква техническа настройка
Google GCP T4/V100/A100 ~$0.35-$3.00/час Надеждно, скъпо за дълги обучения
AWS T4/V100/A100 ~$0.40-$3.20/час Надеждно, скъпо за дълги обучения
Lambda Labs V100/A100 ~$1.10-$2.00/час Фокусирано върху ML, по-лесно от AWS/GCP

2.4. Съвети за оптимизация на хардуера

3. Конфигуриране на модела

3.1. Конфигурационни файлове

Повечето TTS рамки използват JSON или YAML конфигурационни файлове за определяне на архитектурата на модела и параметрите за обучение.

Пример за Coqui TTS конфигурация (config.json)

{
  "model": "tacotron2",
  "batch_size": 32,
  "eval_batch_size": 16,
  "num_loader_workers": 4,
  "num_eval_loader_workers": 4,
  "run_eval": true,
  "test_delay_epochs": 5,
  "epochs": 1000,
  "text_cleaner": "phoneme_cleaners",
  "use_phonemes": true,
  "phoneme_language": "bg",
  "phoneme_cache_path": "phoneme_cache",
  "print_step": 25,
  "print_eval": true,
  "mixed_precision": true,
  "output_path": "tts_train_output",
  "datasets": [
    {
      "name": "bg_dataset",
      "path": "dataset/metadata.csv",
      "meta_file_train": "dataset/metadata_train.csv",
      "meta_file_val": "dataset/metadata_val.csv"
    }
  ],
  "cudnn_benchmark": false,
  "max_audio_len": 8192,
  "output_path": "bg_tts_model"
}

3.2. Ключови параметри за настройка

Независимо от избраната рамка, обърнете внимание на тези ключови параметри:

3.3. Избор на вокодер

Ако вашият модел използва двустепенен подход (акустичен модел + вокодер):

4. Подготовка на средата за обучение

4.1. Настройка на Python среда

Препоръчително е да използвате виртуална среда:

# Създаване на виртуална среда
python -m venv tts_env

# Активиране на средата
# За Linux/Mac:
source tts_env/bin/activate
# За Windows:
tts_env\Scripts\activate

# Инсталиране на зависимости
pip install torch torchaudio numpy matplotlib tensorboard

4.2. Настройка на TensorBoard за мониторинг

TensorBoard е полезен инструмент за визуализиране на прогреса на обучението:

# Инсталиране на TensorBoard
pip install tensorboard

# Стартиране на TensorBoard сървър
tensorboard --logdir=./tts_train_output/

След стартиране, отворете http://localhost:6006 във вашия браузър, за да наблюдавате обучението.

4.3. Организиране на директориите на проекта

Поддържайте организирана структура на проекта:

tts_project/
├── dataset/                  # Вашият подготвен набор от данни
│   ├── wavs/
│   ├── metadata.csv
│   ├── metadata_train.csv
│   └── metadata_val.csv
├── config/                   # Конфигурационни файлове
│   └── config.json
├── output/                   # Изходни директории
│   └── checkpoints/          # Запазени контролни точки на модела
├── pretrained/               # Предварително обучени модели (за фина настройка)
└── scripts/                  # Помощни скриптове

5. Подготовка за фина настройка

Ако извършвате фина настройка на съществуващ модел (препоръчително за повечето случаи):

5.1. Изтегляне на предварително обучен модел

Повечето рамки предоставят предварително обучени модели:

Coqui TTS

# Изтегляне на предварително обучен модел
from TTS.utils.manage import ModelManager

model_manager = ModelManager()
model_path, config_path, model_item = model_manager.download_model("tts_models/bg/cv/vits")

ESPnet

# Изтегляне на предварително обучен ESPnet модел
espnet_model_zoo_download --task tts --lang bg

5.2. Адаптиране на конфигурацията за фина настройка

Модифицирайте конфигурацията за фина настройка:

{
  "model": "vits",
  "pretrained_model_path": "path/to/pretrained/model.pth",
  "freeze_encoder": true,
  "freeze_decoder": false,
  "optimizer_params": {
    "lr": 0.0001
  },
  "batch_size": 16,
  "epochs": 100
}

Ключови параметри за фина настройка:


С правилно конфигурирана среда за обучение, вие сте готови да преминете към действителното обучение на вашия TTS модел.

Следваща стъпка: Обучение на модела | Предишна стъпка: Подготовка на данни | Обратно към началото