Fangjun Kuang
Committed by GitHub

Add two more Piper tts models (#2525)

This PR adds support for two new Piper TTS (Text-to-Speech) models: an Indonesian model (id_ID-news_tts-medium) and a Hindi model (hi_IN-rohan-medium).
@@ -164,6 +164,8 @@ jobs: @@ -164,6 +164,8 @@ jobs:
164 vits-piper-pl_PL-justyna_wg_glos-medium 164 vits-piper-pl_PL-justyna_wg_glos-medium
165 vits-piper-pl_PL-meski_wg_glos-medium 165 vits-piper-pl_PL-meski_wg_glos-medium
166 vits-piper-pl_PL-zenski_wg_glos-medium 166 vits-piper-pl_PL-zenski_wg_glos-medium
  167 + vits-piper-id_ID-news_tts-medium
  168 + vits-piper-hi_IN-rohan-medium
167 ) 169 )
168 for d in ${dirs[@]}; do 170 for d in ${dirs[@]}; do
169 src=scripts/piper/release/$d 171 src=scripts/piper/release/$d
@@ -204,9 +204,11 @@ def get_piper_models() -> List[TtsModel]: @@ -204,9 +204,11 @@ def get_piper_models() -> List[TtsModel]:
204 TtsModel(model_dir="vits-piper-fr_FR-upmc-medium"), 204 TtsModel(model_dir="vits-piper-fr_FR-upmc-medium"),
205 TtsModel(model_dir="vits-piper-hi_IN-pratham-medium"), 205 TtsModel(model_dir="vits-piper-hi_IN-pratham-medium"),
206 TtsModel(model_dir="vits-piper-hi_IN-priyamvada-medium"), 206 TtsModel(model_dir="vits-piper-hi_IN-priyamvada-medium"),
  207 + TtsModel(model_dir="vits-piper-hi_IN-rohan-medium"),
207 TtsModel(model_dir="vits-piper-hu_HU-anna-medium"), 208 TtsModel(model_dir="vits-piper-hu_HU-anna-medium"),
208 TtsModel(model_dir="vits-piper-hu_HU-berta-medium"), 209 TtsModel(model_dir="vits-piper-hu_HU-berta-medium"),
209 TtsModel(model_dir="vits-piper-hu_HU-imre-medium"), 210 TtsModel(model_dir="vits-piper-hu_HU-imre-medium"),
  211 + TtsModel(model_dir="vits-piper-id_ID-news_tts-medium"),
210 TtsModel(model_dir="vits-piper-is_IS-bui-medium"), 212 TtsModel(model_dir="vits-piper-is_IS-bui-medium"),
211 TtsModel(model_dir="vits-piper-is_IS-salka-medium"), 213 TtsModel(model_dir="vits-piper-is_IS-salka-medium"),
212 TtsModel(model_dir="vits-piper-is_IS-steinn-medium"), 214 TtsModel(model_dir="vits-piper-is_IS-steinn-medium"),
@@ -451,6 +451,7 @@ def get_hi_models(): @@ -451,6 +451,7 @@ def get_hi_models():
451 hi_IN = [ 451 hi_IN = [
452 PiperModel(name="pratham", kind="medium", sr=22050, ns=1), 452 PiperModel(name="pratham", kind="medium", sr=22050, ns=1),
453 PiperModel(name="priyamvada", kind="medium", sr=22050, ns=1), 453 PiperModel(name="priyamvada", kind="medium", sr=22050, ns=1),
  454 + PiperModel(name="rohan", kind="medium", sr=22050, ns=1),
454 ] 455 ]
455 456
456 for m in hi_IN: 457 for m in hi_IN:
@@ -1421,6 +1422,36 @@ def get_vi_models(): @@ -1421,6 +1422,36 @@ def get_vi_models():
1421 return ans 1422 return ans
1422 1423
1423 1424
  1425 +# Indonesian
  1426 +def get_id_models():
  1427 + id_ID = [
  1428 + PiperModel(name="news_tts", kind="medium", sr=22050, ns=1),
  1429 + ]
  1430 +
  1431 + for m in id_ID:
  1432 + m.lang = "id_ID"
  1433 +
  1434 + ans = id_ID
  1435 +
  1436 + for m in ans:
  1437 + m.text = "Jangan tanyakan apa yang negara bisa berikan kepadamu, tapi tanyakan apa yang bisa kamu berikan untuk negaramu."
  1438 +
  1439 + if m.model_name == "":
  1440 + m.model_name = f"{m.lang}-{m.name}-{m.kind}.onnx"
  1441 +
  1442 + code = m.lang[:2]
  1443 + if m.cmd == "":
  1444 + m.cmd = f"""
  1445 + wget -qq https://huggingface.co/rhasspy/piper-voices/resolve/main/{code}/{m.lang}/{m.name}/{m.kind}/{m.model_name}
  1446 + wget -qq https://huggingface.co/rhasspy/piper-voices/resolve/main/{code}/{m.lang}/{m.name}/{m.kind}/{m.model_name}.json
  1447 + wget -qq https://huggingface.co/rhasspy/piper-voices/resolve/main/{code}/{m.lang}/{m.name}/{m.kind}/MODEL_CARD
  1448 + """
  1449 + if m.url == "":
  1450 + m.url = f"https://huggingface.co/rhasspy/piper-voices/tree/main/{code}/{m.lang}/{m.name}/{m.kind}"
  1451 +
  1452 + return ans
  1453 +
  1454 +
1424 def get_en_models(): 1455 def get_en_models():
1425 en_gb = [ 1456 en_gb = [
1426 PiperModel(name="alan", kind="low", sr=16000, ns=1), 1457 PiperModel(name="alan", kind="low", sr=16000, ns=1),
@@ -1760,6 +1791,7 @@ def get_all_models(): @@ -1760,6 +1791,7 @@ def get_all_models():
1760 ans += get_fi_models() 1791 ans += get_fi_models()
1761 ans += get_fr_models() 1792 ans += get_fr_models()
1762 ans += get_hi_models() 1793 ans += get_hi_models()
  1794 + ans += get_id_models()
1763 ans += get_hu_models() 1795 ans += get_hu_models()
1764 ans += get_is_models() 1796 ans += get_is_models()
1765 ans += get_it_models() 1797 ans += get_it_models()