Spaces:
Running
Running
File size: 1,779 Bytes
c6f03d2 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 |
import gradio as gr
import tempfile
from huggingface_hub import hf_hub_download
from torch import no_grad, package
import ctypes
import gc
config = {
"mykyta": "theodotus/tts-vits-mykyta-uk",
"olena": "theodotus/tts-vits-olena-uk",
"lada": "theodotus/tts-vits-lada-uk",
}
voices = list(config.keys())
tts_kwargs = {
"speaker_name": "uk",
"language_name": "uk",
}
def trim_memory():
libc = ctypes.CDLL("libc.so.6")
libc.malloc_trim(0)
gc.collect()
def init_models():
models = {}
for name, model_name in config.items():
model_path = hf_hub_download(model_name, "model.pt")
importer = package.PackageImporter(model_path)
synt = importer.load_pickle("tts_models", "model")
models[name] = synt
return models
def tts(text: str, voice: str):
synt = models[voice]
with tempfile.NamedTemporaryFile(suffix=".wav", delete=False) as fp:
with no_grad():
wav_data = synt.tts(text, **tts_kwargs)
synt.save_wav(wav_data, fp)
trim_memory()
return fp.name
models = init_models()
iface = gr.Interface(
fn=tts,
inputs=[
gr.Textbox(
label="Input",
value="К+ам'ян+ець-Под+ільський - м+істо в Хмельн+ицькій +області Укра+їни, ц+ентр Кам'ян+ець-Под+ільської міськ+ої об'+єднаної територі+альної гром+ади +і Кам'ян+ець-Под+ільського рай+ону.",
),
gr.Radio(
label="Voice",
choices=voices,
value=voices[0],
),
],
outputs=gr.Audio(label="Output"),
title="🇺🇦 - Ukrainian Voices",
)
iface.launch() |