👍️[Update] Model : OSC Parameterを能動的に取得する処理を追加/mute同期機能を修正
This commit is contained in:
37
model.py
37
model.py
@@ -17,7 +17,7 @@ from typing import Callable
|
||||
from flashtext import KeywordProcessor
|
||||
from models.translation.translation_translator import Translator
|
||||
from models.transcription.transcription_utils import getInputDevices, getOutputDevices
|
||||
from models.osc.osc_tools import sendTyping, sendMessage, receiveOscParameters
|
||||
from models.osc.osc_tools import sendTyping, sendMessage, receiveOscParameters, getOSCParameterValue
|
||||
from models.transcription.transcription_recorder import SelectedMicEnergyAndAudioRecorder, SelectedSpeakerEnergyAndAudioRecorder
|
||||
from models.transcription.transcription_recorder import SelectedMicEnergyRecorder, SelectedSpeakerEnergyRecorder
|
||||
from models.transcription.transcription_transcriber import AudioTranscriber
|
||||
@@ -79,8 +79,7 @@ class Model:
|
||||
self.speaker_energy_plot_progressbar = None
|
||||
self.translator = Translator()
|
||||
self.keyword_processor = KeywordProcessor()
|
||||
self.mic_audio_queue = ConditionalQueue()
|
||||
# self.mic_energy_queue = ConditionalQueue()
|
||||
self.mic_audio_queue = None
|
||||
self.mute_status = False
|
||||
|
||||
def checkCTranslatorCTranslate2ModelWeight(self):
|
||||
@@ -227,7 +226,7 @@ class Model:
|
||||
def startReceiveOSC(self):
|
||||
osc_parameter_prefix = "/avatar/parameters/"
|
||||
param_MuteSelf = "MuteSelf"
|
||||
param_Voice = "Voice"
|
||||
self.mute_status = getOSCParameterValue(address=osc_parameter_prefix + param_MuteSelf)
|
||||
|
||||
def change_handler_mute(address, osc_arguments):
|
||||
if config.ENABLE_MUTE_DETECT is True:
|
||||
@@ -238,18 +237,11 @@ class Model:
|
||||
self.startPutQueueMicAudio()
|
||||
self.mute_status = False
|
||||
|
||||
def change_handler_voice(address, osc_arguments):
|
||||
if config.ENABLE_MUTE_DETECT is True:
|
||||
if self.mute_status is True:
|
||||
self.startPutQueueMicAudio()
|
||||
self.mute_status = False
|
||||
|
||||
dict_filter_and_target = {
|
||||
osc_parameter_prefix + param_MuteSelf: change_handler_mute,
|
||||
osc_parameter_prefix + param_Voice: change_handler_voice,
|
||||
}
|
||||
|
||||
th_osc_server = threadFnc(receiveOscParameters, args=(dict_filter_and_target,))
|
||||
th_osc_server = Thread(target=receiveOscParameters, args=(dict_filter_and_target,))
|
||||
th_osc_server.daemon = True
|
||||
th_osc_server.start()
|
||||
|
||||
@@ -330,6 +322,9 @@ class Model:
|
||||
|
||||
self.mic_audio_queue = ConditionalQueue()
|
||||
# self.mic_energy_queue = ConditionalQueue()
|
||||
if config.ENABLE_MUTE_DETECT is True and self.mute_status is True:
|
||||
model.stopPutQueueMicAudio()
|
||||
|
||||
mic_device = choice_mic_device[0]
|
||||
record_timeout = config.INPUT_MIC_RECORD_TIMEOUT
|
||||
phase_timeout = config.INPUT_MIC_PHRASE_TIMEOUT
|
||||
@@ -388,16 +383,18 @@ class Model:
|
||||
# self.mic_get_energy.start()
|
||||
|
||||
def startPutQueueMicAudio(self):
|
||||
while not self.mic_audio_queue.empty():
|
||||
self.mic_audio_queue.get()
|
||||
self.mic_audio_queue.set_flag(True)
|
||||
# self.mic_energy_queue.set_flag(True)
|
||||
if isinstance(self.mic_audio_queue, ConditionalQueue):
|
||||
while not self.mic_audio_queue.empty():
|
||||
self.mic_audio_queue.get()
|
||||
self.mic_audio_queue.set_flag(True)
|
||||
# self.mic_energy_queue.set_flag(True)
|
||||
|
||||
def stopPutQueueMicAudio(self):
|
||||
self.mic_audio_queue.set_flag(False)
|
||||
while not self.mic_audio_queue.empty():
|
||||
self.mic_audio_queue.get()
|
||||
# self.mic_energy_queue.set_flag(False)
|
||||
if isinstance(self.mic_audio_queue, ConditionalQueue):
|
||||
self.mic_audio_queue.set_flag(False)
|
||||
while not self.mic_audio_queue.empty():
|
||||
self.mic_audio_queue.get()
|
||||
# self.mic_energy_queue.set_flag(False)
|
||||
|
||||
def stopMicTranscript(self):
|
||||
if isinstance(self.mic_print_transcript, threadFnc):
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
from time import sleep
|
||||
from threading import Thread
|
||||
from pythonosc import osc_message_builder
|
||||
from pythonosc import udp_client
|
||||
from pythonosc import dispatcher
|
||||
from pythonosc import osc_server
|
||||
from tinyoscquery.queryservice import OSCQueryService
|
||||
from tinyoscquery.query import OSCQueryBrowser, OSCQueryClient
|
||||
from tinyoscquery.utility import get_open_udp_port, get_open_tcp_port
|
||||
|
||||
# send OSC message typing
|
||||
@@ -48,6 +48,13 @@ def sendChangeVoice(ip_address="127.0.0.1", port=9000):
|
||||
sendInputVoice(flag=0, ip_address=ip_address, port=port)
|
||||
sleep(0.05)
|
||||
|
||||
def getOSCParameterValue(address, server_name="VRChat-Client"):
|
||||
browser = OSCQueryBrowser()
|
||||
sleep(1)
|
||||
service = browser.find_service_by_name(server_name)
|
||||
oscq = OSCQueryClient(service)
|
||||
mute_self_node = oscq.query_node(address)
|
||||
return mute_self_node.value[0]
|
||||
|
||||
def receiveOscParameters(dict_filter_and_target, ip_address="127.0.0.1", title="VRCT"):
|
||||
osc_port = get_open_udp_port()
|
||||
|
||||
Reference in New Issue
Block a user