Code Monkey home page Code Monkey logo

nala's Introduction

Nala

Tweet

Nala is an agile open-source voice assistant framework to improve the workflow of your daily life.

Nala uses actions which can be triggered by user voice queries. All the user needs to do is say 'hey nala' and it will spark Nala to listen and respond to requests - like getting the weather or the news.

And yes, her name is inspired after Nala from the Lion King :-)

See a newer version of Nala here

Getting started

It's super easy to setup Nala. All you need to do is:

git clone [email protected]:jim-schwoebel/nala.git
cd nala
python3 -m venv env
source env/bin/activate
python3 setup.py
python3 nala.py

You will then be asked to register with your name, email, and a few other registration tasks.

After that, you're ready to begin using Nala!

How to query Nala

Single queries

To active Nala, all you need to do is query her with 'Hey Nala!' (1) - which then triggers a response from Nala - (3) in this case, “How can I help you?.” Then, a user provides another query (usually after some beeping sound) - such as (4) “I’d like the weather.” Nala transcribes this query to understand it, and parses the query for keyword intents; for example, if the response is “I’d like the weather” the only word that really matters is “weather” and that would be used to provoke a response (5). Then, after this keyword maps onto an action dictionary (or a map of responses to keywords), the action is executed (6). Then, the intent loop repeats itself, looking for another wakeword (“Hey Nala”) before triggering another action.

Multi-query capability

Nala is equipped with multi-query capability. All you need to do is add 'AND' into your query and she'll automatically execute actions serially that you request to her.

For example, you may say, "Hey Nala" --> "close spotify and sleep"

She will then close spotify and then go to sleep for 30 minutes.

This makes Nala incredibly versatile to do multiple things quickly and is an advantage over other chatbot systems.

Demo (click video below)

multiple intents

What Nala can do

Here are some actions that Nala can currently do along with the query intents needed to activate them. If you have any other ideas, let us know on the github issues tab (as an enhancement)!

Action Description Example query intent
⏰ alarm.py Plays an alarm sound (e.g. to wake up in morning) based on the time of day you specified during user registration. “set alarm”, “stop alarm”
🎵 chillout.py Plays music in the background to help you calm down. “chill out”
🏟️ espn.py Scrapes ESPN website to find any events going on later tonight. This is a work-in-progress. “get sports”
🎴 events.py Scrape meetup.com for events in your local area. “find events”
📜 generate_poem.py Generate a poem based on the generate poetry script we wrote a while back. “make a poem”
📝 grateful.py Helps you keep a gratitude journal by recording a sample of what you’re grateful for today. “be grateful”
☺️ makeajoke.py Plays back a joke from the database. “make a joke”
🌅 meditation.py Guides you through a simple 60 second meditation. “meditate”
🎧 music.py YouTube music links - based on a genre. “play music”
📰 news.py searches some basic news sites related to computer science and machine learning (e.g. Hacker News). “grab the news”
🍐 nutrition.py Searches for some healthy food nearby “be healthy”
✈️ plan_trip.py Schedules a trip in terms of AirBnB suggestions and flights “plan trip”
↪️ reboot.py Restarts the computer. “restart”
🔍 search.py search bing with a query. First query: “search”, Second query: [search term]
⌛ shutdown.py Shuts down the computer. “shut down”
😴 sleep Puts the computer to sleep for a designated time period. "go to sleep"
👥 social.py Alternative script to give you some suggestions based on your budget to go out later. "be social"
🌡️ weather.py Searches weather.com for the current weather at your location. "get the weather"
☕🍦🎉🍺 yelp.py Based on the query, searches yelp for coffee, restaurants, food, nightlife, ice cream, or bars. "get me coffee", "get me some food", "nightlife", "get ice cream", "grab beer"
📂open program GitHub, Facebook, LinkedIn, Twitter, Spotify, Sublime, Atom "open github", "open facebook", "open linkedin", "open twitter", "open spotify", "open sublime", "open atom"
📴close program Close a Spotify session. "close spotify", "stop spotify"
🎙️Record audio record a stream of audio for a designated time period and save to desktop "record audio"
📹Record video Open up zoom meeting link to record a video session. "record video"

... more to come into the future!

Sample Projects

Here are some other projects that have used the Nala Framework:

  • Greta - 👧 Greta is an agile voice assistant to help reduce your carbon footprint.

Feedback

Any feedback this repository is greatly appreciated.

  • If you find something that is missing or doesn't work, please consider opening a GitHub issue.
  • If you want to learn more about voice computing, check out Voice Computing in Python book.
  • If you are looking for a framework to start building machine learning models in voice computing, check out Allie.
  • If you'd like to be mentored by someone on our team, check out the Innovation Fellows Program.
  • If you want to talk to me directly, please send me an email @ [email protected].

License

This repository is licensed under the Apache 2.0 License.

References

If you need anything else, check out the wiki.

If you're looking for a place to start to learn how to code voice computing, Nala has some great documentation in Chapter 7 of the Voicebook repository.

Here are some other modules and things you could look into for further guidance:

nala's People

Contributors

jim-schwoebel avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

nala's Issues

Add in Jasper libraries

Google Calendar -- The Google Calendar module lets you check your Google calendar today or tomorrow for events, and it lets you add an event to your calendar.

Twitter -- The Twitter module lets you tweet, check whats trending and check for any twitter notifications which include: Direct messages, retweets or mentions.

Evernote -- The Evernote module lets you store notes for you in your Evernote account.

WolframAlpha -- The WolframAlpha module lets you ask question to WolframAlpha search engine.

Status -- The Status module outputs system status information upon request.

Movies -- The Movies module is used to retrieve movie information.

Define -- The Define module is used to get definitions of words.

Wiki -- The Wiki module is used to get a Wikipedia summary of a word or phrase.

Domoticz -- The Domoticz home automation module is used to issue commands to a Domoticz server using the JSON API.

Find My iPhone -- The Find My iPhone module is used to force your phone to ring using the apple service "find my iphone"

Yelp -- The yelp module is used to find a good restaurant in a given area. The module can also answer various questions about the restaurant.

Stocks -- The stock module is used to get live stock quotes.

OpenWeatherMap -- Open Weather Map API to get weather forecast.

Currency Exchage Rate Calculator -- Get Xchange Rate for two Currencies.

MQTT -- An MQTT client which allows you to control other MQTT enabled devices in your home.

Reboot -- Reboot the Raspbery PI.

Selfie -- Take a webcam photo and upload it to a predefined email.

Shutdown -- Shutdown the Raspberry PI.

Speedtest -- Run a Speedtest of your network and report back the results.

WavPlay -- Play a random wav file from a predefined directory.

add randomness

Perhaps add some randomness - like a 5% chance to produce a vocalization randomly to prompt a user on a given hour, or play back a user query.

Generate a list of question.

Stochastic modeling.

-Jim

Pyttsx3 does not work

ib/python3.7/importlib/init.py", line 127, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "", line 1006, in _gcd_import
File "", line 983, in _find_and_load
File "", line 967, in _find_and_load_unlocked
File "", line 677, in _load_unlocked
File "", line 728, in exec_module
File "", line 219, in _call_with_frames_removed
File "/usr/local/lib/python3.7/site-packages/pyttsx3/drivers/nsss.py", line 2, in
from Foundation import *
ModuleNotFoundError: No module named 'Foundation'

weather bug

Getting the weather results in a bug. Weather.py

Need to find a better way to get the weather 👍

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.