two way comm
This commit is contained in:
parent
72b984bf48
commit
e91d3012cb
@ -47,7 +47,7 @@ def broadcast_utterance(v, utterance):
|
||||
|
||||
global broadcast, exit
|
||||
|
||||
text = v.name.upper() + ":\n"
|
||||
text = f"{v.name.upper()} : {v.temp}\n"
|
||||
|
||||
broadcast.utterance(text, v.channel)
|
||||
terminal_utterance(text)
|
||||
@ -85,6 +85,11 @@ def find_candidates(v, uv_vec, voices, results):
|
||||
lapse = time.time() - start
|
||||
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):
|
||||
@ -128,8 +133,18 @@ def main() -> int:
|
||||
# NET
|
||||
#--------------------#
|
||||
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
|
||||
@ -144,6 +159,9 @@ def main() -> int:
|
||||
random.seed(time.time())
|
||||
v = random.choice(voices)
|
||||
uv, uv_vec = utter_one_vectorise(v)
|
||||
|
||||
t_update = threading.Thread(target=update)
|
||||
t_update.start()
|
||||
|
||||
while not exit:
|
||||
|
||||
@ -164,9 +182,10 @@ def main() -> int:
|
||||
uv_vec = metric.vector(uv)
|
||||
logging.info(f"LOOP::next {v.name}")
|
||||
|
||||
t_update.join()
|
||||
|
||||
logging.info(f"TERMINATE::terminating OSC")
|
||||
broadcast.terminate_osc()
|
||||
utterance.osc.terminate_osc()
|
||||
|
||||
logging.info(f"FIN")
|
||||
|
||||
|
||||
@ -1,6 +1,18 @@
|
||||
from osc4py3.as_eventloop import *
|
||||
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:
|
||||
|
||||
def __init__(self, name: str, host: str, port: str, command_channel: str):
|
||||
@ -8,7 +20,7 @@ class OscBroadcaster:
|
||||
self.host = host
|
||||
self.port = port
|
||||
self.cmd = command_channel
|
||||
osc_udp_client(self.host, self.port, self.name)
|
||||
osc_udp_client(self.host, self.port, self.name)
|
||||
|
||||
def utterance(self, utterance: str, channel: str):
|
||||
msg = oscbuildparse.OSCMessage(channel, None, [utterance])
|
||||
@ -20,15 +32,17 @@ class OscBroadcaster:
|
||||
osc_send(msg, self.name)
|
||||
osc_process()
|
||||
|
||||
@staticmethod
|
||||
def start_osc():
|
||||
osc_startup()
|
||||
|
||||
@staticmethod
|
||||
def terminate_osc():
|
||||
osc_terminate()
|
||||
|
||||
class OscReceiver:
|
||||
|
||||
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)
|
||||
|
||||
def utter_n(self, n: int, temp: float = None, lenght: int = None):
|
||||
t = self.temp if temp != None else temp
|
||||
l = self.lenght if lenght != None else lenght
|
||||
t = self.temp if temp == None else temp
|
||||
l = self.lenght if lenght == None else lenght
|
||||
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:
|
||||
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]
|
||||
|
||||
def set_channel(self, root: str, endpoint: str):
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user