Ръководство 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 и системна памет
- CPU: Минимум 4 ядра, препоръчително 8+ ядра за предварителна обработка на данни
- RAM: Минимум 16GB, препоръчително 32GB+ за големи набори от данни
- Дисково пространство: 50GB+ за набори от данни, контролни точки на модела и междинни файлове
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. Съвети за оптимизация на хардуера
- Смесена прецизност на обучение: Намалява използването на VRAM с 30-40% с минимално влияние върху качеството
- Градиентно контролиране: Намалява използването на VRAM, позволявайки по-големи размери на партидите
- Ефективен размер на партидата: Използвайте натрупване на градиента за симулиране на по-големи размери на партидите
- Замразяване на слоеве: При фина настройка, замразете някои слоеве, за да намалите изчислителните нужди
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. Ключови параметри за настройка
Независимо от избраната рамка, обърнете внимание на тези ключови параметри:
- Размер на партидата (batch_size): Колко примера се обработват наведнъж. По-големите размери обикновено водят до по-стабилно обучение, но изискват повече VRAM.
- Скорост на обучение (learning_rate): Контролира колко бързо се актуализират параметрите на модела. Твърде висока стойност може да доведе до нестабилност, твърде ниска може да доведе до бавно обучение.
- Брой епохи (epochs): Колко пъти моделът ще премине през целия набор от данни за обучение.
- Текстови процесори (text_cleaner, use_phonemes): Как текстът се нормализира и преобразува преди да влезе в модела.
- Аудио параметри (sample_rate, mel_fmin, mel_fmax): Трябва да съответстват на вашите предварително обработени аудио данни.
3.3. Избор на вокодер
Ако вашият модел използва двустепенен подход (акустичен модел + вокодер):
- HiFi-GAN: Бърз, високо качество, добър за продукционни приложения.
- MelGAN: По-лек, по-бърз, но с по-ниско качество от HiFi-GAN.
- WaveGlow/WaveRNN: По-стари вокодери, все още използвани в някои системи.
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
}
Ключови параметри за фина настройка:
- pretrained_model_path: Път към предварително обучения модел.
- freeze_encoder/freeze_decoder: Кои части от модела да замразите.
- lr: Използвайте по-ниска скорост на обучение за фина настройка (обикновено 10% от оригиналната).
С правилно конфигурирана среда за обучение, вие сте готови да преминете към действителното обучение на вашия TTS модел.
Следваща стъпка: Обучение на модела | Предишна стъпка: Подготовка на данни | Обратно към началото