Spaces:
Running
on
Zero
Running
on
Zero
archivartaunik
commited on
Update app.py
Browse files
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(
|
27 |
-
#
|
28 |
-
|
29 |
-
|
|
|
|
|
|
|
|
|
30 |
|
31 |
-
#
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
32 |
demo = gr.Interface(
|
33 |
fn=text_to_speech, # Функцыя пераўтварэння
|
34 |
-
inputs=
|
|
|
|
|
|
|
|
|
35 |
outputs="audio", # Выхадныя дадзеныя (аўдыя)
|
36 |
-
title="XTTS
|
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 |
# Запуск прыкладання
|