🐛[bugfix] Model : mute同期が動作していない問題を修正
- 起動時にmuteselfしているかどうか監視するように変更 - VRChatが起動指定な場合にgetOSCParameterValueがエラーになる問題を修正 - config移行の状態遷移によるmute状態の初期化問題を修正
This commit is contained in:
@@ -858,7 +858,11 @@ def callbackSetEnableAutoExportMessageLogs(value):
|
|||||||
def callbackSetEnableVrcMicMuteSync(value):
|
def callbackSetEnableVrcMicMuteSync(value):
|
||||||
print("callbackSetEnableVrcMicMuteSync", value)
|
print("callbackSetEnableVrcMicMuteSync", value)
|
||||||
config.ENABLE_VRC_MIC_MUTE_SYNC = value
|
config.ENABLE_VRC_MIC_MUTE_SYNC = value
|
||||||
model.changePutQueueMicAudio()
|
if config.ENABLE_VRC_MIC_MUTE_SYNC is True:
|
||||||
|
model.startCheckMuteSelfStatus()
|
||||||
|
else:
|
||||||
|
model.stopCheckMuteSelfStatus()
|
||||||
|
|
||||||
|
|
||||||
def callbackSetEnableSendMessageToVrc(value):
|
def callbackSetEnableSendMessageToVrc(value):
|
||||||
print("callbackSetEnableSendMessageToVrc", value)
|
print("callbackSetEnableSendMessageToVrc", value)
|
||||||
@@ -981,6 +985,8 @@ def createMainWindow(splash):
|
|||||||
|
|
||||||
# init OSC receive
|
# init OSC receive
|
||||||
model.startReceiveOSC()
|
model.startReceiveOSC()
|
||||||
|
if config.ENABLE_VRC_MIC_MUTE_SYNC is True:
|
||||||
|
model.startCheckMuteSelfStatus()
|
||||||
|
|
||||||
splash.toProgress(3) # Last one.
|
splash.toProgress(3) # Last one.
|
||||||
|
|
||||||
|
|||||||
57
model.py
57
model.py
@@ -77,7 +77,8 @@ class Model:
|
|||||||
self.translator = Translator()
|
self.translator = Translator()
|
||||||
self.keyword_processor = KeywordProcessor()
|
self.keyword_processor = KeywordProcessor()
|
||||||
self.mic_audio_queue = None
|
self.mic_audio_queue = None
|
||||||
self.mute_status = False
|
self.mic_mute_status = None
|
||||||
|
self.mic_mute_status_check = None
|
||||||
|
|
||||||
def checkCTranslatorCTranslate2ModelWeight(self):
|
def checkCTranslatorCTranslate2ModelWeight(self):
|
||||||
return checkCTranslate2Weight(config.PATH_LOCAL, config.CTRANSLATE2_WEIGHT_TYPE)
|
return checkCTranslate2Weight(config.PATH_LOCAL, config.CTRANSLATE2_WEIGHT_TYPE)
|
||||||
@@ -224,20 +225,37 @@ class Model:
|
|||||||
def getMuteSelfStatus():
|
def getMuteSelfStatus():
|
||||||
return getOSCParameterValue(address="/avatar/parameters/MuteSelf")
|
return getOSCParameterValue(address="/avatar/parameters/MuteSelf")
|
||||||
|
|
||||||
|
def startCheckMuteSelfStatus(self):
|
||||||
|
def checkMuteSelfStatus():
|
||||||
|
if self.mic_mute_status is not None:
|
||||||
|
self.stopCheckMuteSelfStatus()
|
||||||
|
|
||||||
|
status = self.getMuteSelfStatus()
|
||||||
|
if status is not None:
|
||||||
|
self.mic_mute_status = status
|
||||||
|
self.stopCheckMuteSelfStatus()
|
||||||
|
|
||||||
|
if not isinstance(self.mic_mute_status_check, threadFnc):
|
||||||
|
self.mic_mute_status_check = threadFnc(checkMuteSelfStatus)
|
||||||
|
self.mic_mute_status_check.daemon = True
|
||||||
|
self.mic_mute_status_check.start()
|
||||||
|
|
||||||
|
def stopCheckMuteSelfStatus(self):
|
||||||
|
if isinstance(self.mic_mute_status_check, threadFnc):
|
||||||
|
self.mic_mute_status_check.stop()
|
||||||
|
self.mic_mute_status_check = None
|
||||||
|
|
||||||
def startReceiveOSC(self):
|
def startReceiveOSC(self):
|
||||||
osc_parameter_prefix = "/avatar/parameters/"
|
osc_parameter_prefix = "/avatar/parameters/"
|
||||||
param_MuteSelf = "MuteSelf"
|
param_MuteSelf = "MuteSelf"
|
||||||
self.mute_status = self.getMuteSelfStatus()
|
|
||||||
|
|
||||||
def change_handler_mute(address, osc_arguments):
|
def change_handler_mute(address, osc_arguments):
|
||||||
if osc_arguments is True and self.mute_status is False:
|
if osc_arguments is True and self.mic_mute_status is False:
|
||||||
self.mute_status = True
|
self.mic_mute_status = osc_arguments
|
||||||
if config.ENABLE_VRC_MIC_MUTE_SYNC is True:
|
self.changeMicTranscriptStatus()
|
||||||
self.stopPutQueueMicAudio()
|
elif osc_arguments is False and self.mic_mute_status is True:
|
||||||
elif osc_arguments is False and self.mute_status is True:
|
self.mic_mute_status = osc_arguments
|
||||||
self.mute_status = False
|
self.changeMicTranscriptStatus()
|
||||||
if config.ENABLE_VRC_MIC_MUTE_SYNC is True:
|
|
||||||
self.startPutQueueMicAudio()
|
|
||||||
|
|
||||||
dict_filter_and_target = {
|
dict_filter_and_target = {
|
||||||
osc_parameter_prefix + param_MuteSelf: change_handler_mute,
|
osc_parameter_prefix + param_MuteSelf: change_handler_mute,
|
||||||
@@ -324,7 +342,6 @@ class Model:
|
|||||||
|
|
||||||
self.mic_audio_queue = Queue()
|
self.mic_audio_queue = Queue()
|
||||||
# self.mic_energy_queue = Queue()
|
# self.mic_energy_queue = Queue()
|
||||||
self.changePutQueueMicAudio()
|
|
||||||
|
|
||||||
mic_device = choice_mic_device[0]
|
mic_device = choice_mic_device[0]
|
||||||
record_timeout = config.INPUT_MIC_RECORD_TIMEOUT
|
record_timeout = config.INPUT_MIC_RECORD_TIMEOUT
|
||||||
@@ -383,7 +400,9 @@ class Model:
|
|||||||
# self.mic_get_energy.daemon = True
|
# self.mic_get_energy.daemon = True
|
||||||
# self.mic_get_energy.start()
|
# self.mic_get_energy.start()
|
||||||
|
|
||||||
def startPutQueueMicAudio(self):
|
self.changeMicTranscriptStatus()
|
||||||
|
|
||||||
|
def resumeMicTranscript(self):
|
||||||
# キューをクリア
|
# キューをクリア
|
||||||
if isinstance(self.mic_audio_queue, Queue):
|
if isinstance(self.mic_audio_queue, Queue):
|
||||||
while not self.mic_audio_queue.empty():
|
while not self.mic_audio_queue.empty():
|
||||||
@@ -397,7 +416,7 @@ class Model:
|
|||||||
if isinstance(self.mic_audio_recorder, SelectedMicEnergyAndAudioRecorder):
|
if isinstance(self.mic_audio_recorder, SelectedMicEnergyAndAudioRecorder):
|
||||||
self.mic_audio_recorder.resume()
|
self.mic_audio_recorder.resume()
|
||||||
|
|
||||||
def stopPutQueueMicAudio(self):
|
def pauseMicTranscript(self):
|
||||||
# 文字起こしを一時停止
|
# 文字起こしを一時停止
|
||||||
# if isinstance(self.mic_print_transcript, threadFnc):
|
# if isinstance(self.mic_print_transcript, threadFnc):
|
||||||
# self.mic_print_transcript.pause()
|
# self.mic_print_transcript.pause()
|
||||||
@@ -406,14 +425,16 @@ class Model:
|
|||||||
if isinstance(self.mic_audio_recorder, SelectedMicEnergyAndAudioRecorder):
|
if isinstance(self.mic_audio_recorder, SelectedMicEnergyAndAudioRecorder):
|
||||||
self.mic_audio_recorder.pause()
|
self.mic_audio_recorder.pause()
|
||||||
|
|
||||||
def changePutQueueMicAudio(self):
|
def changeMicTranscriptStatus(self):
|
||||||
if config.ENABLE_VRC_MIC_MUTE_SYNC is True:
|
if config.ENABLE_VRC_MIC_MUTE_SYNC is True:
|
||||||
if self.mute_status is True:
|
if self.mic_mute_status is True:
|
||||||
self.stopPutQueueMicAudio()
|
self.pauseMicTranscript()
|
||||||
|
elif self.mic_mute_status is False:
|
||||||
|
self.resumeMicTranscript()
|
||||||
else:
|
else:
|
||||||
self.startPutQueueMicAudio()
|
pass
|
||||||
else:
|
else:
|
||||||
self.startPutQueueMicAudio()
|
self.resumeMicTranscript()
|
||||||
|
|
||||||
def stopMicTranscript(self):
|
def stopMicTranscript(self):
|
||||||
if isinstance(self.mic_print_transcript, threadFnc):
|
if isinstance(self.mic_print_transcript, threadFnc):
|
||||||
|
|||||||
@@ -49,12 +49,18 @@ def sendChangeVoice(ip_address="127.0.0.1", port=9000):
|
|||||||
sleep(0.05)
|
sleep(0.05)
|
||||||
|
|
||||||
def getOSCParameterValue(address, server_name="VRChat-Client"):
|
def getOSCParameterValue(address, server_name="VRChat-Client"):
|
||||||
browser = OSCQueryBrowser()
|
value = None
|
||||||
sleep(1)
|
try:
|
||||||
service = browser.find_service_by_name(server_name)
|
browser = OSCQueryBrowser()
|
||||||
oscq = OSCQueryClient(service)
|
sleep(1)
|
||||||
mute_self_node = oscq.query_node(address)
|
service = browser.find_service_by_name(server_name)
|
||||||
return mute_self_node.value[0]
|
if service is not None:
|
||||||
|
oscq = OSCQueryClient(service)
|
||||||
|
mute_self_node = oscq.query_node(address)
|
||||||
|
value = mute_self_node.value[0]
|
||||||
|
except Exception:
|
||||||
|
pass
|
||||||
|
return value
|
||||||
|
|
||||||
def receiveOscParameters(dict_filter_and_target, ip_address="127.0.0.1", title="VRCT"):
|
def receiveOscParameters(dict_filter_and_target, ip_address="127.0.0.1", title="VRCT"):
|
||||||
osc_port = get_open_udp_port()
|
osc_port = get_open_udp_port()
|
||||||
|
|||||||
Reference in New Issue
Block a user