urfu-pe / pages /page_one.py
Alex
added text_to_speach_image.png for readme
3d7479d
raw
history blame contribute delete
2.44 kB
import streamlit as st
from mulyavin_aa import langdetector
from mulyavin_aa import translator
from kuznetsov_av import text_to_speech_converter
LANG_DETECTOR = "LANG_DETECTOR"
TRANSLATOR = "TRANSLATOR"
TEXT_TO_SPEECH = "TEXT_TO_SPEECH"
SPEAKER_DATASET = "SPEAKER_DATASET"
@st.cache_resource
def load_models() -> dict:
"""
Получение справочника моделей
:return: Справочник моделей
"""
models = dict()
models[LANG_DETECTOR] = langdetector.load_text_detection_model()
models[TRANSLATOR] = translator.load_text_translator_model()
models[TEXT_TO_SPEECH] = text_to_speech_converter.load_model()
models[SPEAKER_DATASET] = text_to_speech_converter.load_speaker_dataset()
return models
def page_one():
"""
Основная программа
"""
models = load_models()
# Оформление заголовка
st.header('Домашнее задание', divider='gray')
input_text = st.text_area(
'Введите текст на русском или английском языке и нажмите кнопку генератора:')
if st.button('Генерировать!!!'):
# Определение языка
text_lang = langdetector.lang_detect(input_text, models[LANG_DETECTOR])
if text_lang not in ['ru', 'en']:
st.error('Язык текста не может быть определен')
return
# Перевод языка если не en
if text_lang in ['ru']:
input_text = translator.translate_to_en(input_text, models[TRANSLATOR])
st.subheader('Озвученный текст на английском языке', divider='gray')
st.text(input_text)
# Преобразование текста в речь
with st.status('Пожалуйста подождите, идет преобразование текста в речь...') as status:
audio_data, sampling_rate = text_to_speech_converter.text_to_speech(
input_text, models[TEXT_TO_SPEECH], models[SPEAKER_DATASET])
status.update(label='Преобразование завершено. Для прослушивания нажмите кнопку воспроизведения.', state='complete')
st.audio(data=audio_data, sample_rate=sampling_rate)
page_one()