Spaces:
Running
Running
from TTS.utils.synthesizer import Synthesizer | |
from huggingface_hub import hf_hub_download | |
import gradio as gr | |
import tempfile | |
import os | |
REPO_ID = "jhlfrfufyfn/bel-tts" | |
my_title = "Беларускі тэкст-у-маўленне" | |
my_description = "Беларускамоўная мадэль для агучвання тэксту. (ПАКУЛЬ НЕ ДАРОБЛЕНА)" | |
be_text = "Гепарды жывуць у адкрытых і прасторных месцах, дзе ёсць шмат здабычы." | |
my_inputs = [ | |
gr.inputs.Textbox(lines=5, label="Input Text", default=be_text), | |
] | |
my_outputs = gr.outputs.Audio(type="file", label="Output Audio") | |
def belarusify_russian_text(text: str): | |
text = text.replace("и", "і") | |
text = text.replace("іу", "іў") | |
text = text.replace("оу", "оў") | |
text = text.replace("ау", "аў") | |
text = text.replace("ыу", "ыў") | |
text = text.replace("уу", "уў") | |
text = text.replace("юу", "юў") | |
text = text.replace("еу", "еў") | |
text = text.replace("ёу", "ёў") | |
text = text.replace("щ", "шч") | |
return text | |
import requests | |
def tts(text: str): | |
text = belarusify_russian_text(text) | |
# Sending a request to the fonemizer | |
response = requests.post("http://fonemizer.nikuchin.fun/processText", | |
data=text, | |
headers={'Content-Type': 'text/plain'}) | |
if response.status_code != 200: | |
raise Exception(f"Request to fonemizer failed with status code {response.status_code}") | |
best_model_path = hf_hub_download(repo_id=REPO_ID, filename="model.pth") | |
config_path = hf_hub_download(repo_id=REPO_ID, filename="config.json") | |
vocoder_path = hf_hub_download(repo_id=REPO_ID, filename="vocoder.pth") | |
scale_stats_path = hf_hub_download(repo_id=REPO_ID, filename="scale_stats.npy") | |
vocoder_config_path = hf_hub_download(repo_id=REPO_ID, filename="vocoder_config.json") | |
# init synthesizer | |
synthesizer = Synthesizer( | |
best_model_path, | |
config_path, | |
None, | |
None, | |
vocoder_path, | |
vocoder_config_path, | |
None, | |
None, | |
False | |
) | |
# create audio file | |
wavs = synthesizer.tts(text) | |
with tempfile.NamedTemporaryFile(suffix = ".wav", delete = False) as fp: | |
synthesizer.save_wav(wavs, fp) | |
return fp.name | |
print("CWD IS ", os.getcwd()) | |
print("LIST IS", os.listdir()) | |
iface = gr.Interface( | |
fn=tts, | |
inputs=my_inputs, | |
outputs=my_outputs, | |
title=my_title, | |
description = my_description, | |
article = "", | |
examples = "", | |
allow_flagging=False | |
) | |
iface.launch() |