Open KhArtNJava opened 4 years ago
Oh, I see now, that I forgot about join()
method.
if __name__ == '__main__':
p = Player()
p.say('Свет на кухне включен.') # phrase 1
p.join()
p.say('Свет на кухне выключен.') # step 2
Now it works fine and I heard phrase 1. But how to code it to run in separate thread to make it possible call p.say()
from __main__
?
Player already running in separate thread. If i understood correct: Change sayshell.py#L111 to:
def stop(self):
self._queue.put_nowait(None)
self.join()
self.tts.join()
self._stream.stop_stream()
self._stream.close()
self._p_audio.terminate()
And __main__
:
if __name__ == '__main__':
p = Player()
p.say('Свет на кухне включен.') # phrase 1
p.say('Свет на кухне выключен.') # step 2
p.stop() # Player.join make deadlock
No, I mean, how to make it to work infinitely without blocking of code execution? In other words, I have main script, that starts timers with threads with some logic and these threads should call say() function of Player. I'm not good in Python, I am Java developer and I think, how can it be implemented in Java:
So, I just want to understand, how to instantiate Player Singleton. Maybe it should be started in another thread, with join() call in that thread and passed to global variable. In this logic I'll have non-blocking thread with Player object (that will be assigned to global variable) and with join() of it... And other threads will call say() of global variable object.
Hello. My env: RHVOICE 1.2.0 rhvoice-wrapper 0.5.1
RHVOICE-test works good, no issues with it.
I've downloaded https://github.com/Aculeasis/rhvoice-proxy/blob/master/rhvoice_wrapper/examples/sayshell.py , started it and command say Свет на кухне включен. works fine.
But when I try to modificate sayshell.py by adding
it doesn't work.
Output to console in both cases are similar. For original script:
For modified script
output is:
What am I doing wrong, why in my case Player doesn't work properly?