File size: 2,306 Bytes
dfc143a 9b09053 dfc143a 9b09053 3e61c0f 9fd1e6b 9b09053 0c0d80a dfc143a 9b09053 dfc143a 9b09053 eb5ea38 aae6676 dfc143a 9b09053 dfc143a 9b09053 aae6676 dfc143a aae6676 9b09053 dfc143a 9b09053 dfc143a 9b09053 aae6676 9b09053 dfc143a aae6676 9fd1e6b |
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 |
import gradio as gr
from infer_onnx import TTS
from ruaccent import RUAccent # https://huggingface.co/TeraTTS/accentuator
# Заголовок и ссылка на репозиторий с моделями
title = "GitHub with models: https://github.com/Tera2Space/RUTTS"
# Список моделей TTS для выбора
models = ["TeraTTS/natasha-g2p-vits", "TeraTTS/glados2-g2p-vits", "TeraTTS/glados-g2p-vits"]
# Создаем словарь моделей и инициализируем их
models = {k: TTS(k) for k in models}
# Создаем объект для акцентуации текста
accentizer = RUAccent(workdir="./model/ruaccent")
accentizer.load(omograph_model_size='big', use_dictionary=True, load_yo_homographs_model=True)
# Функция для предобработки текста (акцентуация и ё)
# Функция для синтеза речи
def text_to_speech(model_name, length_scale, text, prep_text, prep_yo):
if prep_text:
text = accentizer.process_all(text, process_yo_omographs=prep_yo)
audio = models[model_name](text, length_scale=length_scale)
models[model_name].save_wav(audio, 'temp.wav')
return 'temp.wav', f"Обработанный текст: '{text}'"
# Создание интерфейса Gradio
model_choice = gr.Dropdown(choices=list(models.keys()), value="TeraTTS/natasha-g2p-vits", label="Выберите модель")
input_text = gr.Textbox(label="Введите текст для синтеза речи")
prep_text = gr.Checkbox(label="Предобработать", info="Хотите предобработать текст? (ударения, ё)", value=True)
prep_yo = gr.Checkbox(label="BETA Ё-омографы", info="Хотите обрабатывать Ё-омографы? (все - всё)", value=True)
length_scale = gr.Slider(minimum=0.1, maximum=2.0, label="Length scale (увеличить длину звучания) По умолчанию: 1.2", value=1.2)
output_audio = gr.Audio(label="Аудио", type="numpy")
output_text = gr.Textbox(label="Обработанный текст")
iface = gr.Interface(fn=text_to_speech, inputs=[model_choice, length_scale, input_text, prep_text, prep_yo], outputs=[output_audio, output_text], title=title)
iface.launch()
|