Spaces:
Runtime error
Runtime error
barghavani
commited on
Commit
•
5139131
1
Parent(s):
a17d90e
Upload app.py
Browse files
app.py
ADDED
@@ -0,0 +1,83 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# -*- coding: utf-8 -*-
|
2 |
+
"""app
|
3 |
+
|
4 |
+
Automatically generated by Colaboratory.
|
5 |
+
|
6 |
+
Original file is located at
|
7 |
+
https://colab.research.google.com/drive/1Ri9kvaz9F7Te2-5HZNUzHm-O6vgoSzhc
|
8 |
+
"""
|
9 |
+
|
10 |
+
import os
|
11 |
+
import tempfile
|
12 |
+
import gradio as gr
|
13 |
+
from TTS.utils.synthesizer import Synthesizer
|
14 |
+
from huggingface_hub import hf_hub_download
|
15 |
+
|
16 |
+
# Define constants
|
17 |
+
modelInfo=[["vits-male-azure","best_model_15934.pth","config.json","saillab/persian-tts-azure-grapheme-60K/resolve/main/"],
|
18 |
+
["common_voice_reduce","checkpoint_26000.pth","config.json","https://huggingface.co/saillab/persian-tts-cv15-reduct-grapheme-multispeaker/resolve/main/"],
|
19 |
+
["vits_arman_ebook","best_model_66651.pth","config.json","https://huggingface.co/saillab/persian-tts-grapheme-arm24-finetuned-on1/resolve/main/"]
|
20 |
+
# # Extract model names from MODEL_INFO
|
21 |
+
# MODEL_NAMES = [info[0] for info in MODEL_INFO]
|
22 |
+
]
|
23 |
+
MODEL_NAMES=[
|
24 |
+
"vits male azure(best)",
|
25 |
+
"common voice reduce",
|
26 |
+
"vits arman ebook",
|
27 |
+
#"persian-tts-grapheme-arm24-finetuned-on1",
|
28 |
+
#"glowtts-male",
|
29 |
+
#"glowtts-female",
|
30 |
+
#"female tacotron2"
|
31 |
+
]
|
32 |
+
|
33 |
+
MAX_TXT_LEN = 400
|
34 |
+
TOKEN = os.getenv('HUGGING_FACE_HUB_TOKEN')
|
35 |
+
|
36 |
+
# # Download models
|
37 |
+
# for model_name, model_file, config_file, repo_name in MODEL_INFO:
|
38 |
+
# os.makedirs(model_name, exist_ok=True)
|
39 |
+
# print(f"|> Downloading: {model_name}")
|
40 |
+
|
41 |
+
# # Use hf_hub_download to download models from private Hugging Face repositories
|
42 |
+
# hf_hub_download(repo_id=repo_name, filename=model_file, use_auth_token=TOKEN)
|
43 |
+
# hf_hub_download(repo_id=repo_name, filename=config_file, use_auth_token=TOKEN)
|
44 |
+
|
45 |
+
repo_name = "saillab/persian-tts-azure-grapheme-60K"
|
46 |
+
filename = "checkpoint_61800.pth"
|
47 |
+
|
48 |
+
model_file = hf_hub_download(repo_name, filename, use_auth_token=TOKEN)
|
49 |
+
config_file = hf_hub_download(repo_name, "config.json", use_auth_token=TOKEN)
|
50 |
+
|
51 |
+
|
52 |
+
def synthesize(text: str, model_name: str) -> str:
|
53 |
+
"""Synthesize speech using the selected model."""
|
54 |
+
if len(text) > MAX_TXT_LEN:
|
55 |
+
text = text[:MAX_TXT_LEN]
|
56 |
+
print(f"Input text was cut off as it exceeded the {MAX_TXT_LEN} character limit.")
|
57 |
+
|
58 |
+
synthesizer = Synthesizer(model_file, config_file)
|
59 |
+
if synthesizer is None:
|
60 |
+
raise NameError("Model not found")
|
61 |
+
|
62 |
+
wavs = synthesizer.tts(text)
|
63 |
+
|
64 |
+
with tempfile.NamedTemporaryFile(suffix=".wav", delete=False) as fp:
|
65 |
+
synthesizer.save_wav(wavs, fp)
|
66 |
+
return fp.name
|
67 |
+
|
68 |
+
|
69 |
+
iface = gr.Interface(
|
70 |
+
fn=synthesize,
|
71 |
+
inputs=[
|
72 |
+
gr.Textbox(label="Enter Text to Synthesize:", value="زین همرهان سست عناصر، دلم گرفت."),
|
73 |
+
gr.Radio(label="Pick a Model", choices=MODEL_NAMES, value=MODEL_NAMES[0]),
|
74 |
+
],
|
75 |
+
outputs=gr.Audio(label="Output", type='filepath'),
|
76 |
+
examples=[["زین همرهان سست عناصر، دلم گرفت.", MODEL_NAMES[0]]],
|
77 |
+
title='Persian TTS Playground',
|
78 |
+
description="Persian text to speech model demo",
|
79 |
+
article="",
|
80 |
+
live=False
|
81 |
+
)
|
82 |
+
|
83 |
+
iface.launch()
|