mulyavinaa commited on
Commit
ff52f5f
1 Parent(s): 4f83860

Изменение текста и страниц приложения

Browse files
Files changed (3) hide show
  1. pages/page_one.py +60 -0
  2. pages/page_two.py +1 -1
  3. run.py +30 -50
pages/page_one.py ADDED
@@ -0,0 +1,60 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+
3
+ from mulyavin_aa import langdetector
4
+ from mulyavin_aa import translator
5
+ from kuznetsov_av import text_to_speech_converter
6
+
7
+ LANG_DETECTOR = "LANG_DETECTOR"
8
+ TRANSLATOR = "TRANSLATOR"
9
+ TEXT_TO_SPEECH = "TEXT_TO_SPEECH"
10
+ SPEAKER_DATASET = "SPEAKER_DATASET"
11
+
12
+
13
+ @st.cache_resource
14
+ def load_models() -> dict:
15
+ """
16
+ Получение справочника моделей
17
+ :return: Справочник моделей
18
+ """
19
+ models = dict()
20
+ models[LANG_DETECTOR] = langdetector.load_text_detection_model()
21
+ models[TRANSLATOR] = translator.load_text_translator_model()
22
+ models[TEXT_TO_SPEECH] = text_to_speech_converter.load_model()
23
+ models[SPEAKER_DATASET] = text_to_speech_converter.load_speaker_dataset()
24
+
25
+ return models
26
+
27
+
28
+ def page_one():
29
+ """
30
+ Основная программа
31
+ """
32
+
33
+ models = load_models()
34
+
35
+ # Оформление заголовка
36
+ st.header('Домашнее задание', divider='gray')
37
+
38
+ input_text = st.text_area(
39
+ 'Введите текст на русском или английском языке и нажмите кнопку генератора:')
40
+
41
+ if st.button('Генерировать!!!'):
42
+ # Определение языка
43
+ text_lang = langdetector.lang_detect(input_text, models[LANG_DETECTOR])
44
+ if text_lang not in ['ru', 'en']:
45
+ st.error('Язык текста не может быть определен')
46
+ return
47
+
48
+ # Перевод языка если не en
49
+ if text_lang in ['ru']:
50
+ input_text = translator.translate_to_en(input_text, models[TRANSLATOR])
51
+
52
+ st.header("Озвученный текст на английском языке")
53
+
54
+ # Преобразование текста в речь
55
+ audio_data, sampling_rate = text_to_speech_converter.text_to_speech(
56
+ input_text, models[TEXT_TO_SPEECH], models[SPEAKER_DATASET])
57
+ st.audio(data=audio_data, sample_rate=sampling_rate)
58
+
59
+
60
+ page_one()
pages/page_two.py CHANGED
@@ -2,4 +2,4 @@ from zvereva_ev import get_description_image
2
 
3
  # Запуск моделей для классификации и описания изображений
4
  get_description_image.load_image()
5
- get_description_image.run_()
 
2
 
3
  # Запуск моделей для классификации и описания изображений
4
  get_description_image.load_image()
5
+ get_description_image.run_()
run.py CHANGED
@@ -1,69 +1,49 @@
1
  import streamlit as st
2
 
3
- from mulyavin_aa import langdetector
4
- from mulyavin_aa import translator
5
- from kuznetsov_av import text_to_speech_converter
6
 
7
- LANG_DETECTOR = "LANG_DETECTOR"
8
- TRANSLATOR = "TRANSLATOR"
9
- TEXT_TO_SPEECH = "TEXT_TO_SPEECH"
10
- SPEAKER_DATASET = "SPEAKER_DATASET"
11
 
12
-
13
- @st.cache_resource
14
- def load_models() -> dict:
15
  """
16
- Получение справочника моделей
17
- :return: Справочник моделей
 
18
  """
19
- models = dict()
20
- models[LANG_DETECTOR] = langdetector.load_text_detection_model()
21
- models[TRANSLATOR] = translator.load_text_translator_model()
22
- models[TEXT_TO_SPEECH] = text_to_speech_converter.load_model()
23
- models[SPEAKER_DATASET] = text_to_speech_converter.load_speaker_dataset()
24
-
25
- return models
26
-
27
 
28
- def main_app():
29
- """
30
- Основная программа
31
- """
32
 
33
- models = load_models()
 
34
 
35
- st.title = 'Домашнее задание'
 
36
 
37
- # Оформление заголовка
38
- st.header('Домашнее задание', divider='gray')
39
 
40
- input_text = st.text_area(
41
- 'Введите текст на русском или английском языке и нажмите кнопку генератора:')
42
 
43
- if st.button('Генерировать!!!'):
44
- # Определение языка
45
- text_lang = langdetector.lang_detect(input_text, models[LANG_DETECTOR])
46
- if text_lang not in ['ru', 'en']:
47
- st.error('Язык текста не может быть определен')
48
- return
49
 
50
- # Перевод языка если не en
51
- if text_lang in ['ru']:
52
- input_text = translator.translate_to_en(input_text, models[TRANSLATOR])
53
 
54
- tab1, tab2, tab3 = st.tabs(['Озвученный текст', 'Таб 2', 'Таб 3'])
55
- with tab1:
56
- st.header("Озвученный текст на английском языке")
57
- # Преобразование текста в речь
58
- audio_data, sampling_rate = text_to_speech_converter.text_to_speech(
59
- input_text, models[TEXT_TO_SPEECH], models[SPEAKER_DATASET])
60
- st.audio(data=audio_data, sample_rate=sampling_rate)
61
 
62
- with tab2:
63
- st.header("Таб 2")
 
64
 
65
- with tab3:
66
- st.header("Таб 3")
67
 
68
 
 
69
  main_app()
 
1
  import streamlit as st
2
 
3
+ from pathlib import Path
 
 
4
 
 
 
 
 
5
 
6
+ def st_page_rename(pages_name: dict[str, str]) -> None:
 
 
7
  """
8
+ Переименование страниц в сайдбаре
9
+ Временный хак, так как другие способы не сработали
10
+ :param pages_name: Список py файлов и имен
11
  """
12
+ from streamlit.source_util import get_pages as st_get_pages
13
+ from streamlit.source_util import _on_pages_changed as st_on_pages_changed
 
 
 
 
 
 
14
 
15
+ pages = st_get_pages("")
16
+ for page_k, page_v in pages.items():
17
+ script_path = Path(page_v["script_path"])
 
18
 
19
+ for page_name_k, page_name_v in pages_name.items():
20
+ name_path = Path(page_name_k)
21
 
22
+ if Path.samefile(script_path, name_path):
23
+ page_v["page_name"] = page_name_v
24
 
25
+ st_on_pages_changed.send()
 
26
 
 
 
27
 
28
+ def read_readme() -> str:
29
+ """
30
+ Чтение файла README.md
31
+ :return: Текст
32
+ """
33
+ return Path("README.md").read_text(encoding='utf-8')
34
 
 
 
 
35
 
36
+ def main_app() -> None:
37
+ """
38
+ Запуск основного приложения
39
+ """
 
 
 
40
 
41
+ st_page_rename({"run.py": "Главная страница",
42
+ "pages\page_one.py": "Генератор аудио",
43
+ "pages\page_two.py": "Описание изображения"})
44
 
45
+ st.markdown(read_readme(), unsafe_allow_html=True)
 
46
 
47
 
48
+ # Запуск через streamlit
49
  main_app()