Serhiy Stetskovych commited on
Commit
95f2409
1 Parent(s): faeb9b5

Add speed control

Browse files
Files changed (2) hide show
  1. app.py +6 -5
  2. infer.py +4 -4
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=5, embedding_scale=1.0)[0]
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, progress, alpha=0.7, diffusion_steps=10, embedding_scale=1.2):
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