👍️ [Update] Model : 日本語ひらがな/ローマ字 変換の実装

ローマ字/ひらがな有効でかつ以下の場合に動作
- 送信の翻訳時にtargetのプライマリが日本語の場合
- 受診時にtargetのプライマリが日本語の場合
This commit is contained in:
misyaguziya
2024-09-12 00:42:49 +09:00
parent ab2dc073b9
commit ce28366278
3 changed files with 47 additions and 9 deletions

View File

@@ -271,12 +271,10 @@ class Model:
self.previous_receive_message = message self.previous_receive_message = message
return repeat_flag return repeat_flag
def convertMessageToRomajiAndHiragana(self, message: str, hiragana:bool, romaji:bool) -> str: def convertMessageToTransliteration(self, message: str) -> str:
data_list = self.kks.convert(message) data_list = self.kks.convert(message)
if
keys_to_keep = {"orig", "hira", "hepburn"} keys_to_keep = {"orig", "hira", "hepburn"}
filtered_list = [] filtered_list = []
for item in data_list: for item in data_list:
filtered_item = {key: value for key, value in item.items() if key in keys_to_keep} filtered_item = {key: value for key, value in item.items() if key in keys_to_keep}
filtered_list.append(filtered_item) filtered_list.append(filtered_item)

View File

@@ -98,6 +98,7 @@ class MicMessage:
elif isinstance(message, str) and len(message) > 0: elif isinstance(message, str) and len(message) > 0:
# addSentMessageLog(message) # addSentMessageLog(message)
translation = [] translation = []
transliteration = []
if model.checkKeywords(message): if model.checkKeywords(message):
self.action("word_filter", { self.action("word_filter", {
"status":200, "status":200,
@@ -121,6 +122,10 @@ class MicMessage:
} }
}) })
if config.ENABLE_CONVERT_MESSAGE_TO_ROMAJI is True or config.ENABLE_CONVERT_MESSAGE_TO_HIRAGANA is True:
if config.SELECTED_TAB_TARGET_LANGUAGES[config.SELECTED_TAB_NO]["primary"]["language"] == "Japanese":
transliteration = model.convertMessageToTransliteration(translation[0])
if config.ENABLE_TRANSCRIPTION_SEND is True: if config.ENABLE_TRANSCRIPTION_SEND is True:
if config.ENABLE_SEND_MESSAGE_TO_VRC is True: if config.ENABLE_SEND_MESSAGE_TO_VRC is True:
if config.ENABLE_SEND_ONLY_TRANSLATED_MESSAGES is True: if config.ENABLE_SEND_ONLY_TRANSLATED_MESSAGES is True:
@@ -136,7 +141,8 @@ class MicMessage:
"status":200, "status":200,
"result": { "result": {
"message":message, "message":message,
"translation":translation "translation":translation,
"transliteration":transliteration
} }
}) })
if config.ENABLE_LOGGER is True: if config.ENABLE_LOGGER is True:
@@ -200,6 +206,7 @@ class SpeakerMessage:
}) })
elif isinstance(message, str) and len(message) > 0: elif isinstance(message, str) and len(message) > 0:
translation = [] translation = []
transliteration = []
if model.detectRepeatReceiveMessage(message): if model.detectRepeatReceiveMessage(message):
return return
elif config.ENABLE_TRANSLATION is False: elif config.ENABLE_TRANSLATION is False:
@@ -215,6 +222,10 @@ class SpeakerMessage:
} }
}) })
if config.ENABLE_CONVERT_MESSAGE_TO_ROMAJI is True or config.ENABLE_CONVERT_MESSAGE_TO_HIRAGANA is True:
if config.SELECTED_TAB_TARGET_LANGUAGES[config.SELECTED_TAB_NO]["primary"]["language"] == "Japanese":
transliteration = model.convertMessageToTransliteration(message)
if config.ENABLE_TRANSCRIPTION_RECEIVE is True: if config.ENABLE_TRANSCRIPTION_RECEIVE is True:
if config.ENABLE_OVERLAY_SMALL_LOG is True: if config.ENABLE_OVERLAY_SMALL_LOG is True:
if model.overlay.initialized is True: if model.overlay.initialized is True:
@@ -236,7 +247,8 @@ class SpeakerMessage:
"status":200, "status":200,
"result": { "result": {
"message":message, "message":message,
"translation":translation "translation":translation,
"transliteration":transliteration,
} }
}) })
if config.ENABLE_LOGGER is True: if config.ENABLE_LOGGER is True:
@@ -290,6 +302,7 @@ class ChatMessage:
if len(message) > 0: if len(message) > 0:
# addSentMessageLog(message) # addSentMessageLog(message)
translation = [] translation = []
transliteration = []
if config.ENABLE_TRANSLATION is False: if config.ENABLE_TRANSLATION is False:
pass pass
else: else:
@@ -303,9 +316,9 @@ class ChatMessage:
} }
}) })
message_romaji = [] if config.ENABLE_CONVERT_MESSAGE_TO_ROMAJI is True or config.ENABLE_CONVERT_MESSAGE_TO_HIRAGANA is True:
if config.ENABLE_CONVERT_MESSAGE_TO_ROMAJI is True or config.ENABLE_CONVERT_MESSAGE_TO_HIRAGANA is True: if config.SELECTED_TAB_TARGET_LANGUAGES[config.SELECTED_TAB_NO]["primary"]["language"] == "Japanese":
message_romaji = model.convertMessageToRomajiAndHiragana(message) transliteration = model.convertMessageToTransliteration(translation[0])
# send OSC message # send OSC message
if config.ENABLE_SEND_MESSAGE_TO_VRC is True: if config.ENABLE_SEND_MESSAGE_TO_VRC is True:
@@ -335,7 +348,7 @@ class ChatMessage:
"id":id, "id":id,
"message":message, "message":message,
"translation":translation, "translation":translation,
"romaji":message_romaji, "transliteration":transliteration,
}, },
} }
@@ -505,6 +518,26 @@ def callbackDisableMultiLanguageTranslation(*args, **kwargs) -> dict:
config.ENABLE_MULTI_LANGUAGE_TRANSLATION = False config.ENABLE_MULTI_LANGUAGE_TRANSLATION = False
return {"status":200, "result":config.ENABLE_MULTI_LANGUAGE_TRANSLATION} return {"status":200, "result":config.ENABLE_MULTI_LANGUAGE_TRANSLATION}
def callbackEnableConvertMessageToRomaji(*args, **kwargs) -> dict:
printLog("Enable Convert Message To Romaji")
config.ENABLE_CONVERT_MESSAGE_TO_ROMAJI = True
return {"status":200, "result":config.ENABLE_CONVERT_MESSAGE_TO_ROMAJI}
def callbackDisableConvertMessageToRomaji(*args, **kwargs) -> dict:
printLog("Disable Convert Message To Romaji")
config.ENABLE_CONVERT_MESSAGE_TO_ROMAJI = False
return {"status":200, "result":config.ENABLE_CONVERT_MESSAGE_TO_ROMAJI}
def callbackEnableConvertMessageToHiragana(*args, **kwargs) -> dict:
printLog("Enable Convert Message To Hiragana")
config.ENABLE_CONVERT_MESSAGE_TO_HIRAGANA = True
return {"status":200, "result":config.ENABLE_CONVERT_MESSAGE_TO_HIRAGANA}
def callbackDisableConvertMessageToHiragana(*args, **kwargs) -> dict:
printLog("Disable Convert Message To Hiragana")
config.ENABLE_CONVERT_MESSAGE_TO_HIRAGANA = False
return {"status":200, "result":config.ENABLE_CONVERT_MESSAGE_TO_HIRAGANA}
def callbackEnableMainWindowSidebarCompactMode(*args, **kwargs) -> dict: def callbackEnableMainWindowSidebarCompactMode(*args, **kwargs) -> dict:
printLog("Enable MainWindow Sidebar Compact Mode") printLog("Enable MainWindow Sidebar Compact Mode")
config.IS_MAIN_WINDOW_SIDEBAR_COMPACT_MODE = True config.IS_MAIN_WINDOW_SIDEBAR_COMPACT_MODE = True

View File

@@ -30,6 +30,8 @@ config_mapping = {
"/config/selected_tab_target_languages": "SELECTED_TAB_TARGET_LANGUAGES", "/config/selected_tab_target_languages": "SELECTED_TAB_TARGET_LANGUAGES",
"/config/selected_transcription_engine": "SELECTED_TRANSCRIPTION_ENGINE", "/config/selected_transcription_engine": "SELECTED_TRANSCRIPTION_ENGINE",
"/config/enable_multi_translation": "ENABLE_MULTI_LANGUAGE_TRANSLATION", "/config/enable_multi_translation": "ENABLE_MULTI_LANGUAGE_TRANSLATION",
"/config/enable_convert_message_to_romaji": "ENABLE_CONVERT_MESSAGE_TO_ROMAJI",
"/config/enable_convert_message_to_hiragana": "ENABLE_CONVERT_MESSAGE_TO_HIRAGANA",
"/config/is_main_window_sidebar_compact_mode": "IS_MAIN_WINDOW_SIDEBAR_COMPACT_MODE", "/config/is_main_window_sidebar_compact_mode": "IS_MAIN_WINDOW_SIDEBAR_COMPACT_MODE",
"/config/transparency": "TRANSPARENCY", "/config/transparency": "TRANSPARENCY",
"/config/appearance_theme": "APPEARANCE_THEME", "/config/appearance_theme": "APPEARANCE_THEME",
@@ -98,6 +100,10 @@ controller_mapping = {
"/controller/callback_close_config_window": controller.callbackCloseConfigWindow, "/controller/callback_close_config_window": controller.callbackCloseConfigWindow,
"/controller/callback_enable_multi_language_translation": controller.callbackEnableMultiLanguageTranslation, "/controller/callback_enable_multi_language_translation": controller.callbackEnableMultiLanguageTranslation,
"/controller/callback_disable_multi_language_translation": controller.callbackDisableMultiLanguageTranslation, "/controller/callback_disable_multi_language_translation": controller.callbackDisableMultiLanguageTranslation,
"/controller/callback_enable_convert_message_to_romaji": controller.callbackEnableConvertMessageToRomaji,
"/controller/callback_disable_convert_message_to_romaji": controller.callbackDisableConvertMessageToRomaji,
"/controller/callback_enable_convert_message_to_hiragana": controller.callbackEnableConvertMessageToHiragana,
"/controller/callback_disable_convert_message_to_hiragana": controller.callbackDisableConvertMessageToHiragana,
"/controller/callback_enable_main_window_sidebar_compact_mode": controller.callbackEnableMainWindowSidebarCompactMode, "/controller/callback_enable_main_window_sidebar_compact_mode": controller.callbackEnableMainWindowSidebarCompactMode,
"/controller/callback_disable_main_window_sidebar_compact_mode": controller.callbackDisableMainWindowSidebarCompactMode, "/controller/callback_disable_main_window_sidebar_compact_mode": controller.callbackDisableMainWindowSidebarCompactMode,
"/controller/callback_enable_translation": controller.callbackEnableTranslation, "/controller/callback_enable_translation": controller.callbackEnableTranslation,
@@ -331,6 +337,7 @@ if __name__ == "__main__":
match endpoint: match endpoint:
case "/controller/callback_messagebox_send": case "/controller/callback_messagebox_send":
# handleControllerRequest("/controller/callback_enable_translation") # handleControllerRequest("/controller/callback_enable_translation")
# handleControllerRequest("/controller/callback_enable_convert_message_to_romaji")
data = {"id":"123456", "message":"テスト"} data = {"id":"123456", "message":"テスト"}
case "/controller/callback_selected_translation_engine": case "/controller/callback_selected_translation_engine":
data = "DeepL" data = "DeepL"