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()