Merge branch 'automatic_device_selection' into for_webui

This commit is contained in:
misyaguziya
2024-09-13 13:37:23 +09:00
3 changed files with 77 additions and 35 deletions

View File

@@ -457,6 +457,17 @@ class Config:
self._MAIN_WINDOW_GEOMETRY[key] = value
saveJson(self.PATH_CONFIG, inspect.currentframe().f_code.co_name, self.MAIN_WINDOW_GEOMETRY)
@property
@json_serializable('INPUT_MIC_AUTOMATIC_SELECTION')
def INPUT_MIC_AUTOMATIC_SELECTION(self):
return self._INPUT_MIC_AUTOMATIC_SELECTION
@INPUT_MIC_AUTOMATIC_SELECTION.setter
def INPUT_MIC_AUTOMATIC_SELECTION(self, value):
if isinstance(value, bool):
self._INPUT_MIC_AUTOMATIC_SELECTION = value
saveJson(self.PATH_CONFIG, inspect.currentframe().f_code.co_name, value)
@property
@json_serializable('CHOICE_MIC_HOST')
def CHOICE_MIC_HOST(self):
@@ -567,6 +578,17 @@ class Config:
self._INPUT_MIC_NO_SPEECH_PROB = value
saveJson(self.PATH_CONFIG, inspect.currentframe().f_code.co_name, value)
@property
@json_serializable('INPUT_SPEAKER_AUTOMATIC_SELECTION')
def INPUT_SPEAKER_AUTOMATIC_SELECTION(self):
return self._INPUT_SPEAKER_AUTOMATIC_SELECTION
@INPUT_SPEAKER_AUTOMATIC_SELECTION.setter
def INPUT_SPEAKER_AUTOMATIC_SELECTION(self, value):
if isinstance(value, bool):
self._INPUT_SPEAKER_AUTOMATIC_SELECTION = value
saveJson(self.PATH_CONFIG, inspect.currentframe().f_code.co_name, value)
@property
@json_serializable('CHOICE_SPEAKER_DEVICE')
def CHOICE_SPEAKER_DEVICE(self):
@@ -1117,6 +1139,7 @@ class Config:
"width": "870",
"height": "654",
}
self._INPUT_MIC_AUTOMATIC_SELECTION = True
self._CHOICE_MIC_HOST = getDefaultInputDevice()["host"]["name"]
self._CHOICE_MIC_DEVICE = getDefaultInputDevice()["device"]["name"]
self._INPUT_MIC_ENERGY_THRESHOLD = 300
@@ -1127,6 +1150,7 @@ class Config:
self._INPUT_MIC_WORD_FILTER = []
self._INPUT_MIC_AVG_LOGPROB=-0.8
self._INPUT_MIC_NO_SPEECH_PROB=0.6
self._INPUT_SPEAKER_AUTOMATIC_SELECTION = True
self._CHOICE_SPEAKER_DEVICE = getDefaultOutputDevice()["device"]["name"]
self._INPUT_SPEAKER_ENERGY_THRESHOLD = 300
self._INPUT_SPEAKER_DYNAMIC_ENERGY_THRESHOLD = False

View File

@@ -17,7 +17,7 @@ from typing import Callable
from flashtext import KeywordProcessor
from pykakasi import kakasi
from models.translation.translation_translator import Translator
from models.transcription.transcription_utils import getInputDevices, getOutputDevices
from models.transcription.transcription_utils import getInputDevices, getOutputDevices, getDefaultInputDevice, getDefaultOutputDevice
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
@@ -423,8 +423,17 @@ class Model:
return [device["name"] for device in getOutputDevices()]
def startMicTranscript(self, fnc):
mic_device_list = getInputDevices().get(config.CHOICE_MIC_HOST, [{"name": "NoDevice"}])
choice_mic_device = [device for device in mic_device_list if device["name"] == config.CHOICE_MIC_DEVICE]
if config.INPUT_MIC_AUTOMATIC_SELECTION is True:
default_device = getDefaultInputDevice()
mic_host_name = default_device["host"]["name"]
mic_device_name = default_device["device"]["name"]
else:
mic_host_name = config.CHOICE_MIC_HOST
mic_device_name = config.CHOICE_MIC_DEVICE
mic_device_list = getInputDevices().get(mic_host_name, [{"name": "NoDevice"}])
choice_mic_device = [device for device in mic_device_list if device["name"] == mic_device_name]
if len(choice_mic_device) == 0:
return False
@@ -544,15 +553,20 @@ class Model:
# self.mic_get_energy.stop()
# self.mic_get_energy = None
def startCheckMicEnergy(self, fnc, error_fnc=None):
mic_device_list = getInputDevices().get(config.CHOICE_MIC_HOST, [{"name": "NoDevice"}])
choice_mic_device = [device for device in mic_device_list if device["name"] == config.CHOICE_MIC_DEVICE]
def startCheckMicEnergy(self, fnc):
if config.INPUT_MIC_AUTOMATIC_SELECTION is True:
default_device = getDefaultInputDevice()
mic_host_name = default_device["host"]["name"]
mic_device_name = default_device["device"]["name"]
else:
mic_host_name = config.CHOICE_MIC_HOST
mic_device_name = config.CHOICE_MIC_DEVICE
mic_device_list = getInputDevices().get(mic_host_name, [{"name": "NoDevice"}])
choice_mic_device = [device for device in mic_device_list if device["name"] == mic_device_name]
if len(choice_mic_device) == 0:
try:
error_fnc()
except Exception:
pass
return
return False
def sendMicEnergy():
if mic_energy_queue.empty() is False:
@@ -581,15 +595,18 @@ class Model:
self.mic_energy_recorder.stop()
self.mic_energy_recorder = None
def startSpeakerTranscript(self, fnc, error_fnc=None):
def startSpeakerTranscript(self, fnc):
if config.INPUT_SPEAKER_AUTOMATIC_SELECTION is True:
default_device = getDefaultOutputDevice()
speaker_device_name = default_device["device"]["name"]
else:
speaker_device_name = config.CHOICE_SPEAKER_DEVICE
speaker_device_list = getOutputDevices()
choice_speaker_device = [device for device in speaker_device_list if device["name"] == config.CHOICE_SPEAKER_DEVICE]
choice_speaker_device = [device for device in speaker_device_list if device["name"] == speaker_device_name]
if len(choice_speaker_device) == 0:
try:
error_fnc()
except Exception:
pass
return
return False
speaker_audio_queue = Queue()
# speaker_energy_queue = Queue()
@@ -667,15 +684,18 @@ class Model:
# self.speaker_get_energy.stop()
# self.speaker_get_energy = None
def startCheckSpeakerEnergy(self, fnc, error_fnc=None):
def startCheckSpeakerEnergy(self, fnc):
if config.INPUT_SPEAKER_AUTOMATIC_SELECTION is True:
default_device = getDefaultOutputDevice()
speaker_device_name = default_device["device"]["name"]
else:
speaker_device_name = config.CHOICE_SPEAKER_DEVICE
speaker_device_list = getOutputDevices()
choice_speaker_device = [device for device in speaker_device_list if device["name"] == config.CHOICE_SPEAKER_DEVICE]
choice_speaker_device = [device for device in speaker_device_list if device["name"] == speaker_device_name]
if len(choice_speaker_device) == 0:
try:
error_fnc()
except Exception:
pass
return
return False
def sendSpeakerEnergy():
if speaker_energy_queue.empty() is False:

View File

@@ -821,17 +821,16 @@ class ProgressBarMicEnergy:
self.action = action
def set(self, energy) -> None:
self.action("mic", {"status":200, "result":energy})
def error(self) -> None:
self.action("error_device", {"status":400,"result": {"message":"No mic device detected."}})
if energy is False:
self.action("error_device", {"status":400,"result": {"message":"No mic device detected."}})
else:
self.action("mic", {"status":200, "result":energy})
def callbackEnableCheckMicThreshold(data, action, *args, **kwargs) -> dict:
printLog("Enable Check Mic Threshold")
progressbar_mic_energy = ProgressBarMicEnergy(action)
model.startCheckMicEnergy(
progressbar_mic_energy.set,
progressbar_mic_energy.error
)
config.ENABLE_CHECK_ENERGY_SEND = True
return {"status":200, "result":config.ENABLE_CHECK_ENERGY_SEND}
@@ -952,17 +951,16 @@ class ProgressBarSpeakerEnergy:
self.action = action
def set(self, energy) -> None:
self.action("speaker", {"status":200, "result":energy})
def error(self) -> None:
self.action("error_device", {"status":400,"result": {"message":"No mic device detected."}})
if energy is False:
self.action("error_device", {"status":400,"result": {"message":"No mic device detected."}})
else:
self.action("speaker", {"status":200, "result":energy})
def callbackEnableCheckSpeakerThreshold(data, action, *args, **kwargs) -> dict:
printLog("Enable Check Speaker Threshold")
progressbar_speaker_energy = ProgressBarSpeakerEnergy(action)
model.startCheckSpeakerEnergy(
progressbar_speaker_energy.set,
progressbar_speaker_energy.error
)
config.ENABLE_CHECK_ENERGY_RECEIVE = True
return {"status":200, "result":config.ENABLE_CHECK_ENERGY_RECEIVE}