Views
No views yet
pip install TTS torch torchaudio1from TTS.api import TTS
2
3# Загрузка модели
4tts = TTS("your_username/mansi-xttsv2")
5
6# Синтез речи
7tts.tts_to_file(
8 text="Ваш текст на мансийском языке",
9 speaker_wav="path/to/reference_audio.wav",
10 language="mns",
11 file_path="output.wav"
12)1import os
2import torch
3from tqdm import tqdm
4from TTS.tts.configs.xtts_config import XttsConfig
5from TTS.tts.models.xtts import Xtts
6from TTS.tts.layers.xtts.tokenizer import VoiceBpeTokenizer
7import torchaudio
8
9# ----------------- Настройки -----------------
10DEVICE = "cuda:0" if torch.cuda.is_available() else "cpu"
11
12# Пути к файлам модели (после загрузки с Hugging Face)
13MODEL_DIR = "path/to/downloaded/model"
14CHECKPOINT_PATH = os.path.join(MODEL_DIR, "model.pth")
15CONFIG_PATH = os.path.join(MODEL_DIR, "config.json")
16VOCAB_PATH = os.path.join(MODEL_DIR, "vocab.json")
17SPEAKER_FILE = "empty_speakers.pth" # создайте пустой файл или используйте существующий
18
19# ----------------- Загрузка модели -----------------
20config = XttsConfig()
21config.load_json(CONFIG_PATH)
22xtts_model = Xtts.init_from_config(config)
23xtts_model.load_checkpoint(
24 config,
25 checkpoint_path=CHECKPOINT_PATH,
26 vocab_path=VOCAB_PATH,
27 speaker_file_path=SPEAKER_FILE,
28 use_deepspeed=False
29)
30xtts_model.tokenizer = VoiceBpeTokenizer(vocab_file=VOCAB_PATH)
31xtts_model.to(DEVICE)
32xtts_model.eval()
33print("✅ Model loaded successfully!")
34
35# ----------------- Подготовка данных -----------------
36# Текст для синтеза на мансийском языке
37tts_text = "Ты ня̄врамыт нэ̄паканыл хунь ва̄рсанум, то̄нт ла̄вве̄сум, амки нупылум воссыг ул вос хансыянум."
38
39# Референсное аудио (голос для клонирования)
40speaker_audio_file = "path/to/reference_audio.wav"
41
42# ----------------- Получение conditioning latents -----------------
43gpt_cond_latent, speaker_embedding = xtts_model.get_conditioning_latents(
44 audio_path=speaker_audio_file,
45 gpt_cond_len=xtts_model.config.gpt_cond_len,
46 max_ref_length=xtts_model.config.max_ref_len,
47 sound_norm_refs=xtts_model.config.sound_norm_refs,
48)
49
50# ----------------- Генерация речи -----------------
51with torch.no_grad():
52 wav_chunk = xtts_model.inference(
53 text=tts_text,
54 language="mns", # мансийский язык
55 gpt_cond_latent=gpt_cond_latent,
56 speaker_embedding=speaker_embedding,
57 temperature=0.1, # низкая температура для стабильности
58 length_penalty=1.0,
59 repetition_penalty=10.0, # высокий penalty против повторов
60 top_k=10, # ограничение словаря
61 top_p=0.3, # nucleus sampling
62 )
63
64# ----------------- Сохранение результата -----------------
65output_audio = torch.tensor(wav_chunk["wav"]).cpu()
66torchaudio.save("mansi_output.wav", output_audio.unsqueeze(0), 24000)
67print("✅ 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 | Контролирует длину генерируемого аудио |