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)

Использование

Установка зависимостей

pip install TTS torch torchaudio

Быстрый старт с TTS API

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"
)

Продвинутое использование (ручная загрузка)

Для более точного контроля над процессом генерации:

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 секунд

Ограничения

  • Модель оптимизирована для мансийского языка
  • Требует референсное аудио для клонирования голоса
  • Качество зависит от качества референсного аудио
Downloads last month
12
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support