From d3c206fb26ded71ad6e731dc670498a4e8fab121 Mon Sep 17 00:00:00 2001 From: misyaguziya <53165965+misyaguziya@users.noreply.github.com> Date: Mon, 15 Sep 2025 05:33:30 +0900 Subject: [PATCH] [Add] Implement Transliterator class for kanji and okurigana analysis; update requirements and spec files --- backend.spec | 2 +- backend_cuda.spec | 2 +- requirements.txt | 4 +++- requirements_cuda.txt | 4 +++- src-python/model.py | 6 +++--- ...literate_japanese.py => transliterate_transliterator.py} | 0 6 files changed, 11 insertions(+), 7 deletions(-) rename src-python/models/transliterate/{transliterate_japanese.py => transliterate_transliterator.py} (100%) diff --git a/backend.spec b/backend.spec index 3933d942..c5c33da0 100644 --- a/backend.spec +++ b/backend.spec @@ -5,7 +5,7 @@ a = Analysis( ['src-python\\mainloop.py'], pathex=[], binaries=[], - datas=[('./fonts', 'fonts/'), ('.venv/Lib/site-packages/zeroconf', 'zeroconf/'), ('.venv/Lib/site-packages/openvr', 'openvr/'), ('.venv/Lib/site-packages/pykakasi', 'pykakasi/'), ('.venv/Lib/site-packages/faster_whisper', 'faster_whisper/'), ('.venv/Lib/site-packages/hf_xet', 'hf_xet/')], + datas=[('./fonts', 'fonts/'), ('.venv/Lib/site-packages/zeroconf', 'zeroconf/'), ('.venv/Lib/site-packages/openvr', 'openvr/'), ('.venv/Lib/site-packages/faster_whisper', 'faster_whisper/'), ('.venv/Lib/site-packages/hf_xet', 'hf_xet/')], hiddenimports=[], hookspath=[], hooksconfig={}, diff --git a/backend_cuda.spec b/backend_cuda.spec index 08ba5fd7..e9cb35c8 100644 --- a/backend_cuda.spec +++ b/backend_cuda.spec @@ -5,7 +5,7 @@ a = Analysis( ['src-python\\mainloop.py'], pathex=[], binaries=[], - datas=[('./fonts', 'fonts/'), ('.venv_cuda/Lib/site-packages/zeroconf', 'zeroconf/'), ('.venv_cuda/Lib/site-packages/openvr', 'openvr/'), ('.venv_cuda/Lib/site-packages/pykakasi', 'pykakasi/'), ('.venv_cuda/Lib/site-packages/faster_whisper', 'faster_whisper/'), ('.venv/Lib/site-packages/hf_xet', 'hf_xet/')], + datas=[('./fonts', 'fonts/'), ('.venv_cuda/Lib/site-packages/zeroconf', 'zeroconf/'), ('.venv_cuda/Lib/site-packages/openvr', 'openvr/'), ('.venv_cuda/Lib/site-packages/faster_whisper', 'faster_whisper/'), ('.venv/Lib/site-packages/hf_xet', 'hf_xet/')], hiddenimports=[], hookspath=[], hooksconfig={}, diff --git a/requirements.txt b/requirements.txt index 244a9238..11f1d694 100644 --- a/requirements.txt +++ b/requirements.txt @@ -13,12 +13,14 @@ sentencepiece==0.2.0 openvr==1.26.701 pydub==0.25.1 psutil==5.9.8 -pykakasi==2.3.0 pycaw==20240210 websockets==15.0.1 huggingface_hub==0.32.2 hf-xet==1.1.2 setuptools==80.8.0 +SudachiPy==0.6.10 +SudachiDict-core==20250825 +SudachiDict-full==20250825 translators @ git+https://github.com/misyaguziya/translators@5.9.2.1 SpeechRecognition @ git+https://github.com/misyaguziya/custom_speech_recognition@3.10.4.1 tinyoscquery @ git+https://github.com/cyberkitsune/tinyoscquery@0.1.3 \ No newline at end of file diff --git a/requirements_cuda.txt b/requirements_cuda.txt index 4dadf192..cc0743df 100644 --- a/requirements_cuda.txt +++ b/requirements_cuda.txt @@ -14,12 +14,14 @@ sentencepiece==0.2.0 openvr==1.26.701 pydub==0.25.1 psutil==5.9.8 -pykakasi==2.3.0 pycaw==20240210 websockets==15.0.1 huggingface_hub==0.32.2 hf-xet==1.1.2 setuptools==80.8.0 +SudachiPy==0.6.10 +SudachiDict-core==20250825 +SudachiDict-full==20250825 translators @ git+https://github.com/misyaguziya/translators@5.9.2.1 SpeechRecognition @ git+https://github.com/misyaguziya/custom_speech_recognition@3.10.4.1 tinyoscquery @ git+https://github.com/cyberkitsune/tinyoscquery@0.1.3 \ No newline at end of file diff --git a/src-python/model.py b/src-python/model.py index f7f1462c..797f7bee 100644 --- a/src-python/model.py +++ b/src-python/model.py @@ -14,7 +14,6 @@ from typing import Callable from packaging.version import parse from flashtext import KeywordProcessor -from pykakasi import kakasi from device_manager import device_manager from config import config @@ -28,6 +27,7 @@ from models.translation.translation_languages import translation_lang from models.transcription.transcription_languages import transcription_lang from models.translation.translation_utils import checkCTranslate2Weight, downloadCTranslate2Weight, downloadCTranslate2Tokenizer from models.transcription.transcription_whisper import checkWhisperWeight, downloadWhisperWeight +from models.transliterate.transliterate_transliterator import Transliterator from models.overlay.overlay import Overlay from models.overlay.overlay_image import OverlayImage from models.watchdog.watchdog import Watchdog @@ -99,7 +99,7 @@ class Model: self.overlay_image = OverlayImage(config.PATH_LOCAL) self.mic_audio_queue = None self.mic_mute_status = None - self.kks = kakasi() + self.transliterator = Transliterator() self.watchdog = Watchdog(config.WATCHDOG_TIMEOUT, config.WATCHDOG_INTERVAL) self.osc_handler = OSCHandler(config.OSC_IP_ADDRESS, config.OSC_PORT) self.websocket_server = None @@ -285,7 +285,7 @@ class Model: if romaji: keys_to_keep.add("hepburn") - data_list = self.kks.convert(message) + data_list = self.transliterator.analyze(message, use_macron=False) filtered_list = [ {key: value for key, value in item.items() if key in keys_to_keep} for item in data_list diff --git a/src-python/models/transliterate/transliterate_japanese.py b/src-python/models/transliterate/transliterate_transliterator.py similarity index 100% rename from src-python/models/transliterate/transliterate_japanese.py rename to src-python/models/transliterate/transliterate_transliterator.py