frontengine 0.0.26__tar.gz → 0.0.28__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (112) hide show
  1. {frontengine-0.0.26 → frontengine-0.0.28}/PKG-INFO +1 -1
  2. {frontengine-0.0.26 → frontengine-0.0.28}/frontengine/ui/chat/chat_scene_input.py +0 -1
  3. frontengine-0.0.28/frontengine/ui/chat/speech_to_text.py +69 -0
  4. {frontengine-0.0.26 → frontengine-0.0.28}/frontengine/ui/setting/chat_scene/chat_scene_setting.py +18 -1
  5. {frontengine-0.0.26 → frontengine-0.0.28}/frontengine/utils/multi_language/english.py +3 -0
  6. {frontengine-0.0.26 → frontengine-0.0.28}/frontengine/utils/multi_language/traditional_chinese.py +3 -0
  7. {frontengine-0.0.26 → frontengine-0.0.28}/frontengine.egg-info/PKG-INFO +1 -1
  8. {frontengine-0.0.26 → frontengine-0.0.28}/frontengine.egg-info/SOURCES.txt +1 -0
  9. frontengine-0.0.28/frontengine.egg-info/requires.txt +6 -0
  10. {frontengine-0.0.26 → frontengine-0.0.28}/pyproject.toml +2 -4
  11. frontengine-0.0.26/frontengine.egg-info/requires.txt +0 -3
  12. {frontengine-0.0.26 → frontengine-0.0.28}/LICENSE +0 -0
  13. {frontengine-0.0.26 → frontengine-0.0.28}/README.md +0 -0
  14. {frontengine-0.0.26 → frontengine-0.0.28}/frontengine/__init__.py +0 -0
  15. {frontengine-0.0.26 → frontengine-0.0.28}/frontengine/show/__init__.py +0 -0
  16. {frontengine-0.0.26 → frontengine-0.0.28}/frontengine/show/chat/__init__.py +0 -0
  17. {frontengine-0.0.26 → frontengine-0.0.28}/frontengine/show/chat/chat_toast.py +0 -0
  18. {frontengine-0.0.26 → frontengine-0.0.28}/frontengine/show/gif/__init__.py +0 -0
  19. {frontengine-0.0.26 → frontengine-0.0.28}/frontengine/show/gif/paint_gif.py +0 -0
  20. {frontengine-0.0.26 → frontengine-0.0.28}/frontengine/show/image/__init__.py +0 -0
  21. {frontengine-0.0.26 → frontengine-0.0.28}/frontengine/show/image/paint_image.py +0 -0
  22. {frontengine-0.0.26 → frontengine-0.0.28}/frontengine/show/load/__init__.py +0 -0
  23. {frontengine-0.0.26 → frontengine-0.0.28}/frontengine/show/load/load_someone_make_ui.py +0 -0
  24. {frontengine-0.0.26 → frontengine-0.0.28}/frontengine/show/scene/__init__.py +0 -0
  25. {frontengine-0.0.26 → frontengine-0.0.28}/frontengine/show/scene/extend_graphic_scene.py +0 -0
  26. {frontengine-0.0.26 → frontengine-0.0.28}/frontengine/show/scene/extend_graphic_view.py +0 -0
  27. {frontengine-0.0.26 → frontengine-0.0.28}/frontengine/show/scene/scene.py +0 -0
  28. {frontengine-0.0.26 → frontengine-0.0.28}/frontengine/show/sound_player/__init__.py +0 -0
  29. {frontengine-0.0.26 → frontengine-0.0.28}/frontengine/show/sound_player/sound_effect.py +0 -0
  30. {frontengine-0.0.26 → frontengine-0.0.28}/frontengine/show/sound_player/sound_player.py +0 -0
  31. {frontengine-0.0.26 → frontengine-0.0.28}/frontengine/show/text/__init__.py +0 -0
  32. {frontengine-0.0.26 → frontengine-0.0.28}/frontengine/show/text/draw_text.py +0 -0
  33. {frontengine-0.0.26 → frontengine-0.0.28}/frontengine/show/video/__init__.py +0 -0
  34. {frontengine-0.0.26 → frontengine-0.0.28}/frontengine/show/video/video_player.py +0 -0
  35. {frontengine-0.0.26 → frontengine-0.0.28}/frontengine/show/web/__init__.py +0 -0
  36. {frontengine-0.0.26 → frontengine-0.0.28}/frontengine/show/web/webview.py +0 -0
  37. {frontengine-0.0.26 → frontengine-0.0.28}/frontengine/ui/__init__.py +0 -0
  38. {frontengine-0.0.26 → frontengine-0.0.28}/frontengine/ui/chat/__init__.py +0 -0
  39. {frontengine-0.0.26 → frontengine-0.0.28}/frontengine/ui/chat/chat_model.py +0 -0
  40. {frontengine-0.0.26 → frontengine-0.0.28}/frontengine/ui/chat/chatthread.py +0 -0
  41. {frontengine-0.0.26 → frontengine-0.0.28}/frontengine/ui/color/__init__.py +0 -0
  42. {frontengine-0.0.26 → frontengine-0.0.28}/frontengine/ui/color/global_color.py +0 -0
  43. {frontengine-0.0.26 → frontengine-0.0.28}/frontengine/ui/dialog/__init__.py +0 -0
  44. {frontengine-0.0.26 → frontengine-0.0.28}/frontengine/ui/dialog/choose_file_dialog.py +0 -0
  45. {frontengine-0.0.26 → frontengine-0.0.28}/frontengine/ui/dialog/save_file_dialog.py +0 -0
  46. {frontengine-0.0.26 → frontengine-0.0.28}/frontengine/ui/main/__init__.py +0 -0
  47. {frontengine-0.0.26 → frontengine-0.0.28}/frontengine/ui/main/language_menu.py +0 -0
  48. {frontengine-0.0.26 → frontengine-0.0.28}/frontengine/ui/main/main_ui.py +0 -0
  49. {frontengine-0.0.26 → frontengine-0.0.28}/frontengine/ui/setting/__init__.py +0 -0
  50. {frontengine-0.0.26 → frontengine-0.0.28}/frontengine/ui/setting/chat_scene/__init__.py +0 -0
  51. {frontengine-0.0.26 → frontengine-0.0.28}/frontengine/ui/setting/control_center/__init__.py +0 -0
  52. {frontengine-0.0.26 → frontengine-0.0.28}/frontengine/ui/setting/control_center/control_center_ui.py +0 -0
  53. {frontengine-0.0.26 → frontengine-0.0.28}/frontengine/ui/setting/gif/__init__.py +0 -0
  54. {frontengine-0.0.26 → frontengine-0.0.28}/frontengine/ui/setting/gif/gif_setting_ui.py +0 -0
  55. {frontengine-0.0.26 → frontengine-0.0.28}/frontengine/ui/setting/image/__init__.py +0 -0
  56. {frontengine-0.0.26 → frontengine-0.0.28}/frontengine/ui/setting/image/image_setting_ui.py +0 -0
  57. {frontengine-0.0.26 → frontengine-0.0.28}/frontengine/ui/setting/scene_setting/__init__.py +0 -0
  58. {frontengine-0.0.26 → frontengine-0.0.28}/frontengine/ui/setting/scene_setting/scene_setting_ui.py +0 -0
  59. {frontengine-0.0.26 → frontengine-0.0.28}/frontengine/ui/setting/scene_setting/scene_tabs/Image.py +0 -0
  60. {frontengine-0.0.26 → frontengine-0.0.28}/frontengine/ui/setting/scene_setting/scene_tabs/__init__.py +0 -0
  61. {frontengine-0.0.26 → frontengine-0.0.28}/frontengine/ui/setting/scene_setting/scene_tabs/gif.py +0 -0
  62. {frontengine-0.0.26 → frontengine-0.0.28}/frontengine/ui/setting/scene_setting/scene_tabs/scene_control.py +0 -0
  63. {frontengine-0.0.26 → frontengine-0.0.28}/frontengine/ui/setting/scene_setting/scene_tabs/sound.py +0 -0
  64. {frontengine-0.0.26 → frontengine-0.0.28}/frontengine/ui/setting/scene_setting/scene_tabs/tableview_model.py +0 -0
  65. {frontengine-0.0.26 → frontengine-0.0.28}/frontengine/ui/setting/scene_setting/scene_tabs/text.py +0 -0
  66. {frontengine-0.0.26 → frontengine-0.0.28}/frontengine/ui/setting/scene_setting/scene_tabs/ui.py +0 -0
  67. {frontengine-0.0.26 → frontengine-0.0.28}/frontengine/ui/setting/scene_setting/scene_tabs/video.py +0 -0
  68. {frontengine-0.0.26 → frontengine-0.0.28}/frontengine/ui/setting/scene_setting/scene_tabs/web.py +0 -0
  69. {frontengine-0.0.26 → frontengine-0.0.28}/frontengine/ui/setting/sound_player/__init__.py +0 -0
  70. {frontengine-0.0.26 → frontengine-0.0.28}/frontengine/ui/setting/sound_player/sound_player_setting_ui.py +0 -0
  71. {frontengine-0.0.26 → frontengine-0.0.28}/frontengine/ui/setting/text/__init__.py +0 -0
  72. {frontengine-0.0.26 → frontengine-0.0.28}/frontengine/ui/setting/text/text_setting_ui.py +0 -0
  73. {frontengine-0.0.26 → frontengine-0.0.28}/frontengine/ui/setting/video/__init__.py +0 -0
  74. {frontengine-0.0.26 → frontengine-0.0.28}/frontengine/ui/setting/video/video_setting_ui.py +0 -0
  75. {frontengine-0.0.26 → frontengine-0.0.28}/frontengine/ui/setting/web/__init__.py +0 -0
  76. {frontengine-0.0.26 → frontengine-0.0.28}/frontengine/ui/setting/web/web_setting_ui.py +0 -0
  77. {frontengine-0.0.26 → frontengine-0.0.28}/frontengine/user_setting/__init__.py +0 -0
  78. {frontengine-0.0.26 → frontengine-0.0.28}/frontengine/user_setting/gif/__init__.py +0 -0
  79. {frontengine-0.0.26 → frontengine-0.0.28}/frontengine/user_setting/gif/gif_setting.py +0 -0
  80. {frontengine-0.0.26 → frontengine-0.0.28}/frontengine/user_setting/image/__init__.py +0 -0
  81. {frontengine-0.0.26 → frontengine-0.0.28}/frontengine/user_setting/image/image_setting.py +0 -0
  82. {frontengine-0.0.26 → frontengine-0.0.28}/frontengine/user_setting/sound/__init__.py +0 -0
  83. {frontengine-0.0.26 → frontengine-0.0.28}/frontengine/user_setting/sound/sound_setting.py +0 -0
  84. {frontengine-0.0.26 → frontengine-0.0.28}/frontengine/user_setting/text/__init__.py +0 -0
  85. {frontengine-0.0.26 → frontengine-0.0.28}/frontengine/user_setting/text/text_setting.py +0 -0
  86. {frontengine-0.0.26 → frontengine-0.0.28}/frontengine/user_setting/user_setting_file.py +0 -0
  87. {frontengine-0.0.26 → frontengine-0.0.28}/frontengine/user_setting/video/__init__.py +0 -0
  88. {frontengine-0.0.26 → frontengine-0.0.28}/frontengine/user_setting/video/video_setting.py +0 -0
  89. {frontengine-0.0.26 → frontengine-0.0.28}/frontengine/user_setting/web/__init__.py +0 -0
  90. {frontengine-0.0.26 → frontengine-0.0.28}/frontengine/user_setting/web/web_setting.py +0 -0
  91. {frontengine-0.0.26 → frontengine-0.0.28}/frontengine/utils/__init__.py +0 -0
  92. {frontengine-0.0.26 → frontengine-0.0.28}/frontengine/utils/exception/__init__.py +0 -0
  93. {frontengine-0.0.26 → frontengine-0.0.28}/frontengine/utils/exception/exception_tags.py +0 -0
  94. {frontengine-0.0.26 → frontengine-0.0.28}/frontengine/utils/exception/exceptions.py +0 -0
  95. {frontengine-0.0.26 → frontengine-0.0.28}/frontengine/utils/file/__init__.py +0 -0
  96. {frontengine-0.0.26 → frontengine-0.0.28}/frontengine/utils/file/open/__init__.py +0 -0
  97. {frontengine-0.0.26 → frontengine-0.0.28}/frontengine/utils/file/open/open_file.py +0 -0
  98. {frontengine-0.0.26 → frontengine-0.0.28}/frontengine/utils/file/save/__init__.py +0 -0
  99. {frontengine-0.0.26 → frontengine-0.0.28}/frontengine/utils/file/save/save_file.py +0 -0
  100. {frontengine-0.0.26 → frontengine-0.0.28}/frontengine/utils/json/__init__.py +0 -0
  101. {frontengine-0.0.26 → frontengine-0.0.28}/frontengine/utils/json/json_file.py +0 -0
  102. {frontengine-0.0.26 → frontengine-0.0.28}/frontengine/utils/json_format/__init__.py +0 -0
  103. {frontengine-0.0.26 → frontengine-0.0.28}/frontengine/utils/json_format/json_process.py +0 -0
  104. {frontengine-0.0.26 → frontengine-0.0.28}/frontengine/utils/logging/__init__.py +0 -0
  105. {frontengine-0.0.26 → frontengine-0.0.28}/frontengine/utils/logging/loggin_instance.py +0 -0
  106. {frontengine-0.0.26 → frontengine-0.0.28}/frontengine/utils/multi_language/__init__.py +0 -0
  107. {frontengine-0.0.26 → frontengine-0.0.28}/frontengine/utils/multi_language/language_wrapper.py +0 -0
  108. {frontengine-0.0.26 → frontengine-0.0.28}/frontengine/utils/redirect_manager/__init__.py +0 -0
  109. {frontengine-0.0.26 → frontengine-0.0.28}/frontengine/utils/redirect_manager/redirect_manager_class.py +0 -0
  110. {frontengine-0.0.26 → frontengine-0.0.28}/frontengine.egg-info/dependency_links.txt +0 -0
  111. {frontengine-0.0.26 → frontengine-0.0.28}/frontengine.egg-info/top_level.txt +0 -0
  112. {frontengine-0.0.26 → frontengine-0.0.28}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: frontengine
3
- Version: 0.0.26
3
+ Version: 0.0.28
4
4
  Summary: FrontEngine is BingGPT that can use-define front end or only use like screen saver
5
5
  Author-email: JE-Chen <jechenmailman@gmail.com>
6
6
  License: MIT
@@ -1,6 +1,5 @@
1
1
  import pyttsx3
2
2
  from PySide6.QtCore import QTimer
3
- from PySide6.QtGui import QScreen
4
3
  from PySide6.QtWidgets import QBoxLayout, QWidget, QPushButton, QHBoxLayout, QTextEdit, QMessageBox
5
4
 
6
5
  from frontengine.show.chat.chat_toast import ChatToast
@@ -0,0 +1,69 @@
1
+ import queue
2
+ import sys
3
+ import time
4
+
5
+ from PySide6.QtCore import QTimer
6
+ from PySide6.QtWidgets import QWidget, QPushButton, QBoxLayout, QLineEdit
7
+ from speech_recognition import Microphone
8
+ from speech_recognition import Recognizer
9
+ from speech_recognition import RequestError, UnknownValueError
10
+ from threading import Thread
11
+
12
+ from frontengine.utils.multi_language.language_wrapper import language_wrapper
13
+
14
+ LISTENER_QUEUE = queue.Queue()
15
+
16
+
17
+ def callback(recognizer: Recognizer, audio):
18
+ try:
19
+ text = recognizer.recognize_google(audio)
20
+ LISTENER_QUEUE.put_nowait(text)
21
+ except (RequestError, UnknownValueError) as error:
22
+ print(repr(error), file=sys.stderr)
23
+
24
+
25
+ class ChatSpeechToText(QWidget):
26
+
27
+ def __init__(self):
28
+ super().__init__()
29
+ # UI
30
+ self.box_layout = QBoxLayout(QBoxLayout.Direction.LeftToRight)
31
+ self.voice_text_edit = QLineEdit()
32
+ self.start_listen_button = QPushButton(
33
+ language_wrapper.language_word_dict.get("chat_recognizer_voice_button"))
34
+ self.start_listen_button.clicked.connect(self.start_listener_thread)
35
+ self.send_text_button = QPushButton(
36
+ language_wrapper.language_word_dict.get("chat_scene_send_chat"))
37
+ self.box_layout.addWidget(self.voice_text_edit)
38
+ self.box_layout.addWidget(self.start_listen_button)
39
+ self.box_layout.addWidget(self.send_text_button)
40
+ self.setLayout(self.box_layout)
41
+ # Listener Timer
42
+ self.listener_timer = QTimer()
43
+ self.listener_timer.setInterval(100)
44
+ self.listener_timer.timeout.connect(self.update_voice_edit)
45
+ self.listener_timer.start()
46
+
47
+ def start_listener_thread(self):
48
+ listener_thread = Thread(target=self.start_listener)
49
+ listener_thread.daemon = True
50
+ listener_thread.start()
51
+
52
+ @classmethod
53
+ def start_listener(cls):
54
+ recognizer = Recognizer()
55
+ microphone = Microphone()
56
+ with microphone as source:
57
+ recognizer.adjust_for_ambient_noise(source, duration=0.1)
58
+ stop_listening = recognizer.listen_in_background(microphone, callback)
59
+ for receive_sound_time in range(50):
60
+ time.sleep(0.1)
61
+ stop_listening(wait_for_stop=False)
62
+
63
+ def update_voice_edit(self):
64
+ if not LISTENER_QUEUE.empty():
65
+ self.voice_text_edit.setText(str(LISTENER_QUEUE.get_nowait()))
66
+
67
+ def close(self) -> bool:
68
+ self.listener_timer.stop()
69
+ return super().close()
@@ -7,6 +7,7 @@ from frontengine.show.scene.scene import SceneManager
7
7
  from frontengine.ui.chat.chat_model import load_scene_json, chat_model
8
8
  from frontengine.ui.chat.chat_scene_input import ChatInputDialog
9
9
  from frontengine.ui.chat.chatthread import ChatThread, DELEGATE_CHAT
10
+ from frontengine.ui.chat.speech_to_text import ChatSpeechToText
10
11
  from frontengine.utils.logging.loggin_instance import front_engine_logger
11
12
  from frontengine.utils.multi_language.language_wrapper import language_wrapper
12
13
 
@@ -15,6 +16,7 @@ class ChatSceneUI(QWidget):
15
16
 
16
17
  def __init__(self):
17
18
  super().__init__()
19
+ self.voice_input = None
18
20
  self.grid_layout = QGridLayout()
19
21
  self.grid_layout = QGridLayout(self)
20
22
  self.grid_layout.setContentsMargins(0, 0, 0, 0)
@@ -79,6 +81,10 @@ class ChatSceneUI(QWidget):
79
81
  self.local_box = QBoxLayout(QBoxLayout.Direction.LeftToRight)
80
82
  self.local_box.addWidget(self.locale_label)
81
83
  self.local_box.addWidget(self.locale_input)
84
+ # Start voice input
85
+ self.start_voice_input_button = QPushButton(
86
+ language_wrapper.language_word_dict.get("start_chat_voice_input_ui"))
87
+ self.start_voice_input_button.clicked.connect(self.start_voice_input)
82
88
  # Add to layout
83
89
  self.grid_layout.addWidget(self.choose_style_combobox, 0, 0)
84
90
  self.grid_layout.addWidget(self.close_delay_label, 0, 1)
@@ -88,7 +94,8 @@ class ChatSceneUI(QWidget):
88
94
  self.grid_layout.addLayout(self.local_box, 0, 5)
89
95
  self.grid_layout.addWidget(self.new_topic_button, 0, 6)
90
96
  self.grid_layout.addWidget(self.scene_input_button, 0, 7)
91
- self.grid_layout.addWidget(self.start_button, 0, 8)
97
+ self.grid_layout.addWidget(self.start_voice_input_button, 0, 8)
98
+ self.grid_layout.addWidget(self.start_button, 0, 9)
92
99
  self.grid_layout.addWidget(self.chat_panel_scroll_area, 1, 0, -1, -1)
93
100
  self.setLayout(self.grid_layout)
94
101
 
@@ -102,6 +109,16 @@ class ChatSceneUI(QWidget):
102
109
  if chat_model.rowCount() > 0:
103
110
  self.start_scene()
104
111
 
112
+ def start_voice_input(self):
113
+ self.voice_input = ChatSpeechToText()
114
+ self.voice_input.show()
115
+ self.voice_input.send_text_button.clicked.connect(self.send_voice_chat)
116
+
117
+ def send_voice_chat(self):
118
+ chat_thread = ChatThread(
119
+ self.chat_panel, self.voice_input.voice_text_edit.text(), self.locale_input.text())
120
+ chat_thread.start()
121
+
105
122
  def send_chat(self):
106
123
  chat_thread = ChatThread(
107
124
  self.chat_panel, self.chat_input.chat_input.toPlainText(), self.locale_input.text())
@@ -107,4 +107,7 @@ english_word_dict = {
107
107
  "chat_scene_precise": "precise",
108
108
  "chat_scene_balanced": "balanced",
109
109
  "chat_gpt_exception": "GPT error, pls retry or new topic",
110
+ # Chat voice input
111
+ "start_chat_voice_input_ui": "Open voice input ui",
112
+ "chat_recognizer_voice_button": "Start listen voice"
110
113
  }
@@ -107,4 +107,7 @@ traditional_chinese_word_dict = {
107
107
  "chat_scene_precise": "精準",
108
108
  "chat_scene_balanced": "平衡",
109
109
  "chat_gpt_exception": "GPT 錯誤,請重試或開始一個新話題",
110
+ # Chat voice input
111
+ "start_chat_voice_input_ui": "開啟聲音輸入介面",
112
+ "chat_recognizer_voice_button": "開始錄製聲音"
110
113
  }
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: frontengine
3
- Version: 0.0.26
3
+ Version: 0.0.28
4
4
  Summary: FrontEngine is BingGPT that can use-define front end or only use like screen saver
5
5
  Author-email: JE-Chen <jechenmailman@gmail.com>
6
6
  License: MIT
@@ -34,6 +34,7 @@ frontengine/ui/chat/__init__.py
34
34
  frontengine/ui/chat/chat_model.py
35
35
  frontengine/ui/chat/chat_scene_input.py
36
36
  frontengine/ui/chat/chatthread.py
37
+ frontengine/ui/chat/speech_to_text.py
37
38
  frontengine/ui/color/__init__.py
38
39
  frontengine/ui/color/global_color.py
39
40
  frontengine/ui/dialog/__init__.py
@@ -0,0 +1,6 @@
1
+ PySide6
2
+ qt-material
3
+ EdgeGPT
4
+ pyttsx3
5
+ SpeechRecognition
6
+ PyAudio
@@ -6,14 +6,12 @@ build-backend = "setuptools.build_meta"
6
6
 
7
7
  [project]
8
8
  name = "frontengine"
9
- version = "0.0.26"
9
+ version = "0.0.28"
10
10
  authors = [
11
11
  { name = "JE-Chen", email = "jechenmailman@gmail.com" },
12
12
  ]
13
13
  dependencies = [
14
- "PySide6",
15
- "qt-material",
16
- "EdgeGPT"
14
+ "PySide6", "qt-material", "EdgeGPT", "pyttsx3", "SpeechRecognition", "PyAudio"
17
15
  ]
18
16
  description = "FrontEngine is BingGPT that can use-define front end or only use like screen saver"
19
17
  requires-python = ">=3.8"
@@ -1,3 +0,0 @@
1
- PySide6
2
- qt-material
3
- EdgeGPT
File without changes
File without changes
File without changes