archivartaunik commited on
Commit
2c2732a
·
verified ·
1 Parent(s): 4ec9d89

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +43 -8
app.py CHANGED
@@ -1,5 +1,7 @@
1
  import gradio as gr
2
  import torch
 
 
3
  from TTS.tts.configs.xtts_config import XttsConfig
4
  from TTS.tts.models.xtts import Xtts
5
  from huggingface_hub import hf_hub_download
@@ -12,6 +14,7 @@ repo_id = "archivartaunik/GPT_XTTS_V2_40EP" # Імя рэпазіторыя Hug
12
  checkpoint_file = hf_hub_download(repo_id, filename="model.pth") # Загружаем файл праверачнай кропкі
13
  config_file = hf_hub_download(repo_id, filename="config.json") # Загружаем канфігурацыю
14
  vocab_file = hf_hub_download(repo_id, filename="vocab.json") # Загружаем слоўнік
 
15
 
16
  # Загрузка канфігурацыі мадэлі
17
  config = XttsConfig()
@@ -23,18 +26,50 @@ XTTS_MODEL.load_checkpoint(config, checkpoint_path=checkpoint_file, vocab_path=v
23
  XTTS_MODEL.to(device)
24
 
25
  # Функцыя для пераўтварэння тэксту ў гукавы фармат
26
- def text_to_speech(input_text):
27
- # Генерацыя аўдыя на аснове ўваходнага тэксту
28
- output = XTTS_MODEL.generate(input_text)
29
- return output.cpu().numpy()
 
 
 
 
30
 
31
- # Налада інтэрфейсу Gradio
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
32
  demo = gr.Interface(
33
  fn=text_to_speech, # Функцыя пераўтварэння
34
- inputs="text", # Уваходныя дадзеныя (тэкст)
 
 
 
 
35
  outputs="audio", # Выхадныя дадзеныя (аўдыя)
36
- title="XTTS Belarusian Demo", # Назва праекта
37
- description="Увядзіце тэкст, і мадэль пераўтворыць яго ў аўдыя.", # Апісанне
38
  )
39
 
40
  # Запуск прыкладання
 
1
  import gradio as gr
2
  import torch
3
+ from tqdm import tqdm
4
+ from underthesea import sent_tokenize
5
  from TTS.tts.configs.xtts_config import XttsConfig
6
  from TTS.tts.models.xtts import Xtts
7
  from huggingface_hub import hf_hub_download
 
14
  checkpoint_file = hf_hub_download(repo_id, filename="model.pth") # Загружаем файл праверачнай кропкі
15
  config_file = hf_hub_download(repo_id, filename="config.json") # Загружаем канфігурацыю
16
  vocab_file = hf_hub_download(repo_id, filename="vocab.json") # Загружаем слоўнік
17
+ default_voice_file = hf_hub_download(repo_id, filename="voice.wav") # Файл голасу па змаўчанні
18
 
19
  # Загрузка канфігурацыі мадэлі
20
  config = XttsConfig()
 
26
  XTTS_MODEL.to(device)
27
 
28
  # Функцыя для пераўтварэння тэксту ў гукавы фармат
29
+ def text_to_speech(belarusian_story, lang="be", speaker_audio_file=default_voice_file):
30
+ # Атрыманне латэнтных умоў і эмацый
31
+ gpt_cond_latent, speaker_embedding = XTTS_MODEL.get_conditioning_latents(
32
+ audio_path=speaker_audio_file,
33
+ gpt_cond_len=XTTS_MODEL.config.gpt_cond_len,
34
+ max_ref_length=XTTS_MODEL.config.max_ref_len,
35
+ sound_norm_refs=XTTS_MODEL.config.sound_norm_refs,
36
+ )
37
 
38
+ # Токенізацыя тэксту на асобныя сказы
39
+ tts_texts = sent_tokenize(belarusian_story)
40
+
41
+ # Генерацыя аўдыё для кожнага сказы
42
+ wav_chunks = []
43
+ for 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=1.0,
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
+
57
+ # Аб'ядноўваем усе часткі аўдыё ў адзін
58
+ out_wav = torch.cat(wav_chunks, dim=0).unsqueeze(0).cpu()
59
+
60
+ return out_wav.numpy()
61
+
62
+ # Інтэрфейс Gradio
63
  demo = gr.Interface(
64
  fn=text_to_speech, # Функцыя пераўтварэння
65
+ inputs=[
66
+ gr.Textbox(lines=5, label="Тэкст на беларускай мове"),
67
+ gr.Textbox(value="be", label="Мова (па змаўчанні BE)", visible=False), # Па змаўчанні BE
68
+ gr.File(label="Файл голасу (па змаўчанні voice.wav)", file_types=[".wav"], optional=True),
69
+ ],
70
  outputs="audio", # Выхадныя дадзеныя (аўдыя)
71
+ title="XTTS TTS Demo", # Назва праекта
72
+ description="Увядзіце тэкст, і мадэль пераўтворыць яго ў аўдыя. Вы можаце выкарыстоўваць голас па змаўчанні або загрузіць уласны.",
73
  )
74
 
75
  # Запуск прыкладання