two way comm
This commit is contained in:
parent
72b984bf48
commit
e91d3012cb
@ -47,7 +47,7 @@ def broadcast_utterance(v, utterance):
|
|||||||
|
|
||||||
global broadcast, exit
|
global broadcast, exit
|
||||||
|
|
||||||
text = v.name.upper() + ":\n"
|
text = f"{v.name.upper()} : {v.temp}\n"
|
||||||
|
|
||||||
broadcast.utterance(text, v.channel)
|
broadcast.utterance(text, v.channel)
|
||||||
terminal_utterance(text)
|
terminal_utterance(text)
|
||||||
@ -85,6 +85,11 @@ def find_candidates(v, uv_vec, voices, results):
|
|||||||
lapse = time.time() - start
|
lapse = time.time() - start
|
||||||
logging.info(f"LOOP::done - {lapse} secs")
|
logging.info(f"LOOP::done - {lapse} secs")
|
||||||
|
|
||||||
|
def update():
|
||||||
|
global exit
|
||||||
|
while not exit:
|
||||||
|
utterance.osc.update()
|
||||||
|
time.sleep(0.2)
|
||||||
|
|
||||||
|
|
||||||
def signal_terminate(signum, frame):
|
def signal_terminate(signum, frame):
|
||||||
@ -128,8 +133,18 @@ def main() -> int:
|
|||||||
# NET
|
# NET
|
||||||
#--------------------#
|
#--------------------#
|
||||||
logging.info(f"INIT::setting up OSC")
|
logging.info(f"INIT::setting up OSC")
|
||||||
broadcast = utterance.osc.OscBroadcaster(name="osc_broadcast", host=conf['host'], port=conf['port'], command_channel=conf['command_osc_channel'])
|
|
||||||
broadcast.start_osc()
|
utterance.osc.start_osc()
|
||||||
|
|
||||||
|
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):
|
||||||
|
for v in voices:
|
||||||
|
if v.name == name:
|
||||||
|
v.temp = temp
|
||||||
|
|
||||||
|
receiver = utterance.osc.OscReceiver(name="osc_receiver", host=conf['host_machinespeak'], port=conf['port_machinespeak'], callback_fn=temperature_cb)
|
||||||
|
|
||||||
|
|
||||||
#--------------------#
|
#--------------------#
|
||||||
# METRIC
|
# METRIC
|
||||||
@ -145,6 +160,9 @@ def main() -> int:
|
|||||||
v = random.choice(voices)
|
v = random.choice(voices)
|
||||||
uv, uv_vec = utter_one_vectorise(v)
|
uv, uv_vec = utter_one_vectorise(v)
|
||||||
|
|
||||||
|
t_update = threading.Thread(target=update)
|
||||||
|
t_update.start()
|
||||||
|
|
||||||
while not exit:
|
while not exit:
|
||||||
|
|
||||||
results = []
|
results = []
|
||||||
@ -164,9 +182,10 @@ def main() -> int:
|
|||||||
uv_vec = metric.vector(uv)
|
uv_vec = metric.vector(uv)
|
||||||
logging.info(f"LOOP::next {v.name}")
|
logging.info(f"LOOP::next {v.name}")
|
||||||
|
|
||||||
|
t_update.join()
|
||||||
|
|
||||||
logging.info(f"TERMINATE::terminating OSC")
|
logging.info(f"TERMINATE::terminating OSC")
|
||||||
broadcast.terminate_osc()
|
utterance.osc.terminate_osc()
|
||||||
|
|
||||||
logging.info(f"FIN")
|
logging.info(f"FIN")
|
||||||
|
|
||||||
|
|||||||
@ -1,6 +1,18 @@
|
|||||||
from osc4py3.as_eventloop import *
|
from osc4py3.as_eventloop import *
|
||||||
from osc4py3 import oscbuildparse
|
from osc4py3 import oscbuildparse
|
||||||
|
|
||||||
|
def start_osc():
|
||||||
|
osc_startup()
|
||||||
|
|
||||||
|
def terminate_osc():
|
||||||
|
osc_terminate()
|
||||||
|
|
||||||
|
def temperature(temp, name):
|
||||||
|
print(f'{temp} - {name}')
|
||||||
|
|
||||||
|
def update():
|
||||||
|
osc_process()
|
||||||
|
|
||||||
class OscBroadcaster:
|
class OscBroadcaster:
|
||||||
|
|
||||||
def __init__(self, name: str, host: str, port: str, command_channel: str):
|
def __init__(self, name: str, host: str, port: str, command_channel: str):
|
||||||
@ -20,15 +32,17 @@ class OscBroadcaster:
|
|||||||
osc_send(msg, self.name)
|
osc_send(msg, self.name)
|
||||||
osc_process()
|
osc_process()
|
||||||
|
|
||||||
@staticmethod
|
class OscReceiver:
|
||||||
def start_osc():
|
|
||||||
osc_startup()
|
|
||||||
|
|
||||||
@staticmethod
|
|
||||||
def terminate_osc():
|
|
||||||
osc_terminate()
|
|
||||||
|
|
||||||
|
|
||||||
|
def __init__(self, name: str, host: str, port: str, callback_fn=None):
|
||||||
|
self.name = name
|
||||||
|
self.host = host
|
||||||
|
self.port = port
|
||||||
|
osc_udp_server(self.host, self.port, self.name)
|
||||||
|
if callback_fn:
|
||||||
|
osc_method('/', callback_fn)
|
||||||
|
else:
|
||||||
|
osc_method('/', temperature)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -11,11 +11,13 @@ class Voice:
|
|||||||
self.v = aitextgen(model_folder=model, tokenizer_file=tokenizer)
|
self.v = aitextgen(model_folder=model, tokenizer_file=tokenizer)
|
||||||
|
|
||||||
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, 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
|
||||||
|
l = self.lenght if lenght == None else lenght
|
||||||
return self.utter_n(n=1, temp=temp, lenght=lenght)[0]
|
return self.utter_n(n=1, temp=temp, lenght=lenght)[0]
|
||||||
|
|
||||||
def set_channel(self, root: str, endpoint: str):
|
def set_channel(self, root: str, endpoint: str):
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user