--- license: apache-2.0 language: - mns - ru - en tags: - text-to-speech - xtts - mansi - finetuned pipeline_tag: text-to-speech --- # XTTSv2 Fine-tuned для языка Манси ## Компоненты модели Модель включает в себя: - **model.pth** - Основная GPT модель (fine-tuned) - **dvae.pth** - Discrete Variational AutoEncoder для кодирования/декодирования аудио - **mel_stats.pth** - Статистики для нормализации мел-спектрограмм - **vocab.json** - Словарь токенов с поддержкой мансийского языка - **config.json** - Конфигурация модели ## Датасет Модель обучена на датасете Mansi TTS, содержащем: - **Общая продолжительность**: ~21.77 часов аудио - **Количество записей**: 16,367 аудио файлов - **Средняя длина записи**: ~4.79 секунд - **Частота дискретизации**: 48,000 Hz - **Язык**: Мансийский (mns) ## Использование ### Установка зависимостей ```bash pip install TTS torch torchaudio ``` ### Быстрый старт с TTS API ```python from TTS.api import TTS # Загрузка модели tts = TTS("your_username/mansi-xttsv2") # Синтез речи tts.tts_to_file( text="Ваш текст на мансийском языке", speaker_wav="path/to/reference_audio.wav", language="mns", file_path="output.wav" ) ``` ### Продвинутое использование (ручная загрузка) Для более точного контроля над процессом генерации: ```python import os import torch from tqdm import tqdm from TTS.tts.configs.xtts_config import XttsConfig from TTS.tts.models.xtts import Xtts from TTS.tts.layers.xtts.tokenizer import VoiceBpeTokenizer import torchaudio # ----------------- Настройки ----------------- DEVICE = "cuda:0" if torch.cuda.is_available() else "cpu" # Пути к файлам модели (после загрузки с Hugging Face) MODEL_DIR = "path/to/downloaded/model" CHECKPOINT_PATH = os.path.join(MODEL_DIR, "model.pth") CONFIG_PATH = os.path.join(MODEL_DIR, "config.json") VOCAB_PATH = os.path.join(MODEL_DIR, "vocab.json") SPEAKER_FILE = "empty_speakers.pth" # создайте пустой файл или используйте существующий # ----------------- Загрузка модели ----------------- config = XttsConfig() config.load_json(CONFIG_PATH) xtts_model = Xtts.init_from_config(config) xtts_model.load_checkpoint( config, checkpoint_path=CHECKPOINT_PATH, vocab_path=VOCAB_PATH, speaker_file_path=SPEAKER_FILE, use_deepspeed=False ) xtts_model.tokenizer = VoiceBpeTokenizer(vocab_file=VOCAB_PATH) xtts_model.to(DEVICE) xtts_model.eval() print("✅ Model loaded successfully!") # ----------------- Подготовка данных ----------------- # Текст для синтеза на мансийском языке tts_text = "Ты ня̄врамыт нэ̄паканыл хунь ва̄рсанум, то̄нт ла̄вве̄сум, амки нупылум воссыг ул вос хансыянум." # Референсное аудио (голос для клонирования) speaker_audio_file = "path/to/reference_audio.wav" # ----------------- Получение conditioning latents ----------------- gpt_cond_latent, speaker_embedding = xtts_model.get_conditioning_latents( audio_path=speaker_audio_file, gpt_cond_len=xtts_model.config.gpt_cond_len, max_ref_length=xtts_model.config.max_ref_len, sound_norm_refs=xtts_model.config.sound_norm_refs, ) # ----------------- Генерация речи ----------------- with torch.no_grad(): wav_chunk = xtts_model.inference( text=tts_text, language="mns", # мансийский язык gpt_cond_latent=gpt_cond_latent, speaker_embedding=speaker_embedding, temperature=0.1, # низкая температура для стабильности length_penalty=1.0, repetition_penalty=10.0, # высокий penalty против повторов top_k=10, # ограничение словаря top_p=0.3, # nucleus sampling ) # ----------------- Сохранение результата ----------------- output_audio = torch.tensor(wav_chunk["wav"]).cpu() torchaudio.save("mansi_output.wav", output_audio.unsqueeze(0), 24000) print("✅ Audio saved as mansi_output.wav") ``` ### Параметры генерации | Параметр | Рекомендуемое значение | Описание | |----------|----------------------|----------| | **temperature** | 0.1-0.3 | Низкие значения для стабильности, высокие для разнообразия | | **repetition_penalty** | 5.0-10.0 | Высокие значения предотвращают повторы | | **top_k** | 10-50 | Ограничивает выбор токенов | | **top_p** | 0.3-0.8 | Nucleus sampling threshold | | **length_penalty** | 1.0 | Контролирует длину генерируемого аудио | ## Технические детали - **Архитектура**: XTTSv2 (GPT-based) - **Размер модели**: ~5.6 GB - **Поддерживаемые языки**: Мансийский (mns) + оригинальные языки XTTSv2 - **Формат аудио**: WAV, 24kHz - **Максимальная длина текста**: 400 символов - **Максимальная длина аудио**: ~15 секунд ## Ограничения - Модель оптимизирована для мансийского языка - Требует референсное аудио для клонирования голоса - Качество зависит от качества референсного аудио