Merge pull request #32 from McHauge/add-send_only_translated_messages_overlay

Add send only translated messages overlay
This commit is contained in:
misya
2024-11-30 17:23:45 +09:00
committed by GitHub
11 changed files with 69 additions and 7 deletions

View File

@@ -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,

View File

@@ -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,

View File

@@ -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)"

View File

@@ -233,6 +233,9 @@ config_window:
send_only_translated_messages:
label: "翻訳後のメッセージのみ送信する"
send_only_translated_messages_overlay:
label: "翻訳後のメッセージのみ送信する (Overlay)"
send_message_button_type:
label: "メッセージ送信ボタン"
hide: "非表示 (エンターキーを使って送信)"

View File

@@ -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 키를 사용하여 전송)"

View File

@@ -234,6 +234,9 @@ config_window:
send_only_translated_messages:
label: "只发送翻译后的信息"
send_only_translated_messages_overlay:
label: "只发送翻译后的信息 (Overlay)"
send_message_button_type:
label: "发送信息按钮"
hide: "隐藏 (可使用回车发送信息)"

View File

@@ -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 鍵發送)"

View File

@@ -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,16 @@ 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:
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)

View File

@@ -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

View File

@@ -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)

View File

@@ -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,