[update] Speakerからの文字起こし結果をXSOverlayの通知機能で表示する機能を追加(VR限定)
This commit is contained in:
11
VRCT.py
11
VRCT.py
@@ -18,6 +18,7 @@ from audio_utils import get_input_device_list, get_output_device_list, get_defau
|
||||
from audio_recorder import SelectedMicRecorder, SelectedSpeakerRecorder
|
||||
from audio_transcriber import AudioTranscriber
|
||||
from translation import Translator
|
||||
from notification import notification_xsoverlay_for_vrct
|
||||
|
||||
class App(CTk):
|
||||
def __init__(self, *args, **kwargs):
|
||||
@@ -65,6 +66,7 @@ class App(CTk):
|
||||
self.INPUT_SPEAKER_RECORD_TIMEOUT = 3
|
||||
self.INPUT_SPEAKER_PHRASE_TIMEOUT = 3
|
||||
self.INPUT_SPEAKER_MAX_PHRASES = 10
|
||||
|
||||
## Parameter
|
||||
self.OSC_IP_ADDRESS = "127.0.0.1"
|
||||
self.OSC_PORT = 9000
|
||||
@@ -77,6 +79,7 @@ class App(CTk):
|
||||
self.MESSAGE_FORMAT = "[message]([translation])"
|
||||
# Others
|
||||
self.ENABLE_AUTO_CLEAR_CHATBOX = False
|
||||
self.ENABLE_NOTICE_XSOVERLAY =False
|
||||
|
||||
# load config
|
||||
if os_path.isfile(self.PATH_CONFIG) is not False:
|
||||
@@ -209,6 +212,9 @@ class App(CTk):
|
||||
if "ENABLE_AUTO_CLEAR_CHATBOX" in config.keys():
|
||||
if type(config["ENABLE_AUTO_CLEAR_CHATBOX"]) is bool:
|
||||
self.ENABLE_AUTO_CLEAR_CHATBOX = config["ENABLE_AUTO_CLEAR_CHATBOX"]
|
||||
if "ENABLE_NOTICE_XSOVERLAY" in config.keys():
|
||||
if type(config["ENABLE_NOTICE_XSOVERLAY"]) is bool:
|
||||
self.ENABLE_NOTICE_XSOVERLAY = config["ENABLE_NOTICE_XSOVERLAY"]
|
||||
|
||||
with open(self.PATH_CONFIG, 'w') as fp:
|
||||
config = {
|
||||
@@ -247,6 +253,7 @@ class App(CTk):
|
||||
"AUTH_KEYS": self.AUTH_KEYS,
|
||||
"MESSAGE_FORMAT": self.MESSAGE_FORMAT,
|
||||
"ENABLE_AUTO_CLEAR_CHATBOX": self.ENABLE_AUTO_CLEAR_CHATBOX,
|
||||
"ENABLE_NOTICE_XSOVERLAY": self.ENABLE_NOTICE_XSOVERLAY,
|
||||
}
|
||||
json_dump(config, fp, indent=4)
|
||||
|
||||
@@ -567,6 +574,8 @@ class App(CTk):
|
||||
# update textbox message receive log
|
||||
print_textbox(self.textbox_message_log, f"{voice_message}", "RECEIVE")
|
||||
print_textbox(self.textbox_message_receive_log, f"{voice_message}", "RECEIVE")
|
||||
if self.ENABLE_NOTICE_XSOVERLAY is True:
|
||||
notification_xsoverlay_for_vrct(content=f"{voice_message}")
|
||||
|
||||
self.spk_print_transcript = thread_fnc(spk_transcript_to_textbox)
|
||||
self.spk_print_transcript.daemon = True
|
||||
@@ -654,7 +663,7 @@ class App(CTk):
|
||||
print_textbox(self.textbox_message_send_log, f"{chat_message}", "SEND")
|
||||
|
||||
# delete message in entry message box
|
||||
if self.ENABLE_AUTO_CLEAR_CHATBOX == True:
|
||||
if self.ENABLE_AUTO_CLEAR_CHATBOX is True:
|
||||
self.entry_message_box.delete(0, customtkinter.END)
|
||||
|
||||
BREAK_KEYSYM_LIST = [
|
||||
|
||||
@@ -60,6 +60,7 @@ en:
|
||||
|
||||
# tab Others
|
||||
label_checkbox_auto_clear_chatbox: "Auto clear chat box"
|
||||
label_checkbox_notice_xsoverlay: "Notification XSOverlay"
|
||||
|
||||
|
||||
ja:
|
||||
@@ -125,6 +126,7 @@ ja:
|
||||
|
||||
# tab Others
|
||||
label_checkbox_auto_clear_chatbox: "送信後はチャットボックスを空にする"
|
||||
label_checkbox_notice_xsoverlay: "XSOverlayの通知機能を有効"
|
||||
|
||||
|
||||
ko:
|
||||
|
||||
6
utils.py
6
utils.py
@@ -100,15 +100,15 @@ def widget_config_window_label_setter(self, language_yaml_data):
|
||||
"label_input_speaker_phrase_timeout",
|
||||
"label_input_speaker_max_phrases",
|
||||
|
||||
|
||||
# tab Parameter
|
||||
"label_ip_address",
|
||||
"label_port",
|
||||
"label_authkey",
|
||||
"label_message_format",
|
||||
|
||||
|
||||
# tab Others
|
||||
"label_checkbox_auto_clear_chatbox"
|
||||
"label_checkbox_auto_clear_chatbox",
|
||||
"label_checkbox_notice_xsoverlay",
|
||||
]
|
||||
for name in widget_names:
|
||||
widget = getattr(self, name)
|
||||
|
||||
@@ -492,6 +492,11 @@ class ToplevelWindowConfig(CTkToplevel):
|
||||
self.parent.ENABLE_AUTO_CLEAR_CHATBOX = value
|
||||
save_json(self.parent.PATH_CONFIG, "ENABLE_AUTO_CLEAR_CHATBOX", self.parent.ENABLE_AUTO_CLEAR_CHATBOX)
|
||||
|
||||
def checkbox_notice_xsoverlay_callback(self):
|
||||
value = self.checkbox_notice_xsoverlay.get()
|
||||
self.parent.ENABLE_NOTICE_XSOVERLAY = value
|
||||
save_json(self.parent.PATH_CONFIG, "ENABLE_NOTICE_XSOVERLAY", self.parent.ENABLE_NOTICE_XSOVERLAY)
|
||||
|
||||
def delete_window(self):
|
||||
self.checkbox_input_mic_threshold_check.deselect()
|
||||
self.checkbox_input_speaker_threshold_check.deselect()
|
||||
@@ -1381,7 +1386,7 @@ class ToplevelWindowConfig(CTkToplevel):
|
||||
|
||||
# tab Others
|
||||
## checkbox auto clear chat box
|
||||
row += 1
|
||||
row = 0
|
||||
self.label_checkbox_auto_clear_chatbox = CTkLabel(
|
||||
self.tabview_config.tab(config_tab_title_others),
|
||||
text=init_lang_text,
|
||||
@@ -1403,4 +1408,26 @@ class ToplevelWindowConfig(CTkToplevel):
|
||||
else:
|
||||
self.checkbox_auto_clear_chatbox.deselect()
|
||||
|
||||
# checkbox notice xsoverlay
|
||||
row += 1
|
||||
self.label_checkbox_notice_xsoverlay = CTkLabel(
|
||||
self.tabview_config.tab(config_tab_title_others),
|
||||
text=init_lang_text,
|
||||
fg_color="transparent",
|
||||
font=CTkFont(family=self.parent.FONT_FAMILY)
|
||||
)
|
||||
self.label_checkbox_notice_xsoverlay.grid(row=row, column=0, columnspan=1, padx=padx, pady=pady, sticky="nsw")
|
||||
self.checkbox_notice_xsoverlay = CTkCheckBox(
|
||||
self.tabview_config.tab(config_tab_title_others),
|
||||
text="",
|
||||
onvalue=True,
|
||||
offvalue=False,
|
||||
command=self.checkbox_notice_xsoverlay_callback,
|
||||
font=CTkFont(family=self.parent.FONT_FAMILY)
|
||||
)
|
||||
self.checkbox_notice_xsoverlay.grid(row=row, column=1, columnspan=1, padx=padx, pady=pady, sticky="nsew")
|
||||
if self.parent.ENABLE_NOTICE_XSOVERLAY is True:
|
||||
self.checkbox_notice_xsoverlay.select()
|
||||
else:
|
||||
self.checkbox_notice_xsoverlay.deselect()
|
||||
widget_config_window_label_setter(self, language_yaml_data)
|
||||
Reference in New Issue
Block a user