15 from threading
import Lock
19 from mycroft
import dialog
27 from mycroft.util import create_daemon, wait_for_exit_signal, \
35 speech_pub = rospy.Publisher(
"mycroft/speech", Speech, queue_size=10)
39 LOG.info(
"Begin Recording...")
40 bus.emit(
Message(
'recognizer_loop:record_begin'))
44 LOG.info(
"End Recording...")
45 bus.emit(
Message(
'recognizer_loop:record_end'))
49 LOG.debug(
"Notifying enclosure of no internet connection")
50 bus.emit(
Message(
'enclosure.notify.no_internet'))
54 """ Forward mycroft.awoken to the messagebus. """ 55 LOG.info(
"Listener is now Awake: ")
56 bus.emit(
Message(
'mycroft.awoken'))
60 LOG.info(
"Wakeword Detected: " + event[
'utterance'])
61 bus.emit(
Message(
'recognizer_loop:wakeword', event))
65 LOG.info(
"Utterance: " + str(event[
'utterances']))
66 context = {
'client_name':
'mycroft_listener'}
68 ident = event.pop(
'ident')
69 context[
'ident'] = ident
70 bus.emit(
Message(
'recognizer_loop:utterance', event, context))
71 speech_pub.publish(Speech(event[
"utterances"]))
75 bus.emit(
Message(
'mycroft.speech.recognition.unknown'))
80 Forward speak message to message bus. 82 bus.emit(
Message(
'speak', event))
86 LOG.info(
"Failed to find intent.")
87 data = {
'utterance': dialog.get(
'not.loaded')}
88 bus.emit(
Message(
'speak', data))
109 Query microphone mute status. 111 data = {
'muted': loop.is_muted()}
112 bus.emit(event.response(data))
116 IdentityManager.update(event.data)
123 if config.get(
"listener").
get(
"mute_during_output"):
129 Request unmute, if more sources have requested the mic to be muted 130 it will remain muted. 132 if config.get(
"listener").
get(
"mute_during_output"):
138 Handler for mycroft.stop, i.e. button press 150 rospy.init_node(
'mycroft_stt')
151 rospy.loginfo(rospy.get_caller_id() +
" started")
158 Configuration.init(bus)
159 config = Configuration.get()
163 loop.on(
'recognizer_loop:utterance', handle_utterance)
164 loop.on(
'recognizer_loop:speech.recognition.unknown', handle_unknown)
165 loop.on(
'speak', handle_speak)
166 loop.on(
'recognizer_loop:record_begin', handle_record_begin)
167 loop.on(
'recognizer_loop:awoken', handle_awoken)
168 loop.on(
'recognizer_loop:wakeword', handle_wakeword)
169 loop.on(
'recognizer_loop:record_end', handle_record_end)
170 loop.on(
'recognizer_loop:no_internet', handle_no_internet)
173 bus.on(
'open', handle_open)
174 bus.on(
'complete_intent_failure', handle_complete_intent_failure)
175 bus.on(
'recognizer_loop:sleep', handle_sleep)
176 bus.on(
'recognizer_loop:wake_up', handle_wake_up)
177 bus.on(
'mycroft.mic.mute', handle_mic_mute)
178 bus.on(
'mycroft.mic.unmute', handle_mic_unmute)
179 bus.on(
'mycroft.mic.get_status', handle_mic_get_status)
180 bus.on(
"mycroft.paired", handle_paired)
181 bus.on(
'recognizer_loop:audio_output_start', handle_audio_start)
182 bus.on(
'recognizer_loop:audio_output_end', handle_audio_end)
183 bus.on(
'mycroft.stop', handle_stop)
192 if __name__ ==
"__main__":
def create_daemon(target, args=(), kwargs=None)
def handle_utterance(event)
def wait_for_exit_signal()
def handle_mic_unmute(event)
def handle_mic_get_status(event)
def reset_sigint_handler()
def handle_audio_end(event)
def handle_record_begin()
def handle_audio_start(event)
def handle_wake_up(event)
def handle_mic_mute(event)
def handle_complete_intent_failure(event)
def get(phrase, lang=None, context=None)
def handle_wakeword(event)