Merge branch 'init_optimize' into for_webui

This commit is contained in:
Sakamoto Shiina
2024-10-29 14:54:30 +09:00
8 changed files with 160 additions and 273 deletions

View File

@@ -3,10 +3,10 @@ import inspect
from os import path as os_path, makedirs as os_makedirs from os import path as os_path, makedirs as os_makedirs
from json import load as json_load from json import load as json_load
from json import dump as json_dump from json import dump as json_dump
import threading
from device_manager import device_manager from device_manager import device_manager
from models.transcription.transcription_languages import transcription_lang from models.transcription.transcription_languages import transcription_lang
from utils import generatePercentageStringsList, isUniqueStrings from utils import isUniqueStrings
json_serializable_vars = {} json_serializable_vars = {}
def json_serializable(var_name): def json_serializable(var_name):
@@ -15,15 +15,11 @@ def json_serializable(var_name):
return func return func
return decorator return decorator
def saveJson(path, key, value):
with open(path, "r", encoding="utf-8") as fp:
json_data = json_load(fp)
json_data[key] = value
with open(path, "w", encoding="utf-8") as fp:
json_dump(json_data, fp, indent=4, ensure_ascii=False)
class Config: class Config:
_instance = None _instance = None
_config_data = {}
_timer = None
_debounce_time = 2
def __new__(cls): def __new__(cls):
if cls._instance is None: if cls._instance is None:
@@ -32,6 +28,19 @@ class Config:
cls._instance.load_config() cls._instance.load_config()
return cls._instance return cls._instance
def saveConfigToFile(self):
with open(self.PATH_CONFIG, "w", encoding="utf-8") as fp:
json_dump(self._config_data, fp, indent=4, ensure_ascii=False)
def saveConfig(self, key, value):
self._config_data[key] = value
if isinstance(self._timer, threading.Timer) and self._timer.is_alive():
self._timer.cancel()
self._timer = threading.Timer(self._debounce_time, self.saveConfigToFile)
self._timer.daemon = True
self._timer.start()
# Read Only # Read Only
@property @property
def VERSION(self): def VERSION(self):
@@ -78,8 +87,8 @@ class Config:
return self._APPEARANCE_THEME_LIST return self._APPEARANCE_THEME_LIST
@property @property
def UI_SCALING_LIST(self): def UI_SCALING_RANGE(self):
return self._UI_SCALING_LIST return self._UI_SCALING_RANGE
@property @property
def TEXTBOX_UI_SCALING_RANGE(self): def TEXTBOX_UI_SCALING_RANGE(self):
@@ -90,12 +99,12 @@ class Config:
return self._MESSAGE_BOX_RATIO_RANGE return self._MESSAGE_BOX_RATIO_RANGE
@property @property
def SELECTABLE_CTRANSLATE2_WEIGHT_TYPE_DICT(self): def SELECTABLE_CTRANSLATE2_WEIGHT_TYPE_LIST(self):
return self._SELECTABLE_CTRANSLATE2_WEIGHT_TYPE_DICT return self._SELECTABLE_CTRANSLATE2_WEIGHT_TYPE_LIST
@property @property
def SELECTABLE_WHISPER_WEIGHT_TYPE_DICT(self): def SELECTABLE_WHISPER_WEIGHT_TYPE_LIST(self):
return self._SELECTABLE_WHISPER_WEIGHT_TYPE_DICT return self._SELECTABLE_WHISPER_WEIGHT_TYPE_LIST
@property @property
def MAX_MIC_THRESHOLD(self): def MAX_MIC_THRESHOLD(self):
@@ -224,7 +233,7 @@ class Config:
def SELECTED_TAB_NO(self, value): def SELECTED_TAB_NO(self, value):
if isinstance(value, str): if isinstance(value, str):
self._SELECTED_TAB_NO = value self._SELECTED_TAB_NO = value
saveJson(self.PATH_CONFIG, inspect.currentframe().f_code.co_name, value) self.saveConfig(inspect.currentframe().f_code.co_name, value)
@property @property
@json_serializable('SELECTED_TRANSLATION_ENGINES') @json_serializable('SELECTED_TRANSLATION_ENGINES')
@@ -235,7 +244,7 @@ class Config:
def SELECTED_TRANSLATION_ENGINES(self, value): def SELECTED_TRANSLATION_ENGINES(self, value):
if isinstance(value, dict): if isinstance(value, dict):
self._SELECTED_TRANSLATION_ENGINES = value self._SELECTED_TRANSLATION_ENGINES = value
saveJson(self.PATH_CONFIG, inspect.currentframe().f_code.co_name, value) self.saveConfig(inspect.currentframe().f_code.co_name, value)
@property @property
@json_serializable('SELECTED_YOUR_LANGUAGES') @json_serializable('SELECTED_YOUR_LANGUAGES')
@@ -256,7 +265,7 @@ class Config:
self._SELECTED_YOUR_LANGUAGES = value self._SELECTED_YOUR_LANGUAGES = value
except Exception: except Exception:
pass pass
saveJson(self.PATH_CONFIG, inspect.currentframe().f_code.co_name, value) self.saveConfig(inspect.currentframe().f_code.co_name, value)
@property @property
@json_serializable('SELECTED_TARGET_LANGUAGES') @json_serializable('SELECTED_TARGET_LANGUAGES')
@@ -277,7 +286,7 @@ class Config:
self._SELECTED_TARGET_LANGUAGES = value self._SELECTED_TARGET_LANGUAGES = value
except Exception: except Exception:
pass pass
saveJson(self.PATH_CONFIG, inspect.currentframe().f_code.co_name, value) self.saveConfig(inspect.currentframe().f_code.co_name, value)
@property @property
@json_serializable('SELECTED_TRANSCRIPTION_ENGINE') @json_serializable('SELECTED_TRANSCRIPTION_ENGINE')
@@ -288,7 +297,7 @@ class Config:
def SELECTED_TRANSCRIPTION_ENGINE(self, value): def SELECTED_TRANSCRIPTION_ENGINE(self, value):
if isinstance(value, str): if isinstance(value, str):
self._SELECTED_TRANSCRIPTION_ENGINE = value self._SELECTED_TRANSCRIPTION_ENGINE = value
# saveJson(self.PATH_CONFIG, inspect.currentframe().f_code.co_name, value) # self.saveConfig(inspect.currentframe().f_code.co_name, value)
@property @property
@json_serializable('MULTI_LANGUAGE_TRANSLATION') @json_serializable('MULTI_LANGUAGE_TRANSLATION')
@@ -299,7 +308,7 @@ class Config:
def MULTI_LANGUAGE_TRANSLATION(self, value): def MULTI_LANGUAGE_TRANSLATION(self, value):
if isinstance(value, bool): if isinstance(value, bool):
self._MULTI_LANGUAGE_TRANSLATION = value self._MULTI_LANGUAGE_TRANSLATION = value
saveJson(self.PATH_CONFIG, inspect.currentframe().f_code.co_name, value) self.saveConfig(inspect.currentframe().f_code.co_name, value)
@property @property
@json_serializable('CONVERT_MESSAGE_TO_ROMAJI') @json_serializable('CONVERT_MESSAGE_TO_ROMAJI')
@@ -310,7 +319,7 @@ class Config:
def CONVERT_MESSAGE_TO_ROMAJI(self, value): def CONVERT_MESSAGE_TO_ROMAJI(self, value):
if isinstance(value, bool): if isinstance(value, bool):
self._CONVERT_MESSAGE_TO_ROMAJI = value self._CONVERT_MESSAGE_TO_ROMAJI = value
saveJson(self.PATH_CONFIG, inspect.currentframe().f_code.co_name, value) self.saveConfig(inspect.currentframe().f_code.co_name, value)
@property @property
@json_serializable('CONVERT_MESSAGE_TO_HIRAGANA') @json_serializable('CONVERT_MESSAGE_TO_HIRAGANA')
@@ -321,7 +330,7 @@ class Config:
def CONVERT_MESSAGE_TO_HIRAGANA(self, value): def CONVERT_MESSAGE_TO_HIRAGANA(self, value):
if isinstance(value, bool): if isinstance(value, bool):
self._CONVERT_MESSAGE_TO_HIRAGANA = value self._CONVERT_MESSAGE_TO_HIRAGANA = value
saveJson(self.PATH_CONFIG, inspect.currentframe().f_code.co_name, value) self.saveConfig(inspect.currentframe().f_code.co_name, value)
@property @property
@json_serializable('MAIN_WINDOW_SIDEBAR_COMPACT_MODE') @json_serializable('MAIN_WINDOW_SIDEBAR_COMPACT_MODE')
@@ -332,7 +341,7 @@ class Config:
def MAIN_WINDOW_SIDEBAR_COMPACT_MODE(self, value): def MAIN_WINDOW_SIDEBAR_COMPACT_MODE(self, value):
if isinstance(value, bool): if isinstance(value, bool):
self._MAIN_WINDOW_SIDEBAR_COMPACT_MODE = value self._MAIN_WINDOW_SIDEBAR_COMPACT_MODE = value
saveJson(self.PATH_CONFIG, inspect.currentframe().f_code.co_name, value) self.saveConfig(inspect.currentframe().f_code.co_name, value)
## Config Window ## Config Window
@property @property
@@ -344,7 +353,7 @@ class Config:
def TRANSPARENCY(self, value): def TRANSPARENCY(self, value):
if isinstance(value, int): if isinstance(value, int):
self._TRANSPARENCY = value self._TRANSPARENCY = value
saveJson(self.PATH_CONFIG, inspect.currentframe().f_code.co_name, value) self.saveConfig(inspect.currentframe().f_code.co_name, value)
@property @property
@json_serializable('APPEARANCE_THEME') @json_serializable('APPEARANCE_THEME')
@@ -355,7 +364,7 @@ class Config:
def APPEARANCE_THEME(self, value): def APPEARANCE_THEME(self, value):
if value in self.APPEARANCE_THEME_LIST: if value in self.APPEARANCE_THEME_LIST:
self._APPEARANCE_THEME = value self._APPEARANCE_THEME = value
saveJson(self.PATH_CONFIG, inspect.currentframe().f_code.co_name, value) self.saveConfig(inspect.currentframe().f_code.co_name, value)
@property @property
@json_serializable('UI_SCALING') @json_serializable('UI_SCALING')
@@ -366,7 +375,7 @@ class Config:
def UI_SCALING(self, value): def UI_SCALING(self, value):
if isinstance(value, int): if isinstance(value, int):
self._UI_SCALING = value self._UI_SCALING = value
saveJson(self.PATH_CONFIG, inspect.currentframe().f_code.co_name, value) self.saveConfig(inspect.currentframe().f_code.co_name, value)
@property @property
@json_serializable('TEXTBOX_UI_SCALING') @json_serializable('TEXTBOX_UI_SCALING')
@@ -377,7 +386,7 @@ class Config:
def TEXTBOX_UI_SCALING(self, value): def TEXTBOX_UI_SCALING(self, value):
if isinstance(value, int): if isinstance(value, int):
self._TEXTBOX_UI_SCALING = value self._TEXTBOX_UI_SCALING = value
saveJson(self.PATH_CONFIG, inspect.currentframe().f_code.co_name, value) self.saveConfig(inspect.currentframe().f_code.co_name, value)
@property @property
@json_serializable('MESSAGE_BOX_RATIO') @json_serializable('MESSAGE_BOX_RATIO')
@@ -388,7 +397,7 @@ class Config:
def MESSAGE_BOX_RATIO(self, value): def MESSAGE_BOX_RATIO(self, value):
if isinstance(value, (int, float)): if isinstance(value, (int, float)):
self._MESSAGE_BOX_RATIO = value self._MESSAGE_BOX_RATIO = value
saveJson(self.PATH_CONFIG, inspect.currentframe().f_code.co_name, value) self.saveConfig(inspect.currentframe().f_code.co_name, value)
@property @property
@json_serializable('FONT_FAMILY') @json_serializable('FONT_FAMILY')
@@ -399,7 +408,7 @@ class Config:
def FONT_FAMILY(self, value): def FONT_FAMILY(self, value):
if isinstance(value, str): if isinstance(value, str):
self._FONT_FAMILY = value self._FONT_FAMILY = value
saveJson(self.PATH_CONFIG, inspect.currentframe().f_code.co_name, value) self.saveConfig(inspect.currentframe().f_code.co_name, value)
@property @property
@json_serializable('UI_LANGUAGE') @json_serializable('UI_LANGUAGE')
@@ -410,7 +419,7 @@ class Config:
def UI_LANGUAGE(self, value): def UI_LANGUAGE(self, value):
if isinstance(value, str): if isinstance(value, str):
self._UI_LANGUAGE = value self._UI_LANGUAGE = value
saveJson(self.PATH_CONFIG, inspect.currentframe().f_code.co_name, value) self.saveConfig(inspect.currentframe().f_code.co_name, value)
@property @property
@json_serializable('RESTORE_MAIN_WINDOW_GEOMETRY') @json_serializable('RESTORE_MAIN_WINDOW_GEOMETRY')
@@ -421,7 +430,7 @@ class Config:
def RESTORE_MAIN_WINDOW_GEOMETRY(self, value): def RESTORE_MAIN_WINDOW_GEOMETRY(self, value):
if isinstance(value, bool): if isinstance(value, bool):
self._RESTORE_MAIN_WINDOW_GEOMETRY = value self._RESTORE_MAIN_WINDOW_GEOMETRY = value
saveJson(self.PATH_CONFIG, inspect.currentframe().f_code.co_name, value) self.saveConfig(inspect.currentframe().f_code.co_name, value)
@property @property
@json_serializable('MAIN_WINDOW_GEOMETRY') @json_serializable('MAIN_WINDOW_GEOMETRY')
@@ -434,7 +443,7 @@ class Config:
for key, value in value.items(): for key, value in value.items():
if isinstance(value, int): if isinstance(value, int):
self._MAIN_WINDOW_GEOMETRY[key] = value self._MAIN_WINDOW_GEOMETRY[key] = value
saveJson(self.PATH_CONFIG, inspect.currentframe().f_code.co_name, self.MAIN_WINDOW_GEOMETRY) self.saveConfig(inspect.currentframe().f_code.co_name, self.MAIN_WINDOW_GEOMETRY)
@property @property
@json_serializable('AUTO_MIC_SELECT') @json_serializable('AUTO_MIC_SELECT')
@@ -445,7 +454,7 @@ class Config:
def AUTO_MIC_SELECT(self, value): def AUTO_MIC_SELECT(self, value):
if isinstance(value, bool): if isinstance(value, bool):
self._AUTO_MIC_SELECT = value self._AUTO_MIC_SELECT = value
saveJson(self.PATH_CONFIG, inspect.currentframe().f_code.co_name, value) self.saveConfig(inspect.currentframe().f_code.co_name, value)
@property @property
@json_serializable('SELECTED_MIC_HOST') @json_serializable('SELECTED_MIC_HOST')
@@ -456,7 +465,7 @@ class Config:
def SELECTED_MIC_HOST(self, value): def SELECTED_MIC_HOST(self, value):
if value in [host for host in device_manager.getMicDevices().keys()]: if value in [host for host in device_manager.getMicDevices().keys()]:
self._SELECTED_MIC_HOST = value self._SELECTED_MIC_HOST = value
saveJson(self.PATH_CONFIG, inspect.currentframe().f_code.co_name, value) self.saveConfig(inspect.currentframe().f_code.co_name, value)
@property @property
@json_serializable('SELECTED_MIC_DEVICE') @json_serializable('SELECTED_MIC_DEVICE')
@@ -467,7 +476,7 @@ class Config:
def SELECTED_MIC_DEVICE(self, value): def SELECTED_MIC_DEVICE(self, value):
if value in [device["name"] for device in device_manager.getMicDevices()[self.SELECTED_MIC_HOST]]: if value in [device["name"] for device in device_manager.getMicDevices()[self.SELECTED_MIC_HOST]]:
self._SELECTED_MIC_DEVICE = value self._SELECTED_MIC_DEVICE = value
saveJson(self.PATH_CONFIG, inspect.currentframe().f_code.co_name, value) self.saveConfig(inspect.currentframe().f_code.co_name, value)
@property @property
@json_serializable('MIC_THRESHOLD') @json_serializable('MIC_THRESHOLD')
@@ -478,7 +487,7 @@ class Config:
def MIC_THRESHOLD(self, value): def MIC_THRESHOLD(self, value):
if isinstance(value, int): if isinstance(value, int):
self._MIC_THRESHOLD = value self._MIC_THRESHOLD = value
saveJson(self.PATH_CONFIG, inspect.currentframe().f_code.co_name, value) self.saveConfig(inspect.currentframe().f_code.co_name, value)
@property @property
@json_serializable('MIC_AUTOMATIC_THRESHOLD') @json_serializable('MIC_AUTOMATIC_THRESHOLD')
@@ -489,7 +498,7 @@ class Config:
def MIC_AUTOMATIC_THRESHOLD(self, value): def MIC_AUTOMATIC_THRESHOLD(self, value):
if isinstance(value, bool): if isinstance(value, bool):
self._MIC_AUTOMATIC_THRESHOLD = value self._MIC_AUTOMATIC_THRESHOLD = value
saveJson(self.PATH_CONFIG, inspect.currentframe().f_code.co_name, value) self.saveConfig(inspect.currentframe().f_code.co_name, value)
@property @property
@json_serializable('MIC_RECORD_TIMEOUT') @json_serializable('MIC_RECORD_TIMEOUT')
@@ -500,7 +509,7 @@ class Config:
def MIC_RECORD_TIMEOUT(self, value): def MIC_RECORD_TIMEOUT(self, value):
if isinstance(value, int): if isinstance(value, int):
self._MIC_RECORD_TIMEOUT = value self._MIC_RECORD_TIMEOUT = value
saveJson(self.PATH_CONFIG, inspect.currentframe().f_code.co_name, value) self.saveConfig(inspect.currentframe().f_code.co_name, value)
@property @property
@json_serializable('MIC_PHRASE_TIMEOUT') @json_serializable('MIC_PHRASE_TIMEOUT')
@@ -511,7 +520,7 @@ class Config:
def MIC_PHRASE_TIMEOUT(self, value): def MIC_PHRASE_TIMEOUT(self, value):
if isinstance(value, int): if isinstance(value, int):
self._MIC_PHRASE_TIMEOUT = value self._MIC_PHRASE_TIMEOUT = value
saveJson(self.PATH_CONFIG, inspect.currentframe().f_code.co_name, value) self.saveConfig(inspect.currentframe().f_code.co_name, value)
@property @property
@json_serializable('MIC_MAX_PHRASES') @json_serializable('MIC_MAX_PHRASES')
@@ -522,7 +531,7 @@ class Config:
def MIC_MAX_PHRASES(self, value): def MIC_MAX_PHRASES(self, value):
if isinstance(value, int): if isinstance(value, int):
self._MIC_MAX_PHRASES = value self._MIC_MAX_PHRASES = value
saveJson(self.PATH_CONFIG, inspect.currentframe().f_code.co_name, value) self.saveConfig(inspect.currentframe().f_code.co_name, value)
@property @property
@json_serializable('MIC_WORD_FILTER') @json_serializable('MIC_WORD_FILTER')
@@ -533,7 +542,7 @@ class Config:
def MIC_WORD_FILTER(self, value): def MIC_WORD_FILTER(self, value):
if isinstance(value, list): if isinstance(value, list):
self._MIC_WORD_FILTER = sorted(set(value), key=value.index) self._MIC_WORD_FILTER = sorted(set(value), key=value.index)
saveJson(self.PATH_CONFIG, inspect.currentframe().f_code.co_name, value) self.saveConfig(inspect.currentframe().f_code.co_name, value)
@property @property
@json_serializable('MIC_AVG_LOGPROB') @json_serializable('MIC_AVG_LOGPROB')
@@ -544,7 +553,7 @@ class Config:
def MIC_AVG_LOGPROB(self, value): def MIC_AVG_LOGPROB(self, value):
if isinstance(value, (int, float)): if isinstance(value, (int, float)):
self._MIC_AVG_LOGPROB = value self._MIC_AVG_LOGPROB = value
saveJson(self.PATH_CONFIG, inspect.currentframe().f_code.co_name, value) self.saveConfig(inspect.currentframe().f_code.co_name, value)
@property @property
@json_serializable('MIC_NO_SPEECH_PROB') @json_serializable('MIC_NO_SPEECH_PROB')
@@ -555,7 +564,7 @@ class Config:
def MIC_NO_SPEECH_PROB(self, value): def MIC_NO_SPEECH_PROB(self, value):
if isinstance(value, (int, float)): if isinstance(value, (int, float)):
self._MIC_NO_SPEECH_PROB = value self._MIC_NO_SPEECH_PROB = value
saveJson(self.PATH_CONFIG, inspect.currentframe().f_code.co_name, value) self.saveConfig(inspect.currentframe().f_code.co_name, value)
@property @property
@json_serializable('AUTO_SPEAKER_SELECT') @json_serializable('AUTO_SPEAKER_SELECT')
@@ -566,7 +575,7 @@ class Config:
def AUTO_SPEAKER_SELECT(self, value): def AUTO_SPEAKER_SELECT(self, value):
if isinstance(value, bool): if isinstance(value, bool):
self._AUTO_SPEAKER_SELECT = value self._AUTO_SPEAKER_SELECT = value
saveJson(self.PATH_CONFIG, inspect.currentframe().f_code.co_name, value) self.saveConfig(inspect.currentframe().f_code.co_name, value)
@property @property
@json_serializable('SELECTED_SPEAKER_DEVICE') @json_serializable('SELECTED_SPEAKER_DEVICE')
@@ -577,7 +586,7 @@ class Config:
def SELECTED_SPEAKER_DEVICE(self, value): def SELECTED_SPEAKER_DEVICE(self, value):
if value in [device["name"] for device in device_manager.getSpeakerDevices()]: if value in [device["name"] for device in device_manager.getSpeakerDevices()]:
self._SELECTED_SPEAKER_DEVICE = value self._SELECTED_SPEAKER_DEVICE = value
saveJson(self.PATH_CONFIG, inspect.currentframe().f_code.co_name, value) self.saveConfig(inspect.currentframe().f_code.co_name, value)
@property @property
@json_serializable('SPEAKER_THRESHOLD') @json_serializable('SPEAKER_THRESHOLD')
@@ -588,7 +597,7 @@ class Config:
def SPEAKER_THRESHOLD(self, value): def SPEAKER_THRESHOLD(self, value):
if isinstance(value, int): if isinstance(value, int):
self._SPEAKER_THRESHOLD = value self._SPEAKER_THRESHOLD = value
saveJson(self.PATH_CONFIG, inspect.currentframe().f_code.co_name, value) self.saveConfig(inspect.currentframe().f_code.co_name, value)
@property @property
@json_serializable('SPEAKER_AUTOMATIC_THRESHOLD') @json_serializable('SPEAKER_AUTOMATIC_THRESHOLD')
@@ -599,7 +608,7 @@ class Config:
def SPEAKER_AUTOMATIC_THRESHOLD(self, value): def SPEAKER_AUTOMATIC_THRESHOLD(self, value):
if isinstance(value, bool): if isinstance(value, bool):
self._SPEAKER_AUTOMATIC_THRESHOLD = value self._SPEAKER_AUTOMATIC_THRESHOLD = value
saveJson(self.PATH_CONFIG, inspect.currentframe().f_code.co_name, value) self.saveConfig(inspect.currentframe().f_code.co_name, value)
@property @property
@json_serializable('SPEAKER_RECORD_TIMEOUT') @json_serializable('SPEAKER_RECORD_TIMEOUT')
@@ -610,7 +619,7 @@ class Config:
def SPEAKER_RECORD_TIMEOUT(self, value): def SPEAKER_RECORD_TIMEOUT(self, value):
if isinstance(value, int): if isinstance(value, int):
self._SPEAKER_RECORD_TIMEOUT = value self._SPEAKER_RECORD_TIMEOUT = value
saveJson(self.PATH_CONFIG, inspect.currentframe().f_code.co_name, value) self.saveConfig(inspect.currentframe().f_code.co_name, value)
@property @property
@json_serializable('SPEAKER_PHRASE_TIMEOUT') @json_serializable('SPEAKER_PHRASE_TIMEOUT')
@@ -621,7 +630,7 @@ class Config:
def SPEAKER_PHRASE_TIMEOUT(self, value): def SPEAKER_PHRASE_TIMEOUT(self, value):
if isinstance(value, int): if isinstance(value, int):
self._SPEAKER_PHRASE_TIMEOUT = value self._SPEAKER_PHRASE_TIMEOUT = value
saveJson(self.PATH_CONFIG, inspect.currentframe().f_code.co_name, value) self.saveConfig(inspect.currentframe().f_code.co_name, value)
@property @property
@json_serializable('SPEAKER_MAX_PHRASES') @json_serializable('SPEAKER_MAX_PHRASES')
@@ -632,7 +641,7 @@ class Config:
def SPEAKER_MAX_PHRASES(self, value): def SPEAKER_MAX_PHRASES(self, value):
if isinstance(value, int): if isinstance(value, int):
self._SPEAKER_MAX_PHRASES = value self._SPEAKER_MAX_PHRASES = value
saveJson(self.PATH_CONFIG, inspect.currentframe().f_code.co_name, value) self.saveConfig(inspect.currentframe().f_code.co_name, value)
@property @property
@json_serializable('SPEAKER_AVG_LOGPROB') @json_serializable('SPEAKER_AVG_LOGPROB')
@@ -643,7 +652,7 @@ class Config:
def SPEAKER_AVG_LOGPROB(self, value): def SPEAKER_AVG_LOGPROB(self, value):
if isinstance(value, (int, float)): if isinstance(value, (int, float)):
self._SPEAKER_AVG_LOGPROB = value self._SPEAKER_AVG_LOGPROB = value
saveJson(self.PATH_CONFIG, inspect.currentframe().f_code.co_name, value) self.saveConfig(inspect.currentframe().f_code.co_name, value)
@property @property
@json_serializable('SPEAKER_NO_SPEECH_PROB') @json_serializable('SPEAKER_NO_SPEECH_PROB')
@@ -654,7 +663,7 @@ class Config:
def SPEAKER_NO_SPEECH_PROB(self, value): def SPEAKER_NO_SPEECH_PROB(self, value):
if isinstance(value, (int, float)): if isinstance(value, (int, float)):
self._SPEAKER_NO_SPEECH_PROB = value self._SPEAKER_NO_SPEECH_PROB = value
saveJson(self.PATH_CONFIG, inspect.currentframe().f_code.co_name, value) self.saveConfig(inspect.currentframe().f_code.co_name, value)
@property @property
@json_serializable('OSC_IP_ADDRESS') @json_serializable('OSC_IP_ADDRESS')
@@ -665,7 +674,7 @@ class Config:
def OSC_IP_ADDRESS(self, value): def OSC_IP_ADDRESS(self, value):
if isinstance(value, str): if isinstance(value, str):
self._OSC_IP_ADDRESS = value self._OSC_IP_ADDRESS = value
saveJson(self.PATH_CONFIG, inspect.currentframe().f_code.co_name, value) self.saveConfig(inspect.currentframe().f_code.co_name, value)
@property @property
@json_serializable('OSC_PORT') @json_serializable('OSC_PORT')
@@ -676,7 +685,7 @@ class Config:
def OSC_PORT(self, value): def OSC_PORT(self, value):
if isinstance(value, int): if isinstance(value, int):
self._OSC_PORT = value self._OSC_PORT = value
saveJson(self.PATH_CONFIG, inspect.currentframe().f_code.co_name, value) self.saveConfig(inspect.currentframe().f_code.co_name, value)
@property @property
@json_serializable('AUTH_KEYS') @json_serializable('AUTH_KEYS')
@@ -689,7 +698,7 @@ class Config:
for key, value in value.items(): for key, value in value.items():
if isinstance(value, str): if isinstance(value, str):
self._AUTH_KEYS[key] = value self._AUTH_KEYS[key] = value
saveJson(self.PATH_CONFIG, inspect.currentframe().f_code.co_name, self.AUTH_KEYS) self.saveConfig(inspect.currentframe().f_code.co_name, self.AUTH_KEYS)
@property @property
@json_serializable('USE_EXCLUDE_WORDS') @json_serializable('USE_EXCLUDE_WORDS')
@@ -700,7 +709,7 @@ class Config:
def USE_EXCLUDE_WORDS(self, value): def USE_EXCLUDE_WORDS(self, value):
if isinstance(value, bool): if isinstance(value, bool):
self._USE_EXCLUDE_WORDS = value self._USE_EXCLUDE_WORDS = value
saveJson(self.PATH_CONFIG, inspect.currentframe().f_code.co_name, value) self.saveConfig(inspect.currentframe().f_code.co_name, value)
@property @property
@json_serializable('USE_TRANSLATION_FEATURE') @json_serializable('USE_TRANSLATION_FEATURE')
@@ -711,7 +720,7 @@ class Config:
def USE_TRANSLATION_FEATURE(self, value): def USE_TRANSLATION_FEATURE(self, value):
if isinstance(value, bool): if isinstance(value, bool):
self._USE_TRANSLATION_FEATURE = value self._USE_TRANSLATION_FEATURE = value
saveJson(self.PATH_CONFIG, inspect.currentframe().f_code.co_name, value) self.saveConfig(inspect.currentframe().f_code.co_name, value)
@property @property
@json_serializable('USE_WHISPER_FEATURE') @json_serializable('USE_WHISPER_FEATURE')
@@ -722,7 +731,7 @@ class Config:
def USE_WHISPER_FEATURE(self, value): def USE_WHISPER_FEATURE(self, value):
if isinstance(value, bool): if isinstance(value, bool):
self._USE_WHISPER_FEATURE = value self._USE_WHISPER_FEATURE = value
saveJson(self.PATH_CONFIG, inspect.currentframe().f_code.co_name, value) self.saveConfig(inspect.currentframe().f_code.co_name, value)
@property @property
@json_serializable('SELECTED_TRANSLATION_COMPUTE_DEVICE') @json_serializable('SELECTED_TRANSLATION_COMPUTE_DEVICE')
@@ -733,7 +742,7 @@ class Config:
def SELECTED_TRANSLATION_COMPUTE_DEVICE(self, value): def SELECTED_TRANSLATION_COMPUTE_DEVICE(self, value):
if isinstance(value, dict): if isinstance(value, dict):
self._SELECTED_TRANSLATION_COMPUTE_DEVICE = value self._SELECTED_TRANSLATION_COMPUTE_DEVICE = value
saveJson(self.PATH_CONFIG, inspect.currentframe().f_code.co_name, value) self.saveConfig(inspect.currentframe().f_code.co_name, value)
@property @property
@json_serializable('SELECTED_TRANSCRIPTION_COMPUTE_DEVICE') @json_serializable('SELECTED_TRANSCRIPTION_COMPUTE_DEVICE')
@@ -744,7 +753,7 @@ class Config:
def SELECTED_TRANSCRIPTION_COMPUTE_DEVICE(self, value): def SELECTED_TRANSCRIPTION_COMPUTE_DEVICE(self, value):
if isinstance(value, dict): if isinstance(value, dict):
self._SELECTED_TRANSCRIPTION_COMPUTE_DEVICE = value self._SELECTED_TRANSCRIPTION_COMPUTE_DEVICE = value
saveJson(self.PATH_CONFIG, inspect.currentframe().f_code.co_name, value) self.saveConfig(inspect.currentframe().f_code.co_name, value)
@property @property
@json_serializable('CTRANSLATE2_WEIGHT_TYPE') @json_serializable('CTRANSLATE2_WEIGHT_TYPE')
@@ -753,10 +762,10 @@ class Config:
@CTRANSLATE2_WEIGHT_TYPE.setter @CTRANSLATE2_WEIGHT_TYPE.setter
def CTRANSLATE2_WEIGHT_TYPE(self, value): def CTRANSLATE2_WEIGHT_TYPE(self, value):
# if isinstance(value, str) and value in self.SELECTABLE_CTRANSLATE2_WEIGHT_TYPE_DICT: # if isinstance(value, str) and value in self.SELECTABLE_CTRANSLATE2_WEIGHT_TYPE_LIST:
if isinstance(value, str): if isinstance(value, str):
self._CTRANSLATE2_WEIGHT_TYPE = value self._CTRANSLATE2_WEIGHT_TYPE = value
saveJson(self.PATH_CONFIG, inspect.currentframe().f_code.co_name, value) self.saveConfig(inspect.currentframe().f_code.co_name, value)
@property @property
@json_serializable('WHISPER_WEIGHT_TYPE') @json_serializable('WHISPER_WEIGHT_TYPE')
@@ -767,7 +776,7 @@ class Config:
def WHISPER_WEIGHT_TYPE(self, value): def WHISPER_WEIGHT_TYPE(self, value):
if isinstance(value, str): if isinstance(value, str):
self._WHISPER_WEIGHT_TYPE = value self._WHISPER_WEIGHT_TYPE = value
saveJson(self.PATH_CONFIG, inspect.currentframe().f_code.co_name, value) self.saveConfig(inspect.currentframe().f_code.co_name, value)
@property @property
@json_serializable('AUTO_CLEAR_MESSAGE_BOX') @json_serializable('AUTO_CLEAR_MESSAGE_BOX')
@@ -778,7 +787,7 @@ class Config:
def AUTO_CLEAR_MESSAGE_BOX(self, value): def AUTO_CLEAR_MESSAGE_BOX(self, value):
if isinstance(value, bool): if isinstance(value, bool):
self._AUTO_CLEAR_MESSAGE_BOX = value self._AUTO_CLEAR_MESSAGE_BOX = value
saveJson(self.PATH_CONFIG, inspect.currentframe().f_code.co_name, value) self.saveConfig(inspect.currentframe().f_code.co_name, value)
@property @property
@json_serializable('SEND_ONLY_TRANSLATED_MESSAGES') @json_serializable('SEND_ONLY_TRANSLATED_MESSAGES')
@@ -789,7 +798,7 @@ class Config:
def SEND_ONLY_TRANSLATED_MESSAGES(self, value): def SEND_ONLY_TRANSLATED_MESSAGES(self, value):
if isinstance(value, bool): if isinstance(value, bool):
self._SEND_ONLY_TRANSLATED_MESSAGES = value self._SEND_ONLY_TRANSLATED_MESSAGES = value
saveJson(self.PATH_CONFIG, inspect.currentframe().f_code.co_name, value) self.saveConfig(inspect.currentframe().f_code.co_name, value)
@property @property
@json_serializable('SEND_MESSAGE_BUTTON_TYPE') @json_serializable('SEND_MESSAGE_BUTTON_TYPE')
@@ -800,7 +809,7 @@ class Config:
def SEND_MESSAGE_BUTTON_TYPE(self, value): def SEND_MESSAGE_BUTTON_TYPE(self, value):
if isinstance(value, str): if isinstance(value, str):
self._SEND_MESSAGE_BUTTON_TYPE = value self._SEND_MESSAGE_BUTTON_TYPE = value
saveJson(self.PATH_CONFIG, inspect.currentframe().f_code.co_name, value) self.saveConfig(inspect.currentframe().f_code.co_name, value)
@property @property
@json_serializable('OVERLAY_SETTINGS') @json_serializable('OVERLAY_SETTINGS')
@@ -813,7 +822,7 @@ class Config:
for key, value in value.items(): for key, value in value.items():
if isinstance(value, (int, float)): if isinstance(value, (int, float)):
self._OVERLAY_SETTINGS[key] = float(value) self._OVERLAY_SETTINGS[key] = float(value)
saveJson(self.PATH_CONFIG, inspect.currentframe().f_code.co_name, self.OVERLAY_SETTINGS) self.saveConfig(inspect.currentframe().f_code.co_name, self.OVERLAY_SETTINGS)
@property @property
@json_serializable('OVERLAY_SMALL_LOG') @json_serializable('OVERLAY_SMALL_LOG')
@@ -824,7 +833,7 @@ class Config:
def OVERLAY_SMALL_LOG(self, value): def OVERLAY_SMALL_LOG(self, value):
if isinstance(value, bool): if isinstance(value, bool):
self._OVERLAY_SMALL_LOG = value self._OVERLAY_SMALL_LOG = value
saveJson(self.PATH_CONFIG, inspect.currentframe().f_code.co_name, value) self.saveConfig(inspect.currentframe().f_code.co_name, value)
@property @property
@json_serializable('OVERLAY_SMALL_LOG_SETTINGS') @json_serializable('OVERLAY_SMALL_LOG_SETTINGS')
@@ -842,7 +851,7 @@ class Config:
case "display_duration" | "fadeout_duration": case "display_duration" | "fadeout_duration":
if isinstance(value, int): if isinstance(value, int):
self._OVERLAY_SMALL_LOG_SETTINGS[key] = value self._OVERLAY_SMALL_LOG_SETTINGS[key] = value
saveJson(self.PATH_CONFIG, inspect.currentframe().f_code.co_name, self.OVERLAY_SMALL_LOG_SETTINGS) self.saveConfig(inspect.currentframe().f_code.co_name, self.OVERLAY_SMALL_LOG_SETTINGS)
@property @property
@json_serializable('OVERLAY_UI_TYPE') @json_serializable('OVERLAY_UI_TYPE')
@@ -853,7 +862,7 @@ class Config:
def OVERLAY_UI_TYPE(self, value): def OVERLAY_UI_TYPE(self, value):
if isinstance(value, str): if isinstance(value, str):
self._OVERLAY_UI_TYPE = value self._OVERLAY_UI_TYPE = value
# saveJson(self.PATH_CONFIG, inspect.currentframe().f_code.co_name, value) # self.saveConfig(inspect.currentframe().f_code.co_name, value)
@property @property
@json_serializable('SEND_MESSAGE_TO_VRC') @json_serializable('SEND_MESSAGE_TO_VRC')
@@ -864,7 +873,7 @@ class Config:
def SEND_MESSAGE_TO_VRC(self, value): def SEND_MESSAGE_TO_VRC(self, value):
if isinstance(value, bool): if isinstance(value, bool):
self._SEND_MESSAGE_TO_VRC = value self._SEND_MESSAGE_TO_VRC = value
saveJson(self.PATH_CONFIG, inspect.currentframe().f_code.co_name, value) self.saveConfig(inspect.currentframe().f_code.co_name, value)
@property @property
@json_serializable('SEND_MESSAGE_FORMAT') @json_serializable('SEND_MESSAGE_FORMAT')
@@ -877,7 +886,7 @@ class Config:
if isUniqueStrings(["[message]"], value) is False: if isUniqueStrings(["[message]"], value) is False:
value = "[message]" value = "[message]"
self._SEND_MESSAGE_FORMAT = value self._SEND_MESSAGE_FORMAT = value
saveJson(self.PATH_CONFIG, inspect.currentframe().f_code.co_name, value) self.saveConfig(inspect.currentframe().f_code.co_name, value)
@property @property
@json_serializable('SEND_MESSAGE_FORMAT_WITH_T') @json_serializable('SEND_MESSAGE_FORMAT_WITH_T')
@@ -890,7 +899,7 @@ class Config:
if isUniqueStrings(["[message]", "[translation]"], value) is False: if isUniqueStrings(["[message]", "[translation]"], value) is False:
value = "[message]([translation])" value = "[message]([translation])"
self._SEND_MESSAGE_FORMAT_WITH_T = value self._SEND_MESSAGE_FORMAT_WITH_T = value
saveJson(self.PATH_CONFIG, inspect.currentframe().f_code.co_name, value) self.saveConfig(inspect.currentframe().f_code.co_name, value)
@property @property
@json_serializable('RECEIVED_MESSAGE_FORMAT') @json_serializable('RECEIVED_MESSAGE_FORMAT')
@@ -903,7 +912,7 @@ class Config:
if isUniqueStrings(["[message]"], value) is False: if isUniqueStrings(["[message]"], value) is False:
value = "[message]" value = "[message]"
self._RECEIVED_MESSAGE_FORMAT = value self._RECEIVED_MESSAGE_FORMAT = value
saveJson(self.PATH_CONFIG, inspect.currentframe().f_code.co_name, value) self.saveConfig(inspect.currentframe().f_code.co_name, value)
@property @property
@json_serializable('RECEIVED_MESSAGE_FORMAT_WITH_T') @json_serializable('RECEIVED_MESSAGE_FORMAT_WITH_T')
@@ -916,7 +925,7 @@ class Config:
if isUniqueStrings(["[message]", "[translation]"], value) is False: if isUniqueStrings(["[message]", "[translation]"], value) is False:
value = "[message]([translation])" value = "[message]([translation])"
self._RECEIVED_MESSAGE_FORMAT_WITH_T = value self._RECEIVED_MESSAGE_FORMAT_WITH_T = value
saveJson(self.PATH_CONFIG, inspect.currentframe().f_code.co_name, value) self.saveConfig(inspect.currentframe().f_code.co_name, value)
@property @property
@json_serializable('SEND_RECEIVED_MESSAGE_TO_VRC') @json_serializable('SEND_RECEIVED_MESSAGE_TO_VRC')
@@ -927,7 +936,7 @@ class Config:
def SEND_RECEIVED_MESSAGE_TO_VRC(self, value): def SEND_RECEIVED_MESSAGE_TO_VRC(self, value):
if isinstance(value, bool): if isinstance(value, bool):
self._SEND_RECEIVED_MESSAGE_TO_VRC = value self._SEND_RECEIVED_MESSAGE_TO_VRC = value
saveJson(self.PATH_CONFIG, inspect.currentframe().f_code.co_name, value) self.saveConfig(inspect.currentframe().f_code.co_name, value)
@property @property
@json_serializable('LOGGER_FEATURE') @json_serializable('LOGGER_FEATURE')
@@ -938,7 +947,7 @@ class Config:
def LOGGER_FEATURE(self, value): def LOGGER_FEATURE(self, value):
if isinstance(value, bool): if isinstance(value, bool):
self._LOGGER_FEATURE = value self._LOGGER_FEATURE = value
saveJson(self.PATH_CONFIG, inspect.currentframe().f_code.co_name, value) self.saveConfig(inspect.currentframe().f_code.co_name, value)
@property @property
@json_serializable('VRC_MIC_MUTE_SYNC') @json_serializable('VRC_MIC_MUTE_SYNC')
@@ -949,7 +958,7 @@ class Config:
def VRC_MIC_MUTE_SYNC(self, value): def VRC_MIC_MUTE_SYNC(self, value):
if isinstance(value, bool): if isinstance(value, bool):
self._VRC_MIC_MUTE_SYNC = value self._VRC_MIC_MUTE_SYNC = value
saveJson(self.PATH_CONFIG, inspect.currentframe().f_code.co_name, value) self.saveConfig(inspect.currentframe().f_code.co_name, value)
def init_config(self): def init_config(self):
# Read Only # Read Only
@@ -966,27 +975,25 @@ class Config:
self._BOOTH_URL = "https://misyaguziya.booth.pm/" self._BOOTH_URL = "https://misyaguziya.booth.pm/"
self._DOCUMENTS_URL = "https://mzsoftware.notion.site/VRCT-Documents-be79b7a165f64442ad8f326d86c22246" self._DOCUMENTS_URL = "https://mzsoftware.notion.site/VRCT-Documents-be79b7a165f64442ad8f326d86c22246"
self._DEEPL_AUTH_KEY_PAGE_URL = "https://www.deepl.com/ja/account/summary" self._DEEPL_AUTH_KEY_PAGE_URL = "https://www.deepl.com/ja/account/summary"
self._TRANSPARENCY_RANGE = (50, 100) self._TRANSPARENCY_RANGE = (40, 100)
self._APPEARANCE_THEME_LIST = ["Light", "Dark", "System"] self._APPEARANCE_THEME_LIST = ["Light", "Dark", "System"]
self._UI_SCALING_LIST = generatePercentageStringsList(start=40, end=200, step=10) self._UI_SCALING_RANGE = (40, 200)
self._TEXTBOX_UI_SCALING_RANGE = (50, 200) self._TEXTBOX_UI_SCALING_RANGE = (40, 200)
self._MESSAGE_BOX_RATIO_RANGE = (1, 99) self._MESSAGE_BOX_RATIO_RANGE = (1, 99)
self._SELECTABLE_CTRANSLATE2_WEIGHT_TYPE_DICT = { self._SELECTABLE_CTRANSLATE2_WEIGHT_TYPE_LIST = [
# {Save json str}: {i18n_placeholder} pairs "Small",
"Small": "Small", "Large",
"Large": "Large", ]
}
self._SELECTABLE_WHISPER_WEIGHT_TYPE_DICT = { self._SELECTABLE_WHISPER_WEIGHT_TYPE_LIST = [
# {Save json str}: {i18n_placeholder} pairs "tiny",
"tiny": "tiny", "base",
"base": "base", "small",
"small": "small", "medium",
"medium": "medium", "large-v1",
"large-v1": "large-v1", "large-v2",
"large-v2": "large-v2", "large-v3",
"large-v3": "large-v3", ]
}
self._MAX_MIC_THRESHOLD = 2000 self._MAX_MIC_THRESHOLD = 2000
self._MAX_SPEAKER_THRESHOLD = 4000 self._MAX_SPEAKER_THRESHOLD = 4000
@@ -1163,21 +1170,16 @@ class Config:
def load_config(self): def load_config(self):
if os_path.isfile(self.PATH_CONFIG) is not False: if os_path.isfile(self.PATH_CONFIG) is not False:
with open(self.PATH_CONFIG, 'r', encoding="utf-8") as fp: with open(self.PATH_CONFIG, 'r', encoding="utf-8") as fp:
config = json_load(fp) if fp.readable() and fp.seek(0, 2) > 0:
fp.seek(0)
self._config_data = json_load(fp)
old_message_format = None for key, value in self._config_data.items():
for key in config.keys(): setattr(self, key, value)
if key == "MESSAGE_FORMAT":
old_message_format = config[key]
setattr(self, key, config[key])
if old_message_format is not None:
setattr(self, "SEND_MESSAGE_FORMAT_WITH_T", old_message_format)
with open(self.PATH_CONFIG, 'w', encoding="utf-8") as fp: with open(self.PATH_CONFIG, 'w', encoding="utf-8") as fp:
config = {}
for var_name, var_func in json_serializable_vars.items(): for var_name, var_func in json_serializable_vars.items():
config[var_name] = var_func(self) self._config_data[var_name] = var_func(self)
json_dump(config, fp, indent=4, ensure_ascii=False) json_dump(self._config_data, fp, indent=4, ensure_ascii=False)
config = Config() config = Config()

View File

@@ -1,7 +1,6 @@
from os import path as os_path, makedirs as os_makedirs from os import path as os_path, makedirs as os_makedirs
from requests import get as requests_get from requests import get as requests_get
from typing import Callable from typing import Callable
import torch
import huggingface_hub import huggingface_hub
from faster_whisper import WhisperModel from faster_whisper import WhisperModel
import logging import logging

View File

@@ -22,12 +22,6 @@ def makeEven(number, minus:bool=False):
return number if isEven(number) else number - 1 return number if isEven(number) else number - 1
return number if isEven(number) else number + 1 return number if isEven(number) else number + 1
def generatePercentageStringsList(start:int, end:int, step:int):
strings = []
for percent in range(start, end + 1, step):
strings.append(f"{percent}%")
return strings
def intToPctStr(value:int): def intToPctStr(value:int):
return f"{value}%" return f"{value}%"

View File

@@ -11,10 +11,14 @@ import torch
class Controller: class Controller:
def __init__(self) -> None: def __init__(self) -> None:
self.init_mapping = {}
self.run_mapping = {} self.run_mapping = {}
self.run = None self.run = None
self.device_access_status = True self.device_access_status = True
def setInitMapping(self, init_mapping:dict) -> None:
self.init_mapping = init_mapping
def setRunMapping(self, run_mapping:dict) -> None: def setRunMapping(self, run_mapping:dict) -> None:
self.run_mapping = run_mapping self.run_mapping = run_mapping
@@ -43,6 +47,18 @@ class Controller:
model.getListSpeakerDevice(), model.getListSpeakerDevice(),
) )
def updateConfigSettings(self) -> None:
settings = {}
for endpoint, dict_data in self.init_mapping.items():
response = dict_data["variable"](None)
result = response.get("result", None)
settings[endpoint] = result
self.run(
200,
self.run_mapping["initialization_complete"],
settings,
)
def restartAccessDevices(self) -> None: def restartAccessDevices(self) -> None:
if config.ENABLE_TRANSCRIPTION_SEND is True: if config.ENABLE_TRANSCRIPTION_SEND is True:
self.startThreadingTranscriptionSendMessage() self.startThreadingTranscriptionSendMessage()
@@ -353,8 +369,8 @@ class Controller:
return {"status":200, "result":config.APPEARANCE_THEME_LIST} return {"status":200, "result":config.APPEARANCE_THEME_LIST}
@staticmethod @staticmethod
def getUiScalingList(*args, **kwargs) -> dict: def getUiScalingRange(*args, **kwargs) -> dict:
return {"status":200, "result":config.UI_SCALING_LIST} return {"status":200, "result":config.UI_SCALING_RANGE}
@staticmethod @staticmethod
def getTextboxUiScalingRange(*args, **kwargs) -> dict: def getTextboxUiScalingRange(*args, **kwargs) -> dict:
@@ -381,8 +397,8 @@ class Controller:
return {"status":200,"result":config.SELECTED_TRANSLATION_COMPUTE_DEVICE} return {"status":200,"result":config.SELECTED_TRANSLATION_COMPUTE_DEVICE}
@staticmethod @staticmethod
def getSelectableCtranslate2WeightTypeDict(*args, **kwargs) -> dict: def getSelectableCtranslate2WeightTypeList(*args, **kwargs) -> dict:
return {"status":200, "result":config.SELECTABLE_CTRANSLATE2_WEIGHT_TYPE_DICT} return {"status":200, "result":config.SELECTABLE_CTRANSLATE2_WEIGHT_TYPE_LIST}
@staticmethod @staticmethod
def getSelectedTranscriptionComputeDevice(*args, **kwargs) -> dict: def getSelectedTranscriptionComputeDevice(*args, **kwargs) -> dict:
@@ -395,8 +411,8 @@ class Controller:
return {"status":200,"result":config.SELECTED_TRANSCRIPTION_COMPUTE_DEVICE} return {"status":200,"result":config.SELECTED_TRANSCRIPTION_COMPUTE_DEVICE}
@staticmethod @staticmethod
def getSelectableWhisperModelTypeDict(*args, **kwargs) -> dict: def getSelectableWhisperWeightTypeList(*args, **kwargs) -> dict:
return {"status":200, "result":config.SELECTABLE_WHISPER_WEIGHT_TYPE_DICT} return {"status":200, "result":config.SELECTABLE_WHISPER_WEIGHT_TYPE_LIST}
@staticmethod @staticmethod
def getMaxMicThreshold(*args, **kwargs) -> dict: def getMaxMicThreshold(*args, **kwargs) -> dict:
@@ -1704,6 +1720,8 @@ class Controller:
if config.AUTO_SPEAKER_SELECT is True: if config.AUTO_SPEAKER_SELECT is True:
self.setEnableAutoSpeakerSelect() self.setEnableAutoSpeakerSelect()
self.updateConfigSettings()
printLog("End Initialization") printLog("End Initialization")
self.startWatchdog() self.startWatchdog()

View File

@@ -34,6 +34,8 @@ run_mapping = {
"speaker_device_list":"/run/speaker_device_list", "speaker_device_list":"/run/speaker_device_list",
"update_software_flag":"/run/update_software_flag", "update_software_flag":"/run/update_software_flag",
"initialization_complete":"/run/initialization_complete",
} }
controller.setRunMapping(run_mapping) controller.setRunMapping(run_mapping)
@@ -94,11 +96,11 @@ mapping = {
"/get/data/transparency": {"status": True, "variable":controller.getTransparency}, "/get/data/transparency": {"status": True, "variable":controller.getTransparency},
"/set/data/transparency": {"status": True, "variable":controller.setTransparency}, "/set/data/transparency": {"status": True, "variable":controller.setTransparency},
"/get/data/appearance_theme_list": {"status": True, "variable":controller.getAppearanceThemesList}, # "/get/data/appearance_theme_list": {"status": True, "variable":controller.getAppearanceThemesList},
"/get/data/appearance_theme": {"status": True, "variable":controller.getAppearanceTheme}, # "/get/data/appearance_theme": {"status": True, "variable":controller.getAppearanceTheme},
"/set/data/appearance_theme": {"status": True, "variable":controller.setAppearanceTheme}, # "/set/data/appearance_theme": {"status": True, "variable":controller.setAppearanceTheme},
"/get/data/ui_scaling_list": {"status": True, "variable":controller.getUiScalingList}, "/get/data/ui_scaling_range": {"status": True, "variable":controller.getUiScalingRange},
"/get/data/ui_scaling": {"status": True, "variable":controller.getUiScaling}, "/get/data/ui_scaling": {"status": True, "variable":controller.getUiScaling},
"/set/data/ui_scaling": {"status": True, "variable":controller.setUiScaling}, "/set/data/ui_scaling": {"status": True, "variable":controller.setUiScaling},
@@ -128,11 +130,11 @@ mapping = {
"/set/enable/use_translation_feature": {"status": True, "variable":controller.setEnableUseTranslationFeature}, "/set/enable/use_translation_feature": {"status": True, "variable":controller.setEnableUseTranslationFeature},
"/set/disable/use_translation_feature": {"status": True, "variable":controller.setDisableUseTranslationFeature}, "/set/disable/use_translation_feature": {"status": True, "variable":controller.setDisableUseTranslationFeature},
"/get/data/translation_compute_device_dict": {"status": True, "variable":controller.getComputeDeviceList}, "/get/data/translation_compute_device_list": {"status": True, "variable":controller.getComputeDeviceList},
"/get/data/selected_translation_compute_device": {"status": True, "variable":controller.getSelectedTranslationComputeDevice}, "/get/data/selected_translation_compute_device": {"status": True, "variable":controller.getSelectedTranslationComputeDevice},
"/set/data/selected_translation_compute_device": {"status": True, "variable":controller.setSelectedTranslationComputeDevice}, "/set/data/selected_translation_compute_device": {"status": True, "variable":controller.setSelectedTranslationComputeDevice},
"/get/data/selectable_ctranslate2_weight_type_dict": {"status": True, "variable":controller.getSelectableCtranslate2WeightTypeDict}, "/get/data/selectable_ctranslate2_weight_type_list": {"status": True, "variable":controller.getSelectableCtranslate2WeightTypeList},
"/get/data/ctranslate2_weight_type": {"status": True, "variable":controller.getCtranslate2WeightType}, "/get/data/ctranslate2_weight_type": {"status": True, "variable":controller.getCtranslate2WeightType},
"/set/data/ctranslate2_weight_type": {"status": True, "variable":controller.setCtranslate2WeightType}, "/set/data/ctranslate2_weight_type": {"status": True, "variable":controller.setCtranslate2WeightType},
@@ -233,11 +235,11 @@ mapping = {
"/set/enable/check_speaker_threshold": {"status": True, "variable":controller.setEnableCheckSpeakerThreshold}, "/set/enable/check_speaker_threshold": {"status": True, "variable":controller.setEnableCheckSpeakerThreshold},
"/set/disable/check_speaker_threshold": {"status": True, "variable":controller.setDisableCheckSpeakerThreshold}, "/set/disable/check_speaker_threshold": {"status": True, "variable":controller.setDisableCheckSpeakerThreshold},
"/get/data/transcription_compute_device_dict": {"status": True, "variable":controller.getComputeDeviceList}, "/get/data/transcription_compute_device_list": {"status": True, "variable":controller.getComputeDeviceList},
"/get/data/selected_transcription_compute_device": {"status": True, "variable":controller.getSelectedTranscriptionComputeDevice}, "/get/data/selected_transcription_compute_device": {"status": True, "variable":controller.getSelectedTranscriptionComputeDevice},
"/set/data/selected_transcription_compute_device": {"status": True, "variable":controller.setSelectedTranscriptionComputeDevice}, "/set/data/selected_transcription_compute_device": {"status": True, "variable":controller.setSelectedTranscriptionComputeDevice},
"/get/data/selectable_whisper_weight_type_dict": {"status": True, "variable":controller.getSelectableWhisperModelTypeDict}, "/get/data/selectable_whisper_weight_type_list": {"status": True, "variable":controller.getSelectableWhisperWeightTypeList},
"/get/data/whisper_weight_type": {"status": True, "variable":controller.getWhisperWeightType}, "/get/data/whisper_weight_type": {"status": True, "variable":controller.getWhisperWeightType},
"/set/data/whisper_weight_type": {"status": True, "variable":controller.setWhisperWeightType}, "/set/data/whisper_weight_type": {"status": True, "variable":controller.setWhisperWeightType},
@@ -315,6 +317,9 @@ mapping = {
# "/run/stop_watchdog": {"status": True, "variable":controller.stopWatchdog}, # "/run/stop_watchdog": {"status": True, "variable":controller.stopWatchdog},
} }
init_mapping = {key:value for key, value in mapping.items() if key.startswith("/get/data/")}
controller.setInitMapping(init_mapping)
class Main: class Main:
def __init__(self) -> None: def __init__(self) -> None:
self.queue = Queue() self.queue = Queue()

View File

@@ -33,45 +33,14 @@ import {
} from "@logics_common"; } from "@logics_common";
import { import {
useSoftwareVersion,
useEnableAutoMicSelect,
useEnableAutoSpeakerSelect,
useSelectedMicHost,
useSelectedMicDevice,
useSelectedSpeakerDevice,
useMicThreshold,
useSpeakerThreshold,
useEnableAutoClearMessageInputBox,
useEnableSendOnlyTranslatedMessages,
useEnableAutoExportMessageLogs,
useEnableVrcMicMuteSync,
useEnableSendMessageToVrc,
useSendMessageButtonType,
useUiLanguage, useUiLanguage,
useUiScaling, useUiScaling,
useMessageLogUiScaling,
useSelectedFontFamily, useSelectedFontFamily,
useTransparency, useTransparency,
useMicHostList,
useMicDeviceList,
useSpeakerDeviceList,
useMicRecordTimeout,
useMicPhraseTimeout,
useMicMaxWords,
useMicWordFilterList,
useSpeakerRecordTimeout,
useSpeakerPhraseTimeout,
useSpeakerMaxWords,
useOscIpAddress,
useOscPort,
} from "@logics_configs"; } from "@logics_configs";
import { import {
useMainFunction, useMainFunction,
useIsMainPageCompactMode,
useLanguageSettings,
useSelectableLanguageList,
useMessageInputBoxRatio,
} from "@logics_main"; } from "@logics_main";
const StartPythonFacadeComponent = () => { const StartPythonFacadeComponent = () => {
@@ -79,119 +48,11 @@ const StartPythonFacadeComponent = () => {
const hasRunRef = useRef(false); const hasRunRef = useRef(false);
const { asyncFetchFonts } = useAsyncFetchFonts(); const { asyncFetchFonts } = useAsyncFetchFonts();
const { fetchAndUpdateWindowGeometry } = useWindow();
const { getMicHostList } = useMicHostList();
const { getMicDeviceList } = useMicDeviceList();
const { getSpeakerDeviceList } = useSpeakerDeviceList();
const { getIsMainPageCompactMode } = useIsMainPageCompactMode();
const { getSoftwareVersion } = useSoftwareVersion();
const { getEnableAutoMicSelect } = useEnableAutoMicSelect();
const { getEnableAutoSpeakerSelect } = useEnableAutoSpeakerSelect();
const { getSelectedMicHost } = useSelectedMicHost();
const { getSelectedMicDevice } = useSelectedMicDevice();
const { getSelectedSpeakerDevice } = useSelectedSpeakerDevice();
const { getMicThreshold, getEnableAutomaticMicThreshold } = useMicThreshold();
const { getSpeakerThreshold, getEnableAutomaticSpeakerThreshold } = useSpeakerThreshold();
const { getEnableAutoClearMessageInputBox } = useEnableAutoClearMessageInputBox();
const { getEnableSendOnlyTranslatedMessages } = useEnableSendOnlyTranslatedMessages();
const { getEnableAutoExportMessageLogs } = useEnableAutoExportMessageLogs();
const { getEnableVrcMicMuteSync } = useEnableVrcMicMuteSync();
const { getEnableSendMessageToVrc } = useEnableSendMessageToVrc();
const { getSendMessageButtonType } = useSendMessageButtonType();
const { getUiLanguage } = useUiLanguage();
const { getUiScaling } = useUiScaling();
const { getMessageLogUiScaling } = useMessageLogUiScaling();
const { getSelectedFontFamily } = useSelectedFontFamily();
const { getTransparency } = useTransparency();
const {
getSelectedPresetTabNumber,
getEnableMultiTranslation,
getSelectedYourLanguages,
getSelectedTargetLanguages,
getTranslationEngines,
getSelectedTranslationEngines,
} = useLanguageSettings();
const { getSelectableLanguageList } = useSelectableLanguageList();
const { getMessageInputBoxRatio } = useMessageInputBoxRatio();
const { getMicRecordTimeout } = useMicRecordTimeout();
const { getMicPhraseTimeout } = useMicPhraseTimeout();
const { getMicMaxWords } = useMicMaxWords();
const { getMicWordFilterList } = useMicWordFilterList();
const { getSpeakerRecordTimeout } = useSpeakerRecordTimeout();
const { getSpeakerPhraseTimeout } = useSpeakerPhraseTimeout();
const { getSpeakerMaxWords } = useSpeakerMaxWords();
const { getOscIpAddress } = useOscIpAddress();
const { getOscPort } = useOscPort();
useEffect(() => { useEffect(() => {
if (!hasRunRef.current) { if (!hasRunRef.current) {
asyncStartPython().then(() => { asyncStartPython().then(() => {
startFeedingToWatchDog(); startFeedingToWatchDog();
fetchAndUpdateWindowGeometry();
getUiLanguage();
getUiScaling();
getMessageLogUiScaling();
getIsMainPageCompactMode();
getMessageInputBoxRatio();
getTransparency();
asyncFetchFonts(); asyncFetchFonts();
getSelectedFontFamily();
getSoftwareVersion();
getSelectedPresetTabNumber();
getEnableMultiTranslation();
getSelectedYourLanguages();
getSelectedTargetLanguages();
getSelectableLanguageList();
getTranslationEngines();
getSelectedTranslationEngines();
getMicHostList();
getMicDeviceList();
getSpeakerDeviceList();
getEnableAutoMicSelect();
getEnableAutoSpeakerSelect();
getSelectedMicHost();
getSelectedMicDevice();
getSelectedSpeakerDevice();
getMicThreshold();
getSpeakerThreshold();
getEnableAutomaticMicThreshold();
getEnableAutomaticSpeakerThreshold();
getMicRecordTimeout();
getMicPhraseTimeout();
getMicMaxWords();
getMicWordFilterList();
getSpeakerRecordTimeout();
getSpeakerPhraseTimeout();
getSpeakerMaxWords();
getEnableAutoClearMessageInputBox();
getSendMessageButtonType();
getEnableSendOnlyTranslatedMessages();
getEnableAutoExportMessageLogs();
getEnableVrcMicMuteSync();
getEnableSendMessageToVrc();
getOscIpAddress();
getOscPort();
}).catch((err) => { }).catch((err) => {
console.error(err); console.error(err);
}); });

View File

@@ -51,9 +51,6 @@ export const useWindow = () => {
} }
}; };
const fetchAndUpdateWindowGeometry = () => {
asyncStdoutToPython("/get/data/main_window_geometry");
};
const WindowGeometryController = () => { const WindowGeometryController = () => {
useEffect(() => { useEffect(() => {
@@ -86,7 +83,6 @@ export const useWindow = () => {
return { return {
WindowGeometryController, WindowGeometryController,
asyncSaveWindowGeometry, asyncSaveWindowGeometry,
fetchAndUpdateWindowGeometry,
restoreWindowGeometry, restoreWindowGeometry,
}; };
}; };

View File

@@ -362,9 +362,21 @@ export const useReceiveRoutes = () => {
"/set/data/speaker_max_phrases": updateSpeakerMaxWords, "/set/data/speaker_max_phrases": updateSpeakerMaxWords,
}; };
const receiveRoutes = (parsed_data) => { const receiveRoutes = (parsed_data) => {
const initDataSyncProcess = (payload) => {
for (const [endpoint, value] of Object.entries(payload)) {
const route = routes[endpoint];
(route) ? route(value) : console.error(`Invalid endpoint: ${endpoint}\vvalue: ${JSON.stringify(value)}`);
}
};
switch (parsed_data.status) { switch (parsed_data.status) {
case 200: case 200:
if (parsed_data.endpoint === "/run/initialization_complete") {
initDataSyncProcess(parsed_data.result);
break;
};
const route = routes[parsed_data.endpoint]; const route = routes[parsed_data.endpoint];
(route) ? route(parsed_data.result) : console.error(`Invalid endpoint: ${parsed_data.endpoint}\nresult: ${JSON.stringify(parsed_data.result)}`); (route) ? route(parsed_data.result) : console.error(`Invalid endpoint: ${parsed_data.endpoint}\nresult: ${JSON.stringify(parsed_data.result)}`);
break; break;