Spaces:
Running
on
Zero
Running
on
Zero
Serhiy Stetskovych
commited on
Commit
•
95f2409
1
Parent(s):
faeb9b5
Add speed control
Browse files
app.py
CHANGED
@@ -12,7 +12,7 @@ description = f'''
|
|
12 |
|
13 |
'''
|
14 |
|
15 |
-
def synthesise(text, progress=gr.Progress()):
|
16 |
if text.strip() == "":
|
17 |
raise gr.Error("You must enter some text")
|
18 |
if len(text) > 150000:
|
@@ -21,7 +21,7 @@ def synthesise(text, progress=gr.Progress()):
|
|
21 |
print(text)
|
22 |
print("*** end ***")
|
23 |
|
24 |
-
return 24000, inference(text, progress, alpha=1.0, diffusion_steps=
|
25 |
|
26 |
|
27 |
|
@@ -31,6 +31,7 @@ if __name__ == "__main__":
|
|
31 |
description=description,
|
32 |
inputs=[
|
33 |
gr.Text(label='Text:', lines=5, max_lines=10),
|
|
|
34 |
],
|
35 |
outputs=[
|
36 |
gr.Audio(
|
@@ -44,9 +45,9 @@ if __name__ == "__main__":
|
|
44 |
allow_flagging ='never',
|
45 |
cache_examples=False,
|
46 |
title='StyleTTS2 ukrainian demo',
|
47 |
-
examples=["""Решта окупантів звернула на Вокзальну — центральну вулицю Бучі. Тільки уявіть їхній настрій, коли перед ними відкрилася ця пасторальна картина! Невеличкі котеджі й просторіші будинки шикуються обабіч, перед ними вивищуються голі липи та електростовпи, тягнуться газони й жовто-чорні бордюри. Доглянуті сади визирають із-поза зелених парканів, гавкотять собаки, співають птахи… На дверях будинку номер тридцять шість досі висить різдвяний вінок.""", """
|
48 |
-
Одна дівчинка стала королевою Франції. Звали її Анна, і була вона донькою Ярослава Му+дрого, великого київського князя. Він опі+кувався літературою та культурою в Київській Русі+, а тоді переважно про таке не дбали – більше воювали і споруджували фортеці.""", """
|
49 |
-
Одна дівчинка народилася і виросла в Америці, та коли стала дорослою, зрозуміла, що дуже любить українські вірші й найбільше хоче робити вистави про Україну. Звали її Вірляна. Дід Вірляни був український мовознавець і педагог Кость Кисілевський,
|
50 |
)
|
51 |
i.queue(max_size=20, default_concurrency_limit=4)
|
52 |
i.launch(share=False, server_name="0.0.0.0")
|
|
|
12 |
|
13 |
'''
|
14 |
|
15 |
+
def synthesise(text, speed, progress=gr.Progress()):
|
16 |
if text.strip() == "":
|
17 |
raise gr.Error("You must enter some text")
|
18 |
if len(text) > 150000:
|
|
|
21 |
print(text)
|
22 |
print("*** end ***")
|
23 |
|
24 |
+
return 24000, inference(text, progress, speed=speed, alpha=1.0, diffusion_steps=6, embedding_scale=1.0)[0]
|
25 |
|
26 |
|
27 |
|
|
|
31 |
description=description,
|
32 |
inputs=[
|
33 |
gr.Text(label='Text:', lines=5, max_lines=10),
|
34 |
+
gr.Slider(label='Швидкість:', maximum=1.3, minimum=0.7, value=1.0),
|
35 |
],
|
36 |
outputs=[
|
37 |
gr.Audio(
|
|
|
45 |
allow_flagging ='never',
|
46 |
cache_examples=False,
|
47 |
title='StyleTTS2 ukrainian demo',
|
48 |
+
examples=[["""Решта окупантів звернула на Вокзальну — центральну вулицю Бучі. Тільки уявіть їхній настрій, коли перед ними відкрилася ця пасторальна картина! Невеличкі котеджі й просторіші будинки шикуються обабіч, перед ними вивищуються голі липи та електростовпи, тягнуться газони й жовто-чорні бордюри. Доглянуті сади визирають із-поза зелених парканів, гавкотять собаки, співають птахи… На дверях будинку номер тридцять шість досі висить різдвяний вінок.""", 1.0], ["""
|
49 |
+
Одна дівчинка стала королевою Франції. Звали її Анна, і була вона донькою Ярослава Му+дрого, великого київського князя. Він опі+кувався літературою та культурою в Київській Русі+, а тоді переважно про таке не дбали – більше воювали і споруджували фортеці.""", 1.0], ["""
|
50 |
+
Одна дівчинка народилася і виросла в Америці, та коли стала дорослою, зрозуміла, що дуже любить українські вірші й найбільше хоче робити вистави про Україну. Звали її Вірляна. Дід Вірляни був український мовознавець і педагог Кость Кисілевський, ко��рий навчався в Лейпцизькому та Віденському університетах і, після Другої світової війни виїхавши до США, започаткував систему шкіл українознавства по всій Америці. Тож Вірляна зростала в українському середовищі, а окрім того – в середовищі вихідців з інших країн.""", 1.0] ],
|
51 |
)
|
52 |
i.queue(max_size=20, default_concurrency_limit=4)
|
53 |
i.launch(share=False, server_name="0.0.0.0")
|
infer.py
CHANGED
@@ -107,7 +107,7 @@ def split_to_parts(text):
|
|
107 |
|
108 |
|
109 |
|
110 |
-
def _inf(text, s_prev, noise, alpha, diffusion_steps, embedding_scale):
|
111 |
text = text.strip()
|
112 |
text = text.replace('"', '')
|
113 |
text = text.replace('+', 'ˈ')
|
@@ -146,7 +146,7 @@ def _inf(text, s_prev, noise, alpha, diffusion_steps, embedding_scale):
|
|
146 |
|
147 |
x, _ = model.predictor.lstm(d)
|
148 |
duration = model.predictor.duration_proj(x)
|
149 |
-
duration = torch.sigmoid(duration).sum(axis=-1)
|
150 |
pred_dur = torch.round(duration.squeeze()).clamp(min=1)
|
151 |
|
152 |
pred_aln_trg = torch.zeros(input_lengths, int(pred_dur.sum().data))
|
@@ -165,7 +165,7 @@ def _inf(text, s_prev, noise, alpha, diffusion_steps, embedding_scale):
|
|
165 |
|
166 |
|
167 |
@spaces.GPU
|
168 |
-
def inference(text,
|
169 |
|
170 |
wavs = []
|
171 |
s_prev = None
|
@@ -177,7 +177,7 @@ def inference(text, progress, alpha=0.7, diffusion_steps=10, embedding_scale=1.2
|
|
177 |
noise = torch.randn(1,1,256).to(device)
|
178 |
for text in progress.tqdm(sentences):
|
179 |
if text.strip() == "": continue
|
180 |
-
wav, s_prev, ps = _inf(text, s_prev, noise, alpha=alpha, diffusion_steps=diffusion_steps, embedding_scale=embedding_scale)
|
181 |
wavs.append(wav)
|
182 |
phonemes += ' ' + ps
|
183 |
return np.concatenate(wavs), phonemes
|
|
|
107 |
|
108 |
|
109 |
|
110 |
+
def _inf(text, speed, s_prev, noise, alpha, diffusion_steps, embedding_scale):
|
111 |
text = text.strip()
|
112 |
text = text.replace('"', '')
|
113 |
text = text.replace('+', 'ˈ')
|
|
|
146 |
|
147 |
x, _ = model.predictor.lstm(d)
|
148 |
duration = model.predictor.duration_proj(x)
|
149 |
+
duration = torch.sigmoid(duration).sum(axis=-1)/speed
|
150 |
pred_dur = torch.round(duration.squeeze()).clamp(min=1)
|
151 |
|
152 |
pred_aln_trg = torch.zeros(input_lengths, int(pred_dur.sum().data))
|
|
|
165 |
|
166 |
|
167 |
@spaces.GPU
|
168 |
+
def inference(text, progress, speed = 1.0, alpha=0.7, diffusion_steps=10, embedding_scale=1.2):
|
169 |
|
170 |
wavs = []
|
171 |
s_prev = None
|
|
|
177 |
noise = torch.randn(1,1,256).to(device)
|
178 |
for text in progress.tqdm(sentences):
|
179 |
if text.strip() == "": continue
|
180 |
+
wav, s_prev, ps = _inf(text, speed, s_prev, noise, alpha=alpha, diffusion_steps=diffusion_steps, embedding_scale=embedding_scale)
|
181 |
wavs.append(wav)
|
182 |
phonemes += ' ' + ps
|
183 |
return np.concatenate(wavs), phonemes
|