👍️[Update] Model : translation モデルロード時のマスク処理を追加

モデルデータをgcするコードを削除
重複する処理を関数化
This commit is contained in:
misyaguziya
2024-05-10 16:44:36 +09:00
parent bbde617414
commit cdea680f08
3 changed files with 44 additions and 60 deletions

View File

@@ -404,7 +404,6 @@ def callbackToggleTranslation(is_turned_on):
model.changeTranslatorCTranslate2Model()
view.printToTextbox_enableTranslation()
else:
# model.clearTranslatorCTranslate2Model()
view.printToTextbox_disableTranslation()
def callbackToggleTranscriptionSend(is_turned_on):

View File

@@ -106,9 +106,6 @@ class Model:
def isLoadedCTranslate2Model(self):
return self.translator.isLoadedCTranslate2Model()
# def clearTranslatorCTranslate2Model(self):
# self.translator.clearCTranslate2Model()
def checkTranscriptionWhisperModelWeight(self):
return checkWhisperWeight(config.PATH_LOCAL, config.WHISPER_WEIGHT_TYPE)
@@ -168,67 +165,62 @@ class Model:
compatible_engines.remove('DeepL_API')
return compatible_engines
def getTranslate(self, translator_name, source_language, target_language, target_country, message):
success_flag = False
translation = self.translator.translate(
translator_name=translator_name,
source_language=source_language,
target_language=target_language,
target_country=target_country,
message=message
)
# 翻訳失敗時のフェールセーフ処理
if translation is True:
success_flag = True
else:
while True:
translation = self.translator.translate(
translator_name="CTranslate2",
source_language=source_language,
target_language=target_language,
target_country=target_country,
message=message
)
if translation is not False:
break
sleep(0.1)
return translation, success_flag
def getInputTranslate(self, message):
translation_success_flag = True
translator_name=config.CHOICE_INPUT_TRANSLATOR
source_language=config.SOURCE_LANGUAGE
target_language=config.TARGET_LANGUAGE
target_country = config.TARGET_COUNTRY
translation = self.translator.translate(
translator_name=translator_name,
source_language=source_language,
target_language=target_language,
target_country=target_country,
message=message
)
# 翻訳失敗時のフェールセーフ処理
if translation is False:
translation_success_flag = False
while True:
translation = self.translator.translate(
translator_name="CTranslate2",
source_language=source_language,
target_language=target_language,
target_country=target_country,
message=message
)
if translation is not False:
break
sleep(0.1)
return translation, translation_success_flag
translation, success_flag = self.getTranslate(
translator_name,
source_language,
target_language,
target_country,
message
)
return translation, success_flag
def getOutputTranslate(self, message):
translation_success_flag = True
translator_name=config.CHOICE_OUTPUT_TRANSLATOR
source_language=config.TARGET_LANGUAGE
target_language=config.SOURCE_LANGUAGE
target_country=config.SOURCE_COUNTRY
translation = self.translator.translate(
translator_name=translator_name,
source_language=source_language,
target_language=target_language,
target_country=target_country,
message=message
)
# 翻訳失敗時のフェールセーフ処理
if translation is False:
translation_success_flag = False
while True:
translation = self.translator.translate(
translator_name="CTranslate2",
source_language=source_language,
target_language=target_language,
target_country=target_country,
message=message
)
if translation is not False:
break
sleep(0.1)
return translation, translation_success_flag
translation, success_flag = self.getTranslate(
translator_name,
source_language,
target_language,
target_country,
message
)
return translation, success_flag
def addKeywords(self):
for f in config.INPUT_MIC_WORD_FILTER:

View File

@@ -1,4 +1,3 @@
import gc
import os
from deepl import Translator as deepl_Translator
from translators import translate_text as other_web_Translator
@@ -27,6 +26,7 @@ class Translator():
return result
def changeCTranslate2Model(self, path, model_type):
self.is_loaded_ctranslate2_model = False
directory_name = ctranslate2_weights[model_type]["directory_name"]
tokenizer = ctranslate2_weights[model_type]["tokenizer"]
weight_path = os.path.join(path, "weights", "ctranslate2", directory_name)
@@ -50,13 +50,6 @@ class Translator():
def isLoadedCTranslate2Model(self):
return self.is_loaded_ctranslate2_model
# def clearCTranslate2Model(self):
# del self.ctranslate2_translator
# del self.ctranslate2_tokenizer
# gc.collect()
# self.ctranslate2_translator = None
# self.ctranslate2_tokenizer = None
def translateCTranslate2(self, message, source_language, target_language):
result = False
if self.is_loaded_ctranslate2_model is True: