Skip to content

Ръководство за настройка на 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+ стъпки

Съвети за намаляване на хардуерните изисквания

  1. Натрупване на градиенти: симулирайте по-голям batch size чрез натрупване на градиенти през няколко forward/backward прохода.
  2. Обучение със смесена точност: използвайте FP16 вместо FP32, за да намалите използваната VRAM с до 50%.
  3. Gradient checkpointing: разменете изчислително време за памет, като преизчислявате активациите при backward прохода.
  4. Паралелизъм на модела: разделете големите модели между няколко GPU.
  5. Постепенно обучение: започнете с по-малки модели или конфигурации и постепенно увеличавайте сложността.

Тези изисквания ще ви помогнат да планирате хардуера според целите и бюджета на проекта.

  • Клонирайте хранилището: След като изберете рамка, клонирайте кода чрез Git.
    git clone <URL_OF_YOUR_CHOSEN_TTS_REPO>
    cd <TTS_REPO_DIRECTORY> # Влезте в клонираната директория
    
    • Пример: git clone https://github.com/some-user/some-tts-framework.git

Настройка на Python среда и инсталиране на зависимости

  • Виртуална среда (препоръчително): Създайте и активирайте отделна Python среда, за да изолирате зависимостите и да избегнете конфликти с други проекти или системни пакети.
    • С вградения venv:
      python -m venv venv_tts  # Създайте среда с име 'venv_tts'
      # Активирайте я:
      # Windows: .\venv_tts\Scripts\activate
      # Linux/macOS: source venv_tts/bin/activate
      
    • С conda:
      conda create --name tts_env python=3.9 # Или желаната версия на Python
      conda activate tts_env
      
  • Инсталирайте 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) набори.
  • Копирайте и преименувайте: Копирайте шаблона в собствена директория и му дайте описателно име, например my_yoruba_voice_ft_config.yaml.
    # Пример за Linux/macOS: копиране на конфигурация за fine-tuning
    cp <TTS_REPO_DIRECTORY>/configs/base_finetune_config.yaml my_configs/my_yoruba_voice_ft_config.yaml
    
    В Windows PowerShell използвайте Copy-Item, ако не работите в Git Bash.

Съвет за начинаещи: започнете от най-близкия работещ пример, който рамката вече предоставя. Не изграждайте първата си конфигурация от нулата.

2. Редактирайте собствената си конфигурация

  • Отворете копираната конфигурация (my_yoruba_voice_ft_config.yaml) в текстов редактор.
  • Променете основните параметри: имената им се различават значително между рамките, но категориите обикновено са сходни:

    # --- Данни и зареждане на данни ---
    # Пътища спрямо мястото, от което стартирате 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"]
    
    - Прочетете документацията на рамката: тя определя точния смисъл и име на всеки параметър. - Бележка за термините: checkpoint е запазена снимка на модела, а sampling rate трябва да съвпада точно с подготвения набор от данни. - Честа грешка при първи опит: променете само задължителните полета — пътища към данните, output директория, sampling rate, batch size и checkpoint настройките. Не настройвайте десет несвързани параметъра, преди да потвърдите, че pipeline-ът работи.

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 в конфигурацията съвпада точно с подготвения набор от данни.