CoolFace
Modelpublic

Chebukkk/mansi-xttsv2

sourceHugging Faceapache-2.0updated 1y agoView on Hugging Face
0likes29downloads
Model Card

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

Параметры генерации

ПараметрРекомендуемое значениеОписание
temperature0.1-0.3Низкие значения для стабильности, высокие для разнообразия
repetition_penalty5.0-10.0Высокие значения предотвращают повторы
top_k10-50Ограничивает выбор токенов
top_p0.3-0.8Nucleus sampling threshold
length_penalty1.0Контролирует длину генерируемого аудио

Технические детали

  • —Архитектура: XTTSv2 (GPT-based)
  • —Размер модели: ~5.6 GB
  • —Поддерживаемые языки: Мансийский (mns) + оригинальные языки XTTSv2
  • —Формат аудио: WAV, 24kHz
  • —Максимальная длина текста: 400 символов
  • —Максимальная длина аудио: ~15 секунд

Ограничения

  • —Модель оптимизирована для мансийского языка
  • —Требует референсное аудио для клонирования голоса
  • —Качество зависит от качества референсного аудио