Spaces:
Build error
Build error
import os | |
from TTS.utils.download import download_url | |
from TTS.utils.synthesizer import Synthesizer | |
import gradio as gr | |
import tempfile | |
# Variables | |
MAX_TXT_LEN = 800 | |
MODEL_DIR = "kbd-vits-tts-male" | |
MODEL_URL = "https://huggingface.co/anzorq/kbd-vits-tts-male/resolve/main/checkpoint_56000.pth" | |
CONFIG_URL = "https://huggingface.co/anzorq/kbd-vits-tts-male/resolve/main/config_35000.json" | |
# Downloading model and config | |
if not os.path.exists(MODEL_DIR): | |
os.makedirs(MODEL_DIR) | |
download_url(MODEL_URL, MODEL_DIR, "model.pth") | |
download_url(CONFIG_URL, MODEL_DIR, "config.json") | |
def tts(text: str): | |
if len(text) > MAX_TXT_LEN: | |
text = text[:MAX_TXT_LEN] | |
print(f"Input text was cutoff since it went over the {MAX_TXT_LEN} character limit.") | |
print(text) | |
text = text.replace("I", "ӏ") #replace capital is with "Palochka" symbol | |
# synthesize | |
synthesizer = Synthesizer(f"{MODEL_DIR}/model.pth", f"{MODEL_DIR}/config.json") | |
wavs = synthesizer.tts(text) | |
# return output | |
with tempfile.NamedTemporaryFile(suffix=".wav", delete=False) as fp: | |
synthesizer.save_wav(wavs, fp) | |
return fp.name | |
# Gradio interface | |
iface = gr.Interface( | |
fn=tts, | |
inputs=gr.Textbox( | |
label="Text", | |
value="Default text here if you need it.", | |
), | |
outputs=gr.Audio(label="Output", type='filepath'), | |
title="KBD TTS", | |
live=False | |
) | |
iface.launch(share=False) | |