Ръководство за пакетиране и споделяне на TTS модел¶
Обучили сте модел и можете да генерирате реч с него. За да остане този персонализиран TTS модел използваем и в бъдеще, и за да е по-лесно споделянето или възпроизводимостта, правилното пакетиране и документация са от съществено значение.
Ако някой термин за пакетиране или обучение не е ясен, използвайте речника. На тази страница се спираме само на понятията, които директно влияят на това дали друг човек може да зареди и да има доверие на пакета с модела.
Пакетиране на вашия обучен модел¶
Мислете за обучен модел не просто като за един .pth файл, а като за пълен пакет, съдържащ всичко необходимо за разбиране и използване.
Организирайте файловете на модела¶
Създайте чиста и самостоятелна структура на директориите за всеки отделен обучен модел или важна негова версия. Това ще ви помогне по-лесно да намерите всичко по-късно.
Примерна структура:
flowchart TD
root["my_tts_model_packages"]
root --> package["yoruba_male_v1.0"]
package --> checkpoints["checkpoints"]
checkpoints --> best["best_model.pth"]
checkpoints --> last["last_model.pth"]
package --> config["config.yaml"]
package --> trainingInfo["training_info.md"]
trainingInfo --> trainManifest["train_list.txt"]
trainingInfo --> valManifest["val_list.txt"]
package --> samples["samples"]
samples --> sample1["sample_short<br/>_sentence.wav"]
samples --> sample2["sample_question<br/>.wav"]
samples --> sample3["sample_longer<br/>_paragraph.wav"]
package --> readme["README.md"]
Обяснение на ключовите компоненти:
checkpoints/: Съдържа реалните тегла на модела. Винаги включвайте checkpoint файла, който считате за "най-добър", независимо дали по loss или по слухови тестове. Добра практика е да включите и финалния checkpoint.config.yaml(или.json): Абсолютно критичен файл. Той описва архитектурата на модела и параметрите, нужни за правилно зареждане и използване на checkpoint файла. Без него checkpoint файлът често е неизползваем. Уверете се, че това е точната конфигурация, използвана за включените checkpoint файлове.training_info.md/ manifest файлове (по избор, но препоръчително): Съхраняването на manifest файловете помага да проследите точно с какви данни е обучен моделът. Файлътtraining_info.mdможе да съдържа бележки за обучението като продължителност, използван хардуер, крайни метрики и наблюдения.samples/: Добавете няколко разнообразни аудио примера, генерирани отbest_model.pth. Това бързо показва гласа, качеството и особеностите на модела.README.md: Потребителското ръководство за този конкретен модел. Вижте следващата секция.
Практично правило: ако непознат човек не може лесно да разбере кой checkpoint, конфигурация, примерни файлове и условия на употреба принадлежат заедно, пакетът още не е готов.
Минимален пакет, който може да се сподели¶
Ако все още не сте готови за напълно полиран публичен release, целете най-малкия пакет, който все пак е честен и възпроизводим:
- един ясно именуван checkpoint
- точната конфигурация, използвана с него
- 2 до 3 примерни изхода, генерирани от същия checkpoint
- кратък
README.md, който обяснява framework-а, sampling rate, езика и обхвата на говорителя - лиценз или бележка за употреба, която казва дали пакетът е публичен, ограничен или експериментален
Това обикновено е достатъчно, за да може сътрудник или тестер да зареди модела и да даде полезна обратна връзка, без да гадае кое към какво принадлежи.
Как да напишете добър README.md за модела¶
Този README е специфичен за този пакет на модела, а не за цялото ръководство на проекта. Той трябва да казва на всеки, включително и на вас в бъдеще, всичко необходимо за използване на модела.
Мислете за този файл като за документ за предаване, а не като за маркетингов текст. Неговата задача е да намалява неяснотите.
Минимален шаблон:
# TTS Model Package: Yoruba Male Voice v1.0
## Model Description
- **Voice:** Clear, adult male voice speaking Yoruba.
- **Source Data Quality:** Trained on ~25 hours of clean radio broadcast recordings.
- **Language(s):** Yoruba (primarily). May have limited handling of English loanwords based on training data.
- **Speaking Style:** Formal, narrative/broadcast style.
- **Model Architecture:** [Specify Framework/Architecture, e.g., StyleTTS2, VITS]
- **Version:** 1.0
## Training Details
- **Based On:** Fine-tuned from [Specify base model, e.g., pre-trained LibriTTS model] OR Trained from scratch.
- **Training Data:** See included `train_list.txt` and `val_list.txt`. Total hours: ~25h.
- **Key Training Config:** See included `config.yaml`.
- **Sampling Rate:** 22050 Hz (Input audio must match this rate for some frameworks).
- **Training Time:** [Optional] Rough training duration and hardware used, if you want to document reproducibility expectations.
- **Checkpoint Info:** `best_model.pth` selected based on lowest validation loss at step [XXXXX].
## How to Use for Inference
1. **Prerequisites:** Ensure you have the [Specify TTS Framework Name, e.g., StyleTTS2] framework installed, compatible with this model version.
2. **Configuration:** Use the included `config.yaml`.
3. **Checkpoint:** Load the `checkpoints/best_model.pth` file.
4. **Input Text:** Provide plain text input. Text normalization matching the training data (e.g., number expansion) might improve results.
5. **Speaker ID (if applicable):** This is a single-speaker model. Use speaker ID `[Specify ID used, e.g., main_speaker]` if required by the framework, otherwise it might not be needed.
6. **Expected Output:** Audio will be generated at 22050 Hz sampling rate.
## Audio Samples
Listen to examples generated by this model:
- [Short Sentence](./samples/sample_short_sentence.wav)
- [Question](./samples/sample_question.wav)
- [Longer Paragraph](./samples/sample_longer_paragraph.wav)
## Known Limitations / Notes
- Performance may degrade on text significantly different from the radio broadcast domain.
- Does not explicitly model nuanced emotions.
- [Add any other relevant observations]
## Licensing
- **Model Weights:** [Specify License, e.g., CC BY-NC-SA 4.0, Research/Non-Commercial Use Only, MIT License - Be accurate!]
- **Source Data:** [Mention source data license restrictions if they impact model usage, e.g., "Trained on proprietary data, model for internal use only."] **Consult the license of your training data!**
Съвети за версиониране на модела¶
Третирайте обучените модели като софтуерни издания.
- Използвайте семантично версиониране (препоръчително): Използвайте имена като
model_v1.0,model_v1.1,model_v2.0.- Увеличавайте PATCH версията (v1.0 -> v1.0.1) за малки корекции или преобучения със същите данни и конфигурация.
- Увеличавайте MINOR версията (v1.0 -> v1.1) за подобрения, преобучение с повече данни или по-съществени промени в конфигурацията.
- Увеличавайте MAJOR версията (v1.0 -> v2.0) за големи архитектурни промени или пълно преобучение с различни основни данни и цели.
- Актуализирайте README файловете: Когато създавате нова версия, обновете README файла така, че да описва промените спрямо предишната версия.
- Пазете старите версии: Не изхвърляйте веднага по-старите версии. Понякога стар модел може да работи по-добре за определен тип текст, или може да ви се наложи връщане назад, ако нова версия въведе регресия. Ако мястото позволява, архивирайте ги.
Съображения при споделяне и разпространение¶
Ако планирате да споделяте модела:
- Пакетиране: Създайте компресиран архив, например
.zipили.tar.gz, на цялата директория на пакета на модела, включително checkpoint файлове, конфигурация, README, примери и други нужни файлове. - Платформи за хостинг:
- Hugging Face Hub (Models): Отлична платформа за споделяне на модели, с версиониране, model cards и понякога inference widgets. Лесна е за откриване и използване от други хора.
- GitHub Releases: Подходящо за по-малки модели. Можете да прикачите zip архива към release tag във вашето хранилище.
- Облачно съхранение (Google Drive, Dropbox, S3): Подходящо за директно споделяне, но е по-трудно откриваемо и няма добри функции за версиониране. Проверете дали настройките за достъп на линка са правилни.
- Лицензиране (критично):
- Вашият модел: Изберете лиценз за теглата на модела, който разпространявате, например MIT, Apache 2.0 или CC BY-NC-SA.
- Зависимост от данните: Лицензът на вашите тренировъчни данни често определя как можете да лицензирате обучения модел. Ако сте тренирали с данни с некомерсиален лиценз, обикновено не можете да публикувате модела под свободен комерсиален лиценз. Ако сте използвали защитени с авторско право данни без разрешение, вероятно изобщо не трябва да споделяте модела публично. Винаги проверявайте лицензите на източниците на данни.
- Лиценз на рамката: Самият TTS framework има собствен лиценз, който е отделен от лиценза на вашия модел.
- Ясно посочете условията на употреба: Използвайте
README.mdв пакета на модела, за да посочите ясно предназначението и условията на използване.
Предупреждение за целостта на примерите: не пакетирайте демонстрационни аудио примери, генерирани от различен checkpoint от този, който разпространявате. Това веднага създава недоверие и прави възпроизводимостта и отстраняването на проблеми много по-трудни.
Преди да споделите пакет на модел¶
- Checkpoint файлът и конфигурационният файл са от едно и също обучение.
- Примерните аудио файлове са генерирани от пакетирания checkpoint, а не от по-стара версия.
- README файлът на модела посочва езика, обхвата на говорителя, sampling rate и очаквания framework.
- Пакетът ясно описва лиценза или ограниченията за употреба както на теглата на модела, така и на тренировъчните данни.
- Проверили сте зареждането на пакета от финалната структура на директориите преди качване или архивиране.
Правилното пакетиране и документиране прави вашите модели значително по-ценни и използваеми, независимо дали ги пазите за бъдещи собствени проекти, или ги споделяте с други.