Views
No views yet
1import torch
2import torchaudio
3from tqdm import tqdm
4from underthesea import sent_tokenize
5from TTS.tts.configs.xtts_config import XttsConfig
6from TTS.tts.models.xtts import Xtts
7
8device = "cuda:0" if torch.cuda.is_available() else "cpu"
9xtts_checkpoint = "model.pth"
10xtts_config = "config.json"
11xtts_vocab = "vocab.json"
12
13
14config = XttsConfig()
15config.load_json(xtts_config)
16XTTS_MODEL = Xtts.init_from_config(config)
17XTTS_MODEL.load_checkpoint(config, checkpoint_path=xtts_checkpoint, vocab_path=xtts_vocab, use_deepspeed=False)
18XTTS_MODEL.to(device)
19
20print("Model loaded successfully!")
21
22# In case you are cloning from WhatsApp voice notes:
23from pydub import AudioSegment
24
25audio = AudioSegment.from_file("input-4.ogg", format="ogg")
26audio.export("output.wav", format="wav")
27print("Conversion complete!")
28
29# Inference
30tts_text = f"""یہ ٹی ٹی ایس کیسا ہے؟ اس کے بارے میں کچھ بتائیں"""
31speaker_audio_file = "output.wav"
32lang = "ur"
33
34gpt_cond_latent, speaker_embedding = XTTS_MODEL.get_conditioning_latents(
35 audio_path=["output.wav"],
36 gpt_cond_len=XTTS_MODEL.config.gpt_cond_len,
37 max_ref_length=XTTS_MODEL.config.max_ref_len,
38 sound_norm_refs=XTTS_MODEL.config.sound_norm_refs,
39)
40
41tts_texts = [tts_text]
42wav_chunks = []
43for text in tqdm(tts_texts):
44 wav_chunk = XTTS_MODEL.inference(
45 text=text,
46 language=lang,
47 gpt_cond_latent=gpt_cond_latent,
48 speaker_embedding=speaker_embedding,
49 temperature=0.1,
50 length_penalty=0.1,
51 repetition_penalty=10.0,
52 top_k=10,
53 top_p=0.3,
54 )
55 wav_chunks.append(torch.tensor(wav_chunk["wav"]))
56
57out_wav = torch.cat(wav_chunks, dim=0).unsqueeze(0).cpu()
58
59from IPython.display import Audio
60Audio(out_wav, rate=24000)
61