diff --git a/mycroft/client/speech/listener.py b/mycroft/client/speech/listener.py index 881fdb771a..77b190901c 100644 --- a/mycroft/client/speech/listener.py +++ b/mycroft/client/speech/listener.py @@ -119,6 +119,12 @@ class AudioConsumer(threading.Thread): self.metrics.increment("mycroft.wakeup") def process_audio(self, audio): + SessionManager.touch() + payload = { + 'utterance': self.mycroft_recognizer.key_phrase, + 'session': SessionManager.get().session_id, + } + self.emitter.emit("recognizer_loop:wakeword", payload) try: self.transcribe([audio]) except sr.UnknownValueError: # TODO: Localization diff --git a/mycroft/client/speech/main.py b/mycroft/client/speech/main.py index a2f52f64b6..ed4f6ec64d 100644 --- a/mycroft/client/speech/main.py +++ b/mycroft/client/speech/main.py @@ -45,6 +45,11 @@ def handle_record_end(): client.emit(Message('recognizer_loop:record_end')) +def handle_wakeword(event): + logger.info("Wakeword Detected: " + event['utterance']) + client.emit(Message('recognizer_loop:wakeword', event)) + + def handle_utterance(event): logger.info("Utterance: " + str(event['utterances'])) client.emit(Message('recognizer_loop:utterance', event)) @@ -95,6 +100,7 @@ def main(): loop = RecognizerLoop(device_index=device_index) loop.on('recognizer_loop:utterance', handle_utterance) loop.on('recognizer_loop:record_begin', handle_record_begin) + loop.on('recognizer_loop:wakeword', handle_wakeword) loop.on('recognizer_loop:record_end', handle_record_end) loop.on('speak', handle_speak) client.on('speak', handle_speak) diff --git a/mycroft/client/speech/mic.py b/mycroft/client/speech/mic.py index cb98af8c2c..81ea262910 100644 --- a/mycroft/client/speech/mic.py +++ b/mycroft/client/speech/mic.py @@ -137,8 +137,6 @@ class ResponsiveRecognizer(speech_recognition.Recognizer): def __init__(self, wake_word_recognizer): speech_recognition.Recognizer.__init__(self) - self.daemon = True - self.wake_word_recognizer = wake_word_recognizer self.audio = pyaudio.PyAudio() diff --git a/mycroft/skills/personal/__init__.py b/mycroft/skills/personal/__init__.py new file mode 100644 index 0000000000..f47e2ed73e --- /dev/null +++ b/mycroft/skills/personal/__init__.py @@ -0,0 +1,82 @@ +# Copyright 2016 Mycroft AI, Inc. +# +# This file is part of Mycroft Core. +# +# Mycroft Core is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# Mycroft Core is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with Mycroft Core. If not, see . + +from os.path import dirname + +from adapt.intent import IntentBuilder +from mycroft.skills.core import MycroftSkill +from mycroft.util.log import getLogger + +__author__ = 'eward' + +logger = getLogger(__name__) + + +class PersonalSkill(MycroftSkill): + + def __init__(self): + super(PersonalSkill, self).__init__(name="PersonalSkill") + + def initialize(self): + self.load_data_files(dirname(__file__)) + + when_were_you_born_intent = IntentBuilder("WhenWereYouBornIntent")\ + .require("WhenWereYouBornKeyword").build() + self.register_intent(when_were_you_born_intent, + self.handle_when_were_you_born_intent) + + where_were_you_born_intent = IntentBuilder("WhereWereYouBornIntent")\ + .require("WhereWereYouBornKeyword").build() + self.register_intent(where_were_you_born_intent, + self.handle_where_were_you_born_intent) + + who_made_you_intent = IntentBuilder("WhoMadeYouIntent")\ + .require("WhoMadeYouKeyWord").build() + self.register_intent(who_made_you_intent, + self.handle_who_made_you_intent) + + who_are_you_intent = IntentBuilder("WhoAreYouIntent")\ + .require("WhoAreYouKeyword").build() + self.register_intent(who_are_you_intent, + self.handle_who_are_you_intent) + + what_are_you_intent = IntentBuilder("WhatAreYouIntent")\ + .require("WhatAreYouKeyword").build() + self.register_intent(what_are_you_intent, + self.handle_what_are_you_intent) + + def handle_when_were_you_born_intent(self, message): + self.speak_dialog("when.was.i.born") + + def handle_where_were_you_born_intent(self, message): + self.speak_dialog("where.was.i.born") + + def handle_who_made_you_intent(self, message): + self.speak_dialog("who.made.me") + + def handle_who_are_you_intent(self, message): + self.speak_dialog("who.am.i") + + def handle_what_are_you_intent(self, message): + self.speak_dialog("what.am.i") + + def stop(self): + pass + + +def create_skill(): + return PersonalSkill() diff --git a/mycroft/skills/personal/dialog/en-us/what.am.i.dialog b/mycroft/skills/personal/dialog/en-us/what.am.i.dialog new file mode 100644 index 0000000000..e71135da80 --- /dev/null +++ b/mycroft/skills/personal/dialog/en-us/what.am.i.dialog @@ -0,0 +1,2 @@ +I am an open source artificial intelligence. +I'm an intelligent piece of software for communicating with machines \ No newline at end of file diff --git a/mycroft/skills/personal/dialog/en-us/when.was.i.born.dialog b/mycroft/skills/personal/dialog/en-us/when.was.i.born.dialog new file mode 100644 index 0000000000..8ac7db3861 --- /dev/null +++ b/mycroft/skills/personal/dialog/en-us/when.was.i.born.dialog @@ -0,0 +1,2 @@ +I was born in 2015. +2015 is when I was born. diff --git a/mycroft/skills/personal/dialog/en-us/where.was.i.born.dialog b/mycroft/skills/personal/dialog/en-us/where.was.i.born.dialog new file mode 100644 index 0000000000..10c9320785 --- /dev/null +++ b/mycroft/skills/personal/dialog/en-us/where.was.i.born.dialog @@ -0,0 +1,2 @@ +The Lawrence Center for Entrepreneurship. +I was born in Lawrence, Kansas. diff --git a/mycroft/skills/personal/dialog/en-us/who.am.i.dialog b/mycroft/skills/personal/dialog/en-us/who.am.i.dialog new file mode 100644 index 0000000000..09d689474e --- /dev/null +++ b/mycroft/skills/personal/dialog/en-us/who.am.i.dialog @@ -0,0 +1,2 @@ +My name is Mycroft and I'm an intelligent personal assistant +I'm Mycroft, an open-source A.I. \ No newline at end of file diff --git a/mycroft/skills/personal/dialog/en-us/who.made.me.dialog b/mycroft/skills/personal/dialog/en-us/who.made.me.dialog new file mode 100644 index 0000000000..7077089719 --- /dev/null +++ b/mycroft/skills/personal/dialog/en-us/who.made.me.dialog @@ -0,0 +1,2 @@ +The wonderful Mycroft A.I. community and team. +Everyone in the Mycroft A.I. community and team. diff --git a/mycroft/skills/personal/test/intent/what.are.you.intent.json b/mycroft/skills/personal/test/intent/what.are.you.intent.json new file mode 100644 index 0000000000..fa1a023f5a --- /dev/null +++ b/mycroft/skills/personal/test/intent/what.are.you.intent.json @@ -0,0 +1,7 @@ +{ + "utterance": "what are you", + "intent_type": "WhatAreYouIntent", + "intent": { + "WhatAreYouKeyword": "what are you" + } +} diff --git a/mycroft/skills/personal/test/intent/when.were.you.born.intent.json b/mycroft/skills/personal/test/intent/when.were.you.born.intent.json new file mode 100644 index 0000000000..c3aa4c88e5 --- /dev/null +++ b/mycroft/skills/personal/test/intent/when.were.you.born.intent.json @@ -0,0 +1,7 @@ +{ + "utterance": "when were you born", + "intent_type": "WhenWereYouBornIntent", + "intent": { + "WhenWereYouBornKeyword": "when were you born" + } +} diff --git a/mycroft/skills/personal/test/intent/where.were.you.born.intent.json b/mycroft/skills/personal/test/intent/where.were.you.born.intent.json new file mode 100644 index 0000000000..39540a427b --- /dev/null +++ b/mycroft/skills/personal/test/intent/where.were.you.born.intent.json @@ -0,0 +1,7 @@ +{ + "utterance": "where were you born", + "intent_type": "WhereWereYouBornIntent", + "intent": { + "WhereWereYouBornKeyword": "where were you born" + } +} diff --git a/mycroft/skills/personal/test/intent/who.are.you.intent.json b/mycroft/skills/personal/test/intent/who.are.you.intent.json new file mode 100644 index 0000000000..623e7364b4 --- /dev/null +++ b/mycroft/skills/personal/test/intent/who.are.you.intent.json @@ -0,0 +1,7 @@ +{ + "utterance": "who are you", + "intent_type": "WhoAreYouIntent", + "intent": { + "WhoAreYouKeyword": "who are you" + } +} diff --git a/mycroft/skills/personal/test/intent/who.made.you.intent.json b/mycroft/skills/personal/test/intent/who.made.you.intent.json new file mode 100644 index 0000000000..899fd83d2e --- /dev/null +++ b/mycroft/skills/personal/test/intent/who.made.you.intent.json @@ -0,0 +1,7 @@ +{ + "utterance": "who made you", + "intent_type": "WhoMadeYouIntent", + "intent": { + "WhoMadeYouKeyWord": "who made you" + } +} diff --git a/mycroft/skills/personal/vocab/en-us/WhatAreYouKeyword.voc b/mycroft/skills/personal/vocab/en-us/WhatAreYouKeyword.voc new file mode 100644 index 0000000000..7814b91395 --- /dev/null +++ b/mycroft/skills/personal/vocab/en-us/WhatAreYouKeyword.voc @@ -0,0 +1 @@ +what are you diff --git a/mycroft/skills/personal/vocab/en-us/WhenWereYouBornKeyword.voc b/mycroft/skills/personal/vocab/en-us/WhenWereYouBornKeyword.voc new file mode 100644 index 0000000000..9dec489c41 --- /dev/null +++ b/mycroft/skills/personal/vocab/en-us/WhenWereYouBornKeyword.voc @@ -0,0 +1,2 @@ +when were you born +when were you created diff --git a/mycroft/skills/personal/vocab/en-us/WhereWereYouBornKeyword.voc b/mycroft/skills/personal/vocab/en-us/WhereWereYouBornKeyword.voc new file mode 100644 index 0000000000..3730205298 --- /dev/null +++ b/mycroft/skills/personal/vocab/en-us/WhereWereYouBornKeyword.voc @@ -0,0 +1,2 @@ +where were you born +where were you created diff --git a/mycroft/skills/personal/vocab/en-us/WhoAreYouKeyword.voc b/mycroft/skills/personal/vocab/en-us/WhoAreYouKeyword.voc new file mode 100644 index 0000000000..d0ba3f6d3d --- /dev/null +++ b/mycroft/skills/personal/vocab/en-us/WhoAreYouKeyword.voc @@ -0,0 +1,2 @@ +who are you +who're you diff --git a/mycroft/skills/personal/vocab/en-us/WhoMadeYouKeyword.voc b/mycroft/skills/personal/vocab/en-us/WhoMadeYouKeyword.voc new file mode 100644 index 0000000000..7997546735 --- /dev/null +++ b/mycroft/skills/personal/vocab/en-us/WhoMadeYouKeyword.voc @@ -0,0 +1,2 @@ +who made you +who were you made by