Ръководство за настройка на TTS обучение¶
След като сте подготвили набора от данни, следващата стъпка е да настроите софтуерната среда и конфигурацията за собствено TTS обучение или фина настройка.
Ако някой термин за хардуер или обучение е неясен, използвайте речника. Тук са обяснени само термините, които пряко влияят върху решенията за настройка.
Настройка на средата за обучение¶
Тази част обхваща инсталирането на необходимия софтуер и подреждането на файловете на проекта.
Избор и клониране на TTS рамка¶
Ако сте начинаещи, изберете рамка, която се поддържа активно, има ясни инструкции за инсталация и поддържа типа обучение, който ви е необходим. Не започвайте с „най-сложната архитектура“. Изберете нещо, което можете да инсталирате, стартирате и дебъгнете.
- Изберете рамка: Подберете TTS проект според целите си. Обърнете внимание на:
- Архитектура: VITS, StyleTTS2, Tacotron2 + вокодер и други. По-новите архитектури често дават по-добро качество.
- Поддръжка на фина настройка: Има ли рамката ясна поддръжка за fine-tuning от предварително обучен модел? Това често е по-лесно от обучение от нулата.
- Езикова поддръжка: Проверете дали моделът и токенизаторът работят добре с целевия ви език.
- Общност и поддръжка: Хранилището поддържа ли се активно? Има ли дискусии или канали за помощ?
- Предварително обучени модели: Предлага ли рамката подходящ модел, от който да започнете фина настройка?
Сравнение на TTS архитектури¶
При избора на TTS архитектура разгледайте популярните варианти и техните характеристики:
| Архитектура | Предимства | Недостатъци | Подходяща за | Хардуерни изисквания |
|---|---|---|---|---|
| VITS | End-to-end (без отделен вокодер) Високо качество Бърза инференция Добър избор за fine-tuning |
По-сложна за разбиране Може да е нестабилна при обучение Изисква внимателна настройка на хиперпараметрите |
Клониране на глас с един говорител Проекти с фокус върху качеството Набори от 5+ часа |
Обучение: 8GB+ VRAM Инференция: 4GB+ VRAM |
| StyleTTS2 | Отличен контрол върху гласа и стила Много високо качество Добър контрол на емоцията и просодията |
По-нови и потенциално нестабилни реализации По-сложна архитектура По-малко ресурси от общността |
Контрол на стила Изразителен синтез Много говорители със стилов трансфер |
Обучение: 12GB+ VRAM Инференция: 6GB+ VRAM |
| Tacotron2 + HiFi-GAN | Утвърдена и стабилна По-лесна за разбиране Повече уроци Отделни компоненти за по-лесен дебъг |
Двуетапен процес (по-бавен) Обикновено по-ниско качество от по-новите модели По-чести проблеми с дълъг текст |
Учебни проекти Когато стабилността е по-важна от качеството Среда с ограничени ресурси |
Обучение: 6GB+ VRAM Инференция: 2GB+ VRAM |
| FastSpeech2 | Неавторегресивна (по-бърза инференция) По-стабилна от Tacotron2 Добра документация |
Изисква фонемни подравнявания По-сложна предварителна обработка Качеството не е толкова високо като при VITS/StyleTTS2 |
Приложения в реално време Когато скоростта е критична По-контролиран изход |
Обучение: 8GB+ VRAM Инференция: 2GB+ VRAM |
| YourTTS (вариант на VITS) | Многоезична поддръжка Zero-shot клониране на глас Добър трансфер между езици |
Сложна настройка Изисква внимателна подготовка на данните Може да изисква по-големи набори |
Многоезични проекти Cross-lingual клониране Когато езиковата гъвкавост е важна |
Обучение: 10GB+ VRAM Инференция: 4GB+ VRAM |
| TTS на базата на diffusion | Най-висок потенциал за качество По-естествена просодия По-добро справяне с редки думи |
Много бавна инференция Изключително тежко обучение По-нова и по-слабо утвърдена технология |
Офлайн генериране Когато качеството е по-важно от скоростта Изследователски проекти |
Обучение: 16GB+ VRAM Инференция: 8GB+ VRAM |
Бележка за хардуерните изисквания:
- Това са приблизителни минимуми; по-голям batch size или по-сложна конфигурация ще изискват повече VRAM.
- Времената за обучение се различават значително: VITS/StyleTTS2 обикновено изискват повече епохи от Tacotron2.
- CPU инференция е възможна при всички модели, но ще бъде значително по-бавна.
Практичен пряк път: ако избирате първа рамка за реален проект, а не сравнявате архитектури, изберете тази с най-ясната документация за инсталация, най-активния tracker за проблеми и готов пример за fine-tuning, най-близък до вашия случай.
Хардуерни изисквания според мащаба на проекта¶
Правилният хардуер е важен за успешно обучение на TTS модел. Ето ориентировъчните изисквания за различни сценарии:
GPU изисквания според модела и размера на набора от данни¶
| Тип модел | Малък набор (<10ч) | Среден набор (10-50ч) | Голям набор (>50ч) | Препоръчителни GPU |
|---|---|---|---|---|
| Tacotron2 + HiFi-GAN | 8GB VRAM | 12GB VRAM | 16GB+ VRAM | RTX 3060, RTX 2080, T4 |
| FastSpeech2 | 8GB VRAM | 12GB VRAM | 16GB+ VRAM | RTX 3060, RTX 2080, T4 |
| VITS | 12GB VRAM | 16GB VRAM | 24GB+ VRAM | RTX 3080, RTX 3090, A5000 |
| StyleTTS2 | 16GB VRAM | 24GB VRAM | 32GB+ VRAM | RTX 3090, RTX 4090, A100 |
| XTTS-v2 | 24GB VRAM | 32GB VRAM | 40GB+ VRAM | RTX 4090, A100, A6000 |
| Diffusion TTS | 16GB VRAM | 24GB VRAM | 32GB+ VRAM | RTX 3090, RTX 4090, A100 |
CPU, системна памет и дисково пространство¶
| Мащаб на обучението | Изисквания към CPU | Системна RAM | Съхранение |
|---|---|---|---|
| Личен проект | 4+ ядра, 2.5GHz+ | 16GB | 50GB SSD |
| Изследователски проект | 8+ ядра, 3.0GHz+ | 32GB | 100GB+ SSD |
| Производствен проект | 16+ ядра, 3.5GHz+ | 64GB+ | 500GB+ NVMe SSD |
Ориентировъчни облачни GPU опции*¶
*Бележка за актуалността: Доставчиците и GPU примерите по-долу отразяват облачната среда към момента на написване на това ръководство. Облачните предложения, наличността и цените често се променят според региона, отстъпките и spot опциите. Използвайте таблицата само като ориентир и проверете актуалните възможности и цени при доставчика, преди да планирате обучение.
| Доставчик | GPU опция | VRAM | Относителна цена | Подходящо за |
|---|---|---|---|---|
| Google Colab | T4/P100 (безплатните нива варират) V100/A100 (платените нива варират) |
16GB 16-40GB |
Ниска до средна | Експерименти и малки набори |
| Kaggle | P100/T4 | 16GB | Ниска | Малки до средни набори |
| AWS | g4dn.xlarge (T4) p3.2xlarge (V100) p4d.24xlarge (A100) |
16GB 16GB 40GB |
Средна до много висока | Всеки мащаб, производство |
| GCP | T4 инстанции A100 инстанции |
16GB 40GB |
Средна до много висока | Всеки мащаб, производство |
| Azure | V100 или A100 клас | 16GB+ | Средна до много висока | Всеки мащаб, производство |
| Lambda Labs | 1x RTX 3090 1x A100 |
24GB 40GB |
Средна | Изследвания и средни набори |
| Vast.ai | Различни consumer GPU | 8-24GB | Ниска до средна | Обучение с ограничен бюджет |
Много груби диапазони за време на обучение¶
Бележка за времето: тези диапазони зависят силно от реализацията, размера на batch-а, чистотата на данните, настройките на токенизатора, качеството на checkpoint-а и това дали правите fine-tuning или обучение от нулата. Приемайте ги като порядък, а не като план на проекта.
| Модел | Размер на набора | GPU | Приблизително време | Стъпки до сближаване |
|---|---|---|---|---|
| Tacotron2 + HiFi-GAN | 10 часа | RTX 3080 | 2-3 дни | 50-100K стъпки |
| FastSpeech2 | 10 часа | RTX 3080 | 2-3 дни | 150-200K стъпки |
| VITS | 10 часа | RTX 3090 | 3-5 дни | 300-500K стъпки |
| StyleTTS2 | 10 часа | RTX 3090 | 4-7 дни | 500-800K стъпки |
| XTTS-v2 | 10 часа | RTX 4090 | 5-10 дни | 1M+ стъпки |
Съвети за намаляване на хардуерните изисквания¶
- Натрупване на градиенти: симулирайте по-голям batch size чрез натрупване на градиенти през няколко forward/backward прохода.
- Обучение със смесена точност: използвайте FP16 вместо FP32, за да намалите използваната VRAM с до 50%.
- Gradient checkpointing: разменете изчислително време за памет, като преизчислявате активациите при backward прохода.
- Паралелизъм на модела: разделете големите модели между няколко GPU.
- Постепенно обучение: започнете с по-малки модели или конфигурации и постепенно увеличавайте сложността.
Тези изисквания ще ви помогнат да планирате хардуера според целите и бюджета на проекта.
- Клонирайте хранилището: След като изберете рамка, клонирайте кода чрез Git.
- Пример:
git clone https://github.com/some-user/some-tts-framework.git
- Пример:
Настройка на Python среда и инсталиране на зависимости¶
- Виртуална среда (препоръчително): Създайте и активирайте отделна Python среда, за да изолирате зависимостите и да избегнете конфликти с други проекти или системни пакети.
- С вградения
venv: - С
conda:
- С вградения
- Инсталирайте PyTorch с CUDA: Това е важно за GPU ускорението. Използвайте официалното ръководство за инсталация на PyTorch и изберете операционната система, пакетния мениджър, CUDA версията и PyTorch версията. Уверете се, че NVIDIA драйверите са съвместими с избраната CUDA версия.
# Примерна команда с pip за CUDA 11.8 (проверете сайта на PyTorch за актуалните команди!) pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118 # Проверка на инсталацията: python -c "import torch; print(torch.__version__); print(torch.cuda.is_available()); print(torch.version.cuda)" - Инсталирайте зависимостите на рамката: Повечето рамки имат
requirements.txt. Инсталирайте го сpipили сuv.# Първо влезте в директорията на рамката, ако още не сте там pip install -r requirements.txt # С uv (ако е инсталиран: pip install uv): uv pip install -r requirements.txt- При проблеми: Проверете за липсващи системни библиотеки (например
libsndfile), несъвместими версии или проблеми с CUDA/PyTorch. Вижте документацията на рамката за специфични изисквания.
- При проблеми: Проверете за липсващи системни библиотеки (например
Минимален sanity test на средата¶
Преди да редактирате голяма конфигурация или да стартирате дълго обучение, проверете:
python --version
ffmpeg -version
python -c "import torch; print(torch.cuda.is_available())"
python -c "import torch; print(torch.__version__)"
Ако някоя команда се провали, първо оправете средата. Това е много по-евтино от дебъгване на счупено обучение след часове чакане.
Организиране на проектната папка¶
-
Добре подредената структура улеснява управлението на проекта. Поставете подготвения набор от данни в или до кода на рамката (или създайте символна връзка). Типичната структура изглежда така:
flowchart TD root["Project Root"] --> repo["TTS Repo Directory"] repo --> scripts["Основни скриптове"] scripts --> train["train.py"] scripts --> inference["inference.py"] repo --> config["configs/base_config.yaml"] repo --> requirements["requirements.txt"] repo --> repoMore["други файлове на framework-а"]flowchart TD root["Project Root"] --> dataset["my_tts_dataset"] dataset --> audio["normalized_chunks"] audio --> wav1["segment_00001.wav"] audio --> wavMore["още .wav файлове"] dataset --> transcripts["transcripts (по избор)"] dataset --> trainList["train_list.txt"] dataset --> valList["val_list.txt"]
- Пътища: Уверете се, че пътищата в конфигурацията (за набори от данни и изход) са правилни спрямо мястото, от което ще стартиратеflowchart TD root["Project Root"] --> checkpoints["checkpoints"] checkpoints --> runDir["my_custom_model"] root --> configs["my_configs"] configs --> trainingConfig["my_training_run_config.yaml"]train.py, обикновено вътре в<TTS_REPO_DIRECTORY>.
Конфигуриране на обучението¶
Преди да стартирате обучението, създайте конфигурационен файл, който казва на рамката как да обучава модела с вашите данни.
1. Намерете и копирайте базова конфигурация¶
- Потърсете примери: Разгледайте папката
configs/на избраната рамка и потърсете шаблони.yaml,.jsonили подобни. - Изберете според целта:
- Fine-tuning: потърсете имена като
config_ft.yaml,finetune_*.yaml. - Обучение от нулата: потърсете
config_base.yaml,train_*.yaml. - Размер на набора: някои рамки предлагат конфигурации за малки (
_sm) или големи (_lg) набори.
- Fine-tuning: потърсете имена като
- Копирайте и преименувайте: Копирайте шаблона в собствена директория и му дайте описателно име, например
my_yoruba_voice_ft_config.yaml.В Windows PowerShell използвайте# Пример за Linux/macOS: копиране на конфигурация за fine-tuning cp <TTS_REPO_DIRECTORY>/configs/base_finetune_config.yaml my_configs/my_yoruba_voice_ft_config.yamlCopy-Item, ако не работите в Git Bash.
Съвет за начинаещи: започнете от най-близкия работещ пример, който рамката вече предоставя. Не изграждайте първата си конфигурация от нулата.
2. Редактирайте собствената си конфигурация¶
- Отворете копираната конфигурация (
my_yoruba_voice_ft_config.yaml) в текстов редактор. -
Променете основните параметри: имената им се различават значително между рамките, но категориите обикновено са сходни:
- Прочетете документацията на рамката: тя определя точния смисъл и име на всеки параметър. - Бележка за термините: checkpoint е запазена снимка на модела, а sampling rate трябва да съвпада точно с подготвения набор от данни. - Честа грешка при първи опит: променете само задължителните полета — пътища към данните, output директория, sampling rate, batch size и checkpoint настройките. Не настройвайте десет несвързани параметъра, преди да потвърдите, че pipeline-ът работи.# --- Данни и зареждане на данни --- # Пътища спрямо мястото, от което стартирате train.py train_filelist_path: "../my_tts_dataset/train_list.txt" val_filelist_path: "../my_tts_dataset/val_list.txt" # Някои рамки може да изискват data_path или audio_root към аудио директорията. # --- Изход и логове --- output_directory: "../checkpoints/my_yoruba_voice_run1" log_interval: 100 validation_interval: 1000 save_checkpoint_interval: 5000 # --- Основни training параметри --- epochs: 1000 batch_size: 16 # НАМАЛЕТЕ при CUDA OOM грешки. learning_rate: 1e-4 # Може да изисква настройка; при fine-tuning често е по-нисък. # lr_scheduler: "cosine_decay" # weight_decay: 0.01 # --- Аудио параметри --- sampling_rate: 22050 # КРИТИЧНО: ТРЯБВА да съвпада с честотата на подготвения набор (от Ръководство 1). # filter_length: 1024 # hop_length: 256 # win_length: 1024 # n_mel_channels: 80 # mel_fmin: 0.0 # mel_fmax: 8000.0 # --- Архитектура на модела --- # model_type: "VITS" # hidden_channels: 192 # num_speakers: 1 # --- Fine-tuning (ако е приложимо) --- fine_tuning: True pretrained_model_path: "/path/to/downloaded/base_model.pth" # ignore_layers: ["speaker_embedding.weight", "decoder.output_layer.weight"]
3. Съобразете хардуера и набора от данни¶
- GPU VRAM: VRAM е паметта на графичната карта.
batch_sizeе основният параметър за контрол на GPU паметта. Започнете с препоръчителна стойност и я намалете при „CUDA out of memory“. - Размер на набора спрямо епохите:
- Малки набори (<20ч): може да изискват по-малко епохи (например 300-1500), но следете validation loss и sample-ите, за да избегнете overfitting. Помислете за по-нисък learning rate.
- Големи набори (>50ч): могат да имат полза от повече епохи (1000+), за да научат напълно моделите в данните.
- CPU: GPU извършва основната работа, но добър многоядрен CPU е необходим за зареждане и предварителна обработка на данните.
- Съхранение: осигурете място за набора, Python средата, кода на рамката и checkpoint-ите, които могат да достигнат стотици MB или GB.
4. Инструменти за наблюдение (TensorBoard)¶
- Повечето съвременни TTS рамки поддържат TensorBoard за визуализиране на прогреса.
- В конфигурацията често има настройки като
use_tensorboard: Trueилиlog_directory. - По време на обучение обикновено можете да стартирате
tensorboard --logdir <YOUR_OUTPUT_DIRECTORY>(напримерtensorboard --logdir ../checkpoints/my_yoruba_voice_run1) в отделен терминал, за да следите loss криви, learning rate и validation samples. - Ако TensorBoard е празен, първо проверете дали рамката записва event файлове в очакваната директория. Празният dashboard често е просто грешен log path.
След като средата и конфигурацията са готови и съобразени с вашите данни и цели, можете да преминете към реалното обучение на модела.
Преди да продължите¶
- Python средата е активна и зависимостите на рамката се инсталират без грешки.
-
torch.cuda.is_available()връщаTrue, ако ще обучавате на GPU. -
ffmpegи нужните системни библиотеки са инсталирани и достъпни през PATH. - Пътищата в конфигурацията сочат към реални manifests, checkpoints и output папки.
-
sampling_rateв конфигурацията съвпада точно с подготвения набор от данни.