debug, threading, etc

This commit is contained in:
gauthiier 2022-03-20 16:06:57 +01:00
parent e91d3012cb
commit c33d577bb6
3 changed files with 57 additions and 17 deletions

View File

@ -4,7 +4,7 @@ import utterance.utils
import utterance.osc import utterance.osc
import examine.metric import examine.metric
logging.basicConfig(level=logging.ERROR) logging.basicConfig(level=logging.INFO)
UTTERANCE_LEN = 16 #<--------------- these should be in config UTTERANCE_LEN = 16 #<--------------- these should be in config
NUM_METRIC_GEN = 50 NUM_METRIC_GEN = 50
@ -13,6 +13,7 @@ broadcast = None
metric = None metric = None
exit = False exit = False
terminal = False terminal = False
debug = False
def format_str(text) -> str: def format_str(text) -> str:
t = utterance.utils.clean(text) t = utterance.utils.clean(text)
@ -45,9 +46,13 @@ def terminal_utterance(utterance):
def broadcast_utterance(v, utterance): def broadcast_utterance(v, utterance):
global broadcast, exit global broadcast, exit, debug
text = f"{v.name.upper()} : {v.temp}\n" if debug:
temp = format(v.temp, '.2f')
text = f"{v.name.upper()}: {temp}\n"
else:
text = f"{v.name.upper()}:\n"
broadcast.utterance(text, v.channel) broadcast.utterance(text, v.channel)
terminal_utterance(text) terminal_utterance(text)
@ -88,9 +93,13 @@ def find_candidates(v, uv_vec, voices, results):
def update(): def update():
global exit global exit
while not exit: while not exit:
try:
utterance.osc.update() utterance.osc.update()
time.sleep(0.2) except Exception as e:
logging.error(e)
pass
time.sleep(0.2)
def signal_terminate(signum, frame): def signal_terminate(signum, frame):
global exit global exit
@ -99,7 +108,7 @@ def signal_terminate(signum, frame):
def main() -> int: def main() -> int:
global broadcast, metric, terminal global broadcast, metric, terminal, debug
p = argparse.ArgumentParser() p = argparse.ArgumentParser()
p.add_argument("-c", "--config", type=str, default="voice.config.json", help="configuratin file") p.add_argument("-c", "--config", type=str, default="voice.config.json", help="configuratin file")
@ -138,12 +147,18 @@ def main() -> int:
broadcast = utterance.osc.OscBroadcaster(name="osc_broadcast", host=conf['host_voicemachine'], port=conf['port_voicemachine'], command_channel=conf['command_osc_channel']) broadcast = utterance.osc.OscBroadcaster(name="osc_broadcast", host=conf['host_voicemachine'], port=conf['port_voicemachine'], command_channel=conf['command_osc_channel'])
def temperature_cb(temp, name): def receiver_cb(temp, name):
global debug
if type(temp) == str and temp == "DEBUG":
debug = name
logging.info(f"DEBUG MODE: {debug}")
else:
for v in voices: for v in voices:
if v.name == name: if v.name == name:
print(f'{name} - {temp}')
v.temp = temp v.temp = temp
receiver = utterance.osc.OscReceiver(name="osc_receiver", host=conf['host_machinespeak'], port=conf['port_machinespeak'], callback_fn=temperature_cb) receiver = utterance.osc.OscReceiver(name="osc_receiver", host=conf['host_machinespeak'], port=conf['port_machinespeak'], callback_fn=receiver_cb)
#--------------------# #--------------------#
@ -152,11 +167,26 @@ def main() -> int:
logging.info(f"INIT::loading doc2vec metrics") logging.info(f"INIT::loading doc2vec metrics")
metric = examine.metric.Metric(model_input='data/models/doc2vec.model') metric = examine.metric.Metric(model_input='data/models/doc2vec.model')
#--------------------#
# RANDOM
#--------------------#
def random_seed():
global t_random_seed
logging.info("INIT::SEEDING RANDOM")
random.seed(time.time())
if not exit:
t_random_seed = threading.Timer(random.randint(60, 60 * 4), random_seed)
t_random_seed.start()
t_random_seed = threading.Timer(random.randint(60, 60 * 4), random_seed)
t_random_seed.start()
#--------------------# #--------------------#
# A # A
#--------------------# #--------------------#
logging.info(f"INIT::generating first utterance") logging.info(f"INIT::generating first utterance")
random.seed(time.time())
v = random.choice(voices) v = random.choice(voices)
uv, uv_vec = utter_one_vectorise(v) uv, uv_vec = utter_one_vectorise(v)
@ -187,6 +217,11 @@ def main() -> int:
logging.info(f"TERMINATE::terminating OSC") logging.info(f"TERMINATE::terminating OSC")
utterance.osc.terminate_osc() utterance.osc.terminate_osc()
# if t_random_seed:
logging.info(f"TERMINATE::random seed")
t_random_seed.cancel()
t_random_seed.join()
logging.info(f"FIN") logging.info(f"FIN")

View File

@ -1,5 +1,8 @@
from osc4py3.as_eventloop import * from osc4py3.as_eventloop import *
from osc4py3 import oscbuildparse from osc4py3 import oscbuildparse
from threading import Lock
mutex = Lock()
def start_osc(): def start_osc():
osc_startup() osc_startup()
@ -11,6 +14,8 @@ def temperature(temp, name):
print(f'{temp} - {name}') print(f'{temp} - {name}')
def update(): def update():
global mutex
with mutex:
osc_process() osc_process()
class OscBroadcaster: class OscBroadcaster:
@ -25,12 +30,12 @@ class OscBroadcaster:
def utterance(self, utterance: str, channel: str): def utterance(self, utterance: str, channel: str):
msg = oscbuildparse.OSCMessage(channel, None, [utterance]) msg = oscbuildparse.OSCMessage(channel, None, [utterance])
osc_send(msg, self.name) osc_send(msg, self.name)
osc_process() update()
def command(self, command: str): def command(self, command: str):
msg = oscbuildparse.OSCMessage(self.cmd, None, [command]) msg = oscbuildparse.OSCMessage(self.cmd, None, [command])
osc_send(msg, self.name) osc_send(msg, self.name)
osc_process() update()
class OscReceiver: class OscReceiver:

View File

@ -1,6 +1,6 @@
from aitextgen import aitextgen from aitextgen import aitextgen
import utterance.utils import utterance.utils
import regex, string import regex, string, time
class Voice: class Voice:
@ -13,7 +13,7 @@ class Voice:
def utter_n(self, n: int, temp: float = None, lenght: int = None): def utter_n(self, n: int, temp: float = None, lenght: int = None):
t = self.temp if temp == None else temp t = self.temp if temp == None else temp
l = self.lenght if lenght == None else lenght l = self.lenght if lenght == None else lenght
return self.v.generate(n=n, max_lenght=l, temperature=t, return_as_list=True) return self.v.generate(n=n, max_lenght=l, temperature=t, seed=int(time.time()), return_as_list=True)
def utter_one(self, temp: int = None, lenght: float = None) -> str: def utter_one(self, temp: int = None, lenght: float = None) -> str:
t = self.temp if temp == None else temp t = self.temp if temp == None else temp