File size: 2,237 Bytes
dfc143a
 
9b09053
1ee72c4
dfc143a
9b09053
a07ab8c
9fd1e6b
9b09053
1448aed
 
 
 
9e46ac8
 
dfc143a
9b09053
 
dfc143a
9b09053
b7c3456
d4bd320
dfc143a
9b09053
03e2bd2
dfc143a
08780c0
03e2bd2
9b09053
a9ea5b8
6cfcf68
a9ea5b8
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
39
40
41
42
43
44
import gradio as gr
from infer_onnx import TTS
from ruaccent import RUAccent  # https://huggingface.co/TeraTTS/accentuator
from pydub import AudioSegment  # Добавьте эту строку

# Заголовок и ссылка на репозиторий с моделями
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.ogg', sample_rate=models[model_name].config["samplerate"])
    
    return 'temp.ogg', 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()