A voice assistant built as an educational project with the Society of Artificial Intelligence at BYU - Idaho with a focus on clarity, simplicity, and extensibility.
- Python >3.7. Currently tested up to 3.9.
- Make sure Python 3.7 or above is installed (currently tested up to 3.9)
- In a terminal, run
python -m pip install -r requirements.txt
- Start with
- Make sure Python 3.7 or above is installed
- In PowerShell, run
py -m pip install -r requirements.txt
- If you get an error while installing
pipwin install pyaudio. pipwin will already be installed from the requirements.
- To start, run
Creating a Skill
All skills are stored in the
skills-repository folder. To make a new skill, create a folder inside the
skills-repository folder and add a file named
init.py or give it the same name as your folder. As an example, look at the depiction below.
alfred-protocol ├─ skills_repository ├─ your_skill │ ├─ your_skill.py ├─ your_other_skill │ ├─ __init__.py ├─ your_single_file_skill.py
All skills should inherit from the
AlfredSkill class. Check out the example skill,
hello world for more details.
from skills_repository.alfred_skill import AlfredSkill class HelloWorld(AlfredSkill): name="Hello World" def __init__(self, alfred_utils): """Initialize the Hello World skill class. All skills should have an init method which receives an instance of AlfredUtils. To find out more about AlfredUtils, read its class file. Args: alfred_utils (class): Class holding essential tools, including say(phrase) and listen() """ AlfredSkill.__init__(self) self._alfred_utils = alfred_utils def initialize_intents(self, register_intent): """ registers intents to AlfredProtocol Receives: a reference to AlfredProtocol's intent register function """ register_intent(self.handle_say_hello, ["hello", "hello world"], self) def handle_say_hello(self, phrase): """ Makes Alfred Protocol say, "hello world" Args: phrase (string): The phrase said that resulted in this function being called """ self._alfred_utils.say("hello world!") def create_skill(alfred_utils): """ Skill creator function. Creates an instance of your skill to return. Args: alfred_utils (AlfredUtils): class instance with essential Alfred tools Returns: HelloWorld: An instance of the HelloWorld skill """ skill_instance = HelloWorld(alfred_utils) return skill_instance
- Add wakeword activation
- Upgrade intent chooser to intent classification
- Add skills
- More voices
- More Speech Recognition engines
- Skills Repository
- Make skills use classes
- Find a way to pass tool functions (speak(), listen(), etc.) to skills
- Document! More > less. Better > more.
- Test carefully!
- Be creative!