Merge branch 'automatic_device_selection' into for_webui
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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}
|
||||
|
||||
Reference in New Issue
Block a user