txya900619 commited on
Commit
ef63ede
1 Parent(s): c410374

feat: add dapu babsuxuab raoping zhaoan to ipa.yaml

Browse files
Files changed (3) hide show
  1. app.py +11 -7
  2. configs/ipa.yaml +4 -0
  3. ipa/__init__.py +13 -7
app.py CHANGED
@@ -1,13 +1,13 @@
1
  import os
2
 
3
  import gradio as gr
4
- import TTS
5
- from TTS.utils.synthesizer import Synthesizer
6
  import numpy as np
7
- from huggingface_hub import snapshot_download
8
- from omegaconf import OmegaConf
9
  import spaces
10
  import torch
 
 
 
 
11
 
12
  from ipa.ipa import get_ipa, parse_ipa
13
  from replace.tts import ChangedVitsConfig
@@ -45,8 +45,9 @@ OmegaConf.register_new_resolver("load_model", load_model)
45
 
46
  models_config = OmegaConf.to_object(OmegaConf.load("configs/models.yaml"))
47
 
 
48
  @spaces.GPU
49
- def _do_tts(model_id, ipa, language_name,speaker_name=None, speaker_wav=None):
50
  model = models_config[model_id]["model"]
51
  if speaker_wav is not None:
52
  return model.tts(
@@ -99,7 +100,10 @@ def text_to_speech(
99
  return (
100
  words,
101
  pinyin,
102
- (models_config[model_id]["model"].tts_model.config.audio.sample_rate, np.array(wav)),
 
 
 
103
  )
104
 
105
 
@@ -131,7 +135,7 @@ def when_model_selected(model_id):
131
  value=dialect_drop_down_choices[0][1],
132
  interactive=len(dialect_drop_down_choices) > 1,
133
  ),
134
- gr.update(visible=use_default_emb_or_ref_radio_visible, value="default"),
135
  )
136
 
137
 
 
1
  import os
2
 
3
  import gradio as gr
 
 
4
  import numpy as np
 
 
5
  import spaces
6
  import torch
7
+ import TTS
8
+ from huggingface_hub import snapshot_download
9
+ from omegaconf import OmegaConf
10
+ from TTS.utils.synthesizer import Synthesizer
11
 
12
  from ipa.ipa import get_ipa, parse_ipa
13
  from replace.tts import ChangedVitsConfig
 
45
 
46
  models_config = OmegaConf.to_object(OmegaConf.load("configs/models.yaml"))
47
 
48
+
49
  @spaces.GPU
50
+ def _do_tts(model_id, ipa, language_name, speaker_name=None, speaker_wav=None):
51
  model = models_config[model_id]["model"]
52
  if speaker_wav is not None:
53
  return model.tts(
 
100
  return (
101
  words,
102
  pinyin,
103
+ (
104
+ models_config[model_id]["model"].tts_model.config.audio.sample_rate,
105
+ np.array(wav),
106
+ ),
107
  )
108
 
109
 
 
135
  value=dialect_drop_down_choices[0][1],
136
  interactive=len(dialect_drop_down_choices) > 1,
137
  ),
138
+ gr.update(visible=use_default_emb_or_ref_radio_visible, value="預設語者"),
139
  )
140
 
141
 
configs/ipa.yaml CHANGED
@@ -7,3 +7,7 @@ pinyin_to_ipa_dict: ${gh_download:FormoSpeech/FormoLexicon, release/pinyin_to_ip
7
  lexicon:
8
  sixian: ${gh_download:FormoSpeech/FormoLexicon, release/lexicon_htia_sixian_c.json, ${gh_token}}
9
  hailu: ${gh_download:FormoSpeech/FormoLexicon, release/lexicon_htia_hailu_c.json, ${gh_token}}
 
 
 
 
 
7
  lexicon:
8
  sixian: ${gh_download:FormoSpeech/FormoLexicon, release/lexicon_htia_sixian_c.json, ${gh_token}}
9
  hailu: ${gh_download:FormoSpeech/FormoLexicon, release/lexicon_htia_hailu_c.json, ${gh_token}}
10
+ dapu: ${gh_download:FormoSpeech/FormoLexicon, release/lexicon_htia_dapu_c.json, ${gh_token}}
11
+ nansixian: ${gh_download:FormoSpeech/FormoLexicon, release/lexicon_htia_nansixian_c.json, ${gh_token}}
12
+ raoping: ${gh_download:FormoSpeech/FormoLexicon, release/lexicon_htia_raoping_c.json, ${gh_token}}
13
+ zhaoan: ${gh_download:FormoSpeech/FormoLexicon, release/lexicon_htia_zhaoan_c.json, ${gh_token}}
ipa/__init__.py CHANGED
@@ -1,24 +1,30 @@
1
- import requests
2
 
 
3
  from omegaconf import OmegaConf
4
 
 
5
  def gh_download(repo, path, token):
6
  paths = [path] if isinstance(path, str) else path
7
  result = None
8
- headers = {"Authorization": f"Bearer {token}", "Accept": "application/vnd.github.raw+json"}
 
 
 
9
  for path in paths:
10
- url = f"https://api.github.com/repos/{repo}/contents/{path}"
11
  response = requests.get(url, headers=headers)
12
  if response.status_code != 200:
13
  raise Exception(f"Failed to download {path} from {repo}")
14
-
15
  if result is None:
16
  result = response.json()
17
  elif isinstance(result, list):
18
  result.extend(response.json())
19
  elif isinstance(result, dict):
20
  result.update(response.json())
21
-
22
  return result
23
-
24
- OmegaConf.register_new_resolver("gh_download", gh_download)
 
 
1
+ import time
2
 
3
+ import requests
4
  from omegaconf import OmegaConf
5
 
6
+
7
  def gh_download(repo, path, token):
8
  paths = [path] if isinstance(path, str) else path
9
  result = None
10
+ headers = {
11
+ "Authorization": f"Bearer {token}",
12
+ "Accept": "application/vnd.github.raw+json",
13
+ }
14
  for path in paths:
15
+ url = f"https://api.github.com/repos/{repo}/contents/{path}"
16
  response = requests.get(url, headers=headers)
17
  if response.status_code != 200:
18
  raise Exception(f"Failed to download {path} from {repo}")
19
+
20
  if result is None:
21
  result = response.json()
22
  elif isinstance(result, list):
23
  result.extend(response.json())
24
  elif isinstance(result, dict):
25
  result.update(response.json())
26
+ time.sleep(1)
27
  return result
28
+
29
+
30
+ OmegaConf.register_new_resolver("gh_download", gh_download)