🚧[WIP/TEST] Model : mute同期処理で文字起こしの同期をQueueからpause/resumeの関数に変更
This commit is contained in:
72
model.py
72
model.py
@@ -9,7 +9,7 @@ from datetime import datetime
|
|||||||
from logging import getLogger, FileHandler, Formatter, INFO
|
from logging import getLogger, FileHandler, Formatter, INFO
|
||||||
from time import sleep
|
from time import sleep
|
||||||
from queue import Queue
|
from queue import Queue
|
||||||
from threading import Thread, Event
|
from threading import Thread
|
||||||
from requests import get as requests_get
|
from requests import get as requests_get
|
||||||
import webbrowser
|
import webbrowser
|
||||||
|
|
||||||
@@ -30,33 +30,30 @@ from config import config
|
|||||||
|
|
||||||
class threadFnc(Thread):
|
class threadFnc(Thread):
|
||||||
def __init__(self, fnc, end_fnc=None, daemon=True, *args, **kwargs):
|
def __init__(self, fnc, end_fnc=None, daemon=True, *args, **kwargs):
|
||||||
super(threadFnc, self).__init__(daemon=daemon, *args, **kwargs)
|
super(threadFnc, self).__init__(daemon=daemon, target=fnc, *args, **kwargs)
|
||||||
self.fnc = fnc
|
self.fnc = fnc
|
||||||
self.end_fnc = end_fnc
|
self.end_fnc = end_fnc
|
||||||
self._stop = Event()
|
self.loop = True
|
||||||
|
self._pause = False
|
||||||
|
|
||||||
def stop(self):
|
def stop(self):
|
||||||
self._stop.set()
|
self.loop = False
|
||||||
def stopped(self):
|
|
||||||
return self._stop.isSet()
|
def pause(self):
|
||||||
|
self._pause = True
|
||||||
|
|
||||||
|
def resume(self):
|
||||||
|
self._pause = False
|
||||||
|
|
||||||
def run(self):
|
def run(self):
|
||||||
while True:
|
while self.loop:
|
||||||
if self.stopped():
|
|
||||||
if callable(self.end_fnc):
|
|
||||||
self.end_fnc()
|
|
||||||
return
|
|
||||||
self.fnc(*self._args, **self._kwargs)
|
self.fnc(*self._args, **self._kwargs)
|
||||||
|
while self._pause:
|
||||||
|
sleep(0.1)
|
||||||
|
|
||||||
class ConditionalQueue(Queue):
|
if callable(self.end_fnc):
|
||||||
def __init__(self, flag=True, *args, **kwargs):
|
self.end_fnc()
|
||||||
super().__init__(*args, **kwargs)
|
return
|
||||||
self.flag = flag
|
|
||||||
|
|
||||||
def put(self, item, block=True, timeout=None):
|
|
||||||
if self.flag is True:
|
|
||||||
super().put(item, block, timeout)
|
|
||||||
|
|
||||||
def set_flag(self, value):
|
|
||||||
self.flag = value
|
|
||||||
|
|
||||||
class Model:
|
class Model:
|
||||||
_instance = None
|
_instance = None
|
||||||
@@ -325,8 +322,8 @@ class Model:
|
|||||||
pass
|
pass
|
||||||
return
|
return
|
||||||
|
|
||||||
self.mic_audio_queue = ConditionalQueue()
|
self.mic_audio_queue = Queue()
|
||||||
# self.mic_energy_queue = ConditionalQueue()
|
# self.mic_energy_queue = Queue()
|
||||||
self.changePutQueueMicAudio()
|
self.changePutQueueMicAudio()
|
||||||
|
|
||||||
mic_device = choice_mic_device[0]
|
mic_device = choice_mic_device[0]
|
||||||
@@ -387,20 +384,27 @@ class Model:
|
|||||||
# self.mic_get_energy.start()
|
# self.mic_get_energy.start()
|
||||||
|
|
||||||
def startPutQueueMicAudio(self):
|
def startPutQueueMicAudio(self):
|
||||||
if isinstance(self.mic_audio_queue, ConditionalQueue):
|
# キューをクリア
|
||||||
|
if isinstance(self.mic_audio_queue, Queue):
|
||||||
while not self.mic_audio_queue.empty():
|
while not self.mic_audio_queue.empty():
|
||||||
self.mic_audio_queue.get()
|
self.mic_audio_queue.get()
|
||||||
self.mic_audio_queue.set_flag(True)
|
|
||||||
# self.mic_energy_queue.set_flag(True)
|
# 文字起こしを再開
|
||||||
|
# if isinstance(self.mic_print_transcript, threadFnc):
|
||||||
|
# self.mic_print_transcript.resume()
|
||||||
|
|
||||||
|
# 音声のレコードを再開
|
||||||
|
if isinstance(self.mic_audio_recorder, SelectedMicEnergyAndAudioRecorder):
|
||||||
|
self.mic_audio_recorder.resume()
|
||||||
|
|
||||||
def stopPutQueueMicAudio(self):
|
def stopPutQueueMicAudio(self):
|
||||||
if isinstance(self.mic_audio_queue, ConditionalQueue):
|
# 文字起こしを一時停止
|
||||||
self.mic_audio_queue.set_flag(False)
|
# if isinstance(self.mic_print_transcript, threadFnc):
|
||||||
# queueを空にする場合を考慮
|
# self.mic_print_transcript.pause()
|
||||||
if False:
|
|
||||||
while not self.mic_audio_queue.empty():
|
# 音声のレコードを一時停止
|
||||||
self.mic_audio_queue.get()
|
if isinstance(self.mic_audio_recorder, SelectedMicEnergyAndAudioRecorder):
|
||||||
# self.mic_energy_queue.set_flag(False)
|
self.mic_audio_recorder.pause()
|
||||||
|
|
||||||
def changePutQueueMicAudio(self):
|
def changePutQueueMicAudio(self):
|
||||||
if config.ENABLE_VRC_MIC_MUTE_SYNC is True:
|
if config.ENABLE_VRC_MIC_MUTE_SYNC is True:
|
||||||
|
|||||||
@@ -115,9 +115,9 @@ class BaseEnergyAndAudioRecorder:
|
|||||||
energy_queue.put(energy)
|
energy_queue.put(energy)
|
||||||
|
|
||||||
if isinstance(energy_queue, Queue):
|
if isinstance(energy_queue, Queue):
|
||||||
self.stop = self.recorder.listen_energy_and_audio_in_background(self.source, audioRecordCallback, phrase_time_limit=self.record_timeout, callback_energy=energyRecordCallback)
|
self.stop, self.pause, self.resume = self.recorder.listen_energy_and_audio_in_background(self.source, audioRecordCallback, phrase_time_limit=self.record_timeout, callback_energy=energyRecordCallback)
|
||||||
else:
|
else:
|
||||||
self.stop = self.recorder.listen_energy_and_audio_in_background(self.source, audioRecordCallback, phrase_time_limit=self.record_timeout)
|
self.stop, self.pause, self.resume = self.recorder.listen_energy_and_audio_in_background(self.source, audioRecordCallback, phrase_time_limit=self.record_timeout)
|
||||||
|
|
||||||
class SelectedMicEnergyAndAudioRecorder(BaseEnergyAndAudioRecorder):
|
class SelectedMicEnergyAndAudioRecorder(BaseEnergyAndAudioRecorder):
|
||||||
def __init__(self, device, energy_threshold, dynamic_energy_threshold, record_timeout):
|
def __init__(self, device, energy_threshold, dynamic_energy_threshold, record_timeout):
|
||||||
|
|||||||
@@ -13,5 +13,5 @@ sentencepiece==0.1.99
|
|||||||
ctranslate2==4.1.0
|
ctranslate2==4.1.0
|
||||||
faster-whisper==1.0.1
|
faster-whisper==1.0.1
|
||||||
translators @ git+https://github.com/misyaguziya/translators@5.8.9
|
translators @ git+https://github.com/misyaguziya/translators@5.8.9
|
||||||
SpeechRecognition @ git+https://github.com/misyaguziya/custom_speech_recognition@3.10.2
|
SpeechRecognition @ git+https://github.com/misyaguziya/custom_speech_recognition@3.10.4
|
||||||
tinyoscquery @ git+https://github.com/cyberkitsune/tinyoscquery@0.1.2
|
tinyoscquery @ git+https://github.com/cyberkitsune/tinyoscquery@0.1.2
|
||||||
Reference in New Issue
Block a user