From 1ebd32fea987cd3f66ba7c10293832c6bd8118da Mon Sep 17 00:00:00 2001 From: McHauge Date: Wed, 27 Nov 2024 14:24:58 +0100 Subject: [PATCH 1/3] [Update] Requirements : Upgrade sentencepiece to version 0.2.0 --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index e5b4bc5a..8963b514 100644 --- a/requirements.txt +++ b/requirements.txt @@ -11,7 +11,7 @@ pyinstaller==6.2.0 numpy==1.26.4 torch==2.2.2 transformers==4.37.2 -sentencepiece==0.1.99 +sentencepiece==0.2.0 ctranslate2==4.1.0 faster-whisper==1.0.3 openvr==1.26.701 From 6572fb96a32624f484874f992030360a4b0a6bc8 Mon Sep 17 00:00:00 2001 From: McHauge Date: Wed, 27 Nov 2024 16:04:35 +0100 Subject: [PATCH 2/3] Add support for send_only_translated_messages_overlay to only send translation to XS-Overlay --- config.py | 12 ++++++++++++ controller.py | 17 +++++++++++++---- locales/en.yml | 3 +++ locales/ja.yml | 3 +++ locales/ko.yml | 3 +++ locales/zh-Hans.yml | 3 +++ locales/zh-Hant.yml | 3 +++ models/overlay/overlay_image.py | 14 ++++++++++++-- view.py | 6 ++++++ .../createSettingBox_Others.py | 13 +++++++++++++ 10 files changed, 71 insertions(+), 6 deletions(-) diff --git a/config.py b/config.py index f5f89b49..8a898b40 100644 --- a/config.py +++ b/config.py @@ -762,6 +762,17 @@ class Config: self._ENABLE_SEND_ONLY_TRANSLATED_MESSAGES = value saveJson(self.PATH_CONFIG, inspect.currentframe().f_code.co_name, value) + @property + @json_serializable('ENABLE_SEND_ONLY_TRANSLATED_MESSAGES_OVERLAY') + def ENABLE_SEND_ONLY_TRANSLATED_MESSAGES_OVERLAY(self): + return self._ENABLE_SEND_ONLY_TRANSLATED_MESSAGES_OVERLAY + + @ENABLE_SEND_ONLY_TRANSLATED_MESSAGES_OVERLAY.setter + def ENABLE_SEND_ONLY_TRANSLATED_MESSAGES_OVERLAY(self, value): + if isinstance(value, bool): + self._ENABLE_SEND_ONLY_TRANSLATED_MESSAGES_OVERLAY = value + saveJson(self.PATH_CONFIG, inspect.currentframe().f_code.co_name, value) + @property @json_serializable('SEND_MESSAGE_BUTTON_TYPE') def SEND_MESSAGE_BUTTON_TYPE(self): @@ -1107,6 +1118,7 @@ class Config: self._RECEIVED_MESSAGE_FORMAT_WITH_T = "[message]([translation])" self._ENABLE_AUTO_CLEAR_MESSAGE_BOX = True self._ENABLE_SEND_ONLY_TRANSLATED_MESSAGES = False + self._ENABLE_SEND_ONLY_TRANSLATED_MESSAGES_OVERLAY = False self._SEND_MESSAGE_BUTTON_TYPE = "show" self._OVERLAY_SETTINGS = { "opacity": 1.0, diff --git a/controller.py b/controller.py index 57ee6779..aeb64d26 100644 --- a/controller.py +++ b/controller.py @@ -160,10 +160,14 @@ def receiveSpeakerMessage(message): if config.ENABLE_TRANSCRIPTION_RECEIVE is True: if config.ENABLE_OVERLAY_SMALL_LOG is True: if model.overlay.initialized is True: - overlay_image = model.createOverlayImageShort(message, translation) - model.updateOverlay(overlay_image) - # overlay_image = model.createOverlayImageLong("receive", message, translation) - # model.updateOverlay(overlay_image) + if config.ENABLE_SEND_ONLY_TRANSLATED_MESSAGES_OVERLAY is True: + overlay_image = model.createOverlayImageShort("", translation) + model.updateOverlay(overlay_image) + else: + overlay_image = model.createOverlayImageShort(message, translation) + model.updateOverlay(overlay_image) + # overlay_image = model.createOverlayImageLong("receive", message, translation) + # model.updateOverlay(overlay_image) # ------------Speaker2Chatbox------------ if config.ENABLE_SPEAKER2CHATBOX is True: @@ -907,6 +911,10 @@ def callbackSetEnableSendOnlyTranslatedMessages(value): print("callbackSetEnableSendOnlyTranslatedMessages", value) config.ENABLE_SEND_ONLY_TRANSLATED_MESSAGES = value +def callbackSetEnableSendOnlyTranslatedMessagesOverlay(value): + print("callbackSetEnableSendOnlyTranslatedMessagesOverlay", value) + config.ENABLE_SEND_ONLY_TRANSLATED_MESSAGES_OVERLAY = value + def callbackSetSendMessageButtonType(value): print("callbackSetSendMessageButtonType", value) config.SEND_MESSAGE_BUTTON_TYPE = value @@ -1158,6 +1166,7 @@ def createMainWindow(splash): # Others Tab "callback_set_enable_auto_clear_chatbox": callbackSetEnableAutoClearMessageBox, "callback_set_send_only_translated_messages": callbackSetEnableSendOnlyTranslatedMessages, + "callback_set_send_only_translated_messages_overlay": callbackSetEnableSendOnlyTranslatedMessagesOverlay, "callback_set_send_message_button_type": callbackSetSendMessageButtonType, "callback_set_enable_auto_export_message_logs": callbackSetEnableAutoExportMessageLogs, "callback_set_enable_vrc_mic_mute_sync": callbackSetEnableVrcMicMuteSync, diff --git a/locales/en.yml b/locales/en.yml index 2f5cdd0a..fc714817 100644 --- a/locales/en.yml +++ b/locales/en.yml @@ -234,6 +234,9 @@ config_window: send_only_translated_messages: label: "Send Only Translated Messages" + send_only_translated_messages_overlay: + label: "Send Only Translated Messages To Overlay" + send_message_button_type: label: "Send Message Button" hide: "Hide (Use enter key to send)" diff --git a/locales/ja.yml b/locales/ja.yml index 1a194973..4bedb378 100644 --- a/locales/ja.yml +++ b/locales/ja.yml @@ -233,6 +233,9 @@ config_window: send_only_translated_messages: label: "翻訳後のメッセージのみ送信する" + send_only_translated_messages_overlay: + label: "翻訳後のメッセージのみ送信する (Overlay)" + send_message_button_type: label: "メッセージ送信ボタン" hide: "非表示 (エンターキーを使って送信)" diff --git a/locales/ko.yml b/locales/ko.yml index 02e70c0b..7843d53f 100644 --- a/locales/ko.yml +++ b/locales/ko.yml @@ -233,6 +233,9 @@ config_window: send_only_translated_messages: label: "번역된 메시지만 전송" + send_only_translated_messages_overlay: + label: "번역된 메시지만 전송 (Overlay)" + send_message_button_type: label: "메시지 전송 버튼" hide: "숨김 (Enter 키를 사용하여 전송)" diff --git a/locales/zh-Hans.yml b/locales/zh-Hans.yml index 204ee9ee..a6f9d58b 100644 --- a/locales/zh-Hans.yml +++ b/locales/zh-Hans.yml @@ -234,6 +234,9 @@ config_window: send_only_translated_messages: label: "只发送翻译后的信息" + send_only_translated_messages_overlay: + label: "只发送翻译后的信息 (Overlay)" + send_message_button_type: label: "发送信息按钮" hide: "隐藏 (可使用回车发送信息)" diff --git a/locales/zh-Hant.yml b/locales/zh-Hant.yml index 26e79a07..7b31fcb4 100644 --- a/locales/zh-Hant.yml +++ b/locales/zh-Hant.yml @@ -227,6 +227,9 @@ config_window: send_only_translated_messages: label: "僅發送翻譯訊息" + send_only_translated_messages_overlay: + label: "僅發送翻譯訊息 (Overlay)" + send_message_button_type: label: "發送訊息按鈕" hide: "隱藏(使用 Enter 鍵發送)" diff --git a/models/overlay/overlay_image.py b/models/overlay/overlay_image.py index c3150f5e..a27f68d8 100644 --- a/models/overlay/overlay_image.py +++ b/models/overlay/overlay_image.py @@ -2,6 +2,7 @@ from os import path as os_path # from datetime import datetime from typing import Tuple from PIL import Image, ImageDraw, ImageFont +from config import config class OverlayImage: # TEXT_COLOR_LARGE = (223, 223, 223) @@ -216,10 +217,19 @@ class OverlayImage: background_color = ui_colors["background_color"] background_outline_color = ui_colors["background_outline_color"] - img = self.createTextboxShort(message, your_language, text_color, width, height, font_size) - if len(translation) > 0 and target_language is not None: + print("TEST") + print(message, your_language, translation, target_language) + + if len(message) > 0 and len(translation) > 0 and target_language is not None: + img = self.createTextboxShort(message, your_language, text_color, width, height, font_size) translation_img = self.createTextboxShort(translation, target_language, text_color, width, height, font_size) img = self.concatenateImagesVertically(img, translation_img) + else: + if len(message) > 0 and len(translation) == 0 : + img = self.createTextboxShort(message, your_language, text_color, width, height, font_size) + else: + if len(translation) > 0 and target_language is not None: + img = self.createTextboxShort(translation, target_language, text_color, width, height, font_size) background = Image.new("RGBA", img.size, (0, 0, 0, 0)) draw = ImageDraw.Draw(background) diff --git a/view.py b/view.py index 848e10a7..05a4f983 100644 --- a/view.py +++ b/view.py @@ -529,6 +529,11 @@ class View(): CALLBACK_SET_ENABLE_SEND_ONLY_TRANSLATED_MESSAGES=None, VAR_ENABLE_SEND_ONLY_TRANSLATED_MESSAGES=BooleanVar(value=config.ENABLE_SEND_ONLY_TRANSLATED_MESSAGES), + VAR_LABEL_ENABLE_SEND_ONLY_TRANSLATED_MESSAGES_OVERLAY=StringVar(value=i18n.t("config_window.send_only_translated_messages_overlay.label")), + VAR_DESC_ENABLE_SEND_ONLY_TRANSLATED_MESSAGES_OVERLAY=None, + CALLBACK_SET_ENABLE_SEND_ONLY_TRANSLATED_MESSAGES_OVERLAY=None, + VAR_ENABLE_SEND_ONLY_TRANSLATED_MESSAGES_OVERLAY=BooleanVar(value=config.ENABLE_SEND_ONLY_TRANSLATED_MESSAGES_OVERLAY), + VAR_LABEL_SEND_MESSAGE_BUTTON_TYPE=StringVar(value=i18n.t("config_window.send_message_button_type.label")), VAR_DESC_SEND_MESSAGE_BUTTON_TYPE=None, CALLBACK_SET_SEND_MESSAGE_BUTTON_TYPE=None, @@ -798,6 +803,7 @@ class View(): # Others Tab self.view_variable.CALLBACK_SET_ENABLE_AUTO_CLEAR_MESSAGE_BOX=config_window_registers.get("callback_set_enable_auto_clear_chatbox", None) self.view_variable.CALLBACK_SET_ENABLE_SEND_ONLY_TRANSLATED_MESSAGES=config_window_registers.get("callback_set_send_only_translated_messages", None) + self.view_variable.CALLBACK_SET_ENABLE_SEND_ONLY_TRANSLATED_MESSAGES_OVERLAY=config_window_registers.get("callback_set_send_only_translated_messages_overlay", None) self.view_variable.CALLBACK_SET_SEND_MESSAGE_BUTTON_TYPE=config_window_registers.get("callback_set_send_message_button_type", None) self.view_variable.CALLBACK_SET_ENABLE_AUTO_EXPORT_MESSAGE_LOGS=config_window_registers.get("callback_set_enable_auto_export_message_logs", None) diff --git a/vrct_gui/config_window/widgets/createSideMenuAndSettingsBoxContainers/setting_box_containers/setting_box_others/createSettingBox_Others.py b/vrct_gui/config_window/widgets/createSideMenuAndSettingsBoxContainers/setting_box_containers/setting_box_others/createSettingBox_Others.py index 72391a8a..03915eb2 100644 --- a/vrct_gui/config_window/widgets/createSideMenuAndSettingsBoxContainers/setting_box_containers/setting_box_others/createSettingBox_Others.py +++ b/vrct_gui/config_window/widgets/createSideMenuAndSettingsBoxContainers/setting_box_containers/setting_box_others/createSettingBox_Others.py @@ -15,6 +15,9 @@ def createSettingBox_Others(setting_box_wrapper, config_window, settings, view_v def checkboxSendOnlyTranslatedMessagesCallback(checkbox_box_widget): callFunctionIfCallable(view_variable.CALLBACK_SET_ENABLE_SEND_ONLY_TRANSLATED_MESSAGES, checkbox_box_widget.get()) + def checkboxSendOnlyTranslatedMessagesOverlayCallback(checkbox_box_widget): + callFunctionIfCallable(view_variable.CALLBACK_SET_ENABLE_SEND_ONLY_TRANSLATED_MESSAGES_OVERLAY, checkbox_box_widget.get()) + def checkboxSendMessageButtonTypeCallback(): callFunctionIfCallable(view_variable.CALLBACK_SET_SEND_MESSAGE_BUTTON_TYPE, view_variable.VAR_SEND_MESSAGE_BUTTON_TYPE.get()) @@ -53,6 +56,16 @@ def createSettingBox_Others(setting_box_wrapper, config_window, settings, view_v config_window.sb__send_only_translated_messages.grid(row=row) row+=1 + config_window.sb__send_only_translated_messages_overlay = createSettingBoxCheckbox( + for_var_label_text=view_variable.VAR_LABEL_ENABLE_SEND_ONLY_TRANSLATED_MESSAGES_OVERLAY, + for_var_desc_text=view_variable.VAR_DESC_ENABLE_SEND_ONLY_TRANSLATED_MESSAGES_OVERLAY, + checkbox_attr_name="sb__checkbox_send_only_translated_messages_overlay", + command=lambda: checkboxSendOnlyTranslatedMessagesOverlayCallback(config_window.sb__checkbox_send_only_translated_messages_overlay), + variable=view_variable.VAR_ENABLE_SEND_ONLY_TRANSLATED_MESSAGES_OVERLAY, + ) + config_window.sb__send_only_translated_messages_overlay.grid(row=row) + row+=1 + config_window.sb__send_message_button_type = createSettingBoxRadioButtons( for_var_label_text=view_variable.VAR_LABEL_SEND_MESSAGE_BUTTON_TYPE, for_var_desc_text=view_variable.VAR_DESC_SEND_MESSAGE_BUTTON_TYPE, From b019e37b31e00c2ac0e72cfa34e662b73b16ef5b Mon Sep 17 00:00:00 2001 From: McHauge Date: Wed, 27 Nov 2024 16:20:23 +0100 Subject: [PATCH 3/3] remove debug logs --- models/overlay/overlay_image.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/models/overlay/overlay_image.py b/models/overlay/overlay_image.py index a27f68d8..7f5733b7 100644 --- a/models/overlay/overlay_image.py +++ b/models/overlay/overlay_image.py @@ -217,9 +217,6 @@ class OverlayImage: background_color = ui_colors["background_color"] background_outline_color = ui_colors["background_outline_color"] - print("TEST") - print(message, your_language, translation, target_language) - if len(message) > 0 and len(translation) > 0 and target_language is not None: img = self.createTextboxShort(message, your_language, text_color, width, height, font_size) translation_img = self.createTextboxShort(translation, target_language, text_color, width, height, font_size)