File size: 1,946 Bytes
dfc143a c33802f dfc143a 9b09053 c33802f 9fd1e6b 9b09053 dbdd0a7 dfc143a 9b09053 dfc143a 9b09053 b7c3456 d4bd320 dfc143a 9b09053 dfc143a 9b09053 03e2bd2 dfc143a 03e2bd2 9b09053 1959e6a dfc143a 9b09053 dbdd0a7 dfc143a 9b09053 dfc143a c33802f 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 39 40 |
import gradio as gr
from infer_onnx import TTS
from ruaccent import RUAccent
# Заголовок и ссылка на репозиторий с моделями
title = "RU - Russian Voices"
article="Speech synthesis - RU"
# Список моделей TTS для выбора
models = ["S1m0neAI/ru_model"]
# Создаем словарь моделей и инициализируем их
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="S1m0neAI/ru_model", 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() |