File size: 2,144 Bytes
dfc143a 9b09053 dfc143a 9b09053 a07ab8c 9fd1e6b 9b09053 1020859 dfc143a 9b09053 dfc143a 9b09053 b7c3456 d4bd320 dfc143a 9b09053 03e2bd2 dfc143a 08780c0 03e2bd2 9b09053 1959e6a dfc143a 9b09053 dfc143a 9b09053 dfc143a 03e2bd2 1959e6a |
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 |
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/TeraTTS"
# Список моделей TTS для выбора
models = ["TeraTTS/natasha-g2p-vits", "TeraTTS/glados2-g2p-vits", "TeraTTS/glados-g2p-vits", "TeraTTS/girl_nice-g2p-vits"]
# Создаем словарь моделей и инициализируем их
models = {k: TTS(k) for k in models}
# Создаем объект для акцентуации текста
accentizer = RUAccent()
accentizer.load(omograph_model_size='turbo3.1', use_dictionary=True)
# Функция для синтеза речи
def text_to_speech(model_name, length_scale, text, prep_text):
if prep_text:
# Функция для предобработки текста (акцентуация и ё)
text = accentizer.process_all(text)
audio = models[model_name](text, length_scale=length_scale)
models[model_name].save_wav(audio, 'temp.wav', sample_rate=models[model_name].config["samplerate"])
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)
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], outputs=[output_audio, output_text], title=title)
iface.launch() |