Vinisto is the word for "butler" in Esperanto.
It's based on the following main directrives:
- It has to be easy to expand
- Non-strict, you may do as you please
- Support many tts/stt systems
- Multilanguage
- KISS
But mostly, KISS is the most important one.
This requires pyaudio. I recommend installing pyaudio from your package manager It also requires pygame, wich requires the same treatment.
IE debian:
apt-get install python-pyaudio python-pygame
After that, pip install vinisto will do the magic.
Vinisto is ready to use as a library, wich is it's main goal, but you can try with some default plugins (time and repeat) by using the built-in "vinisto" command
usage: vinisto [-h]
[--plugins [{vinisto.plugins.gpio,vinisto.plugins.ir,vinisto.plugins.repeat,vinisto.plugins.time}]]
[--stt {vinisto.stt.google_stt}]
[--tts {vinisto.tts.google_tts}] [--keyword KEYWORD]
[--rate RATE] [--language LANGUAGE] [--key KEY]
[--response_phrase RESPONSE_PHRASE]
Vinisto - Your personal butler
optional arguments:
-h, --help show this help message and exit
--plugins [{vinisto.plugins.gpio,vinisto.plugins.ir,vinisto.plugins.repeat,vinisto.plugins.time}]
List of plugin modules
--stt {vinisto.stt.google_stt}
List of stt modules
--tts {vinisto.tts.google_tts}
List of tts modules
--keyword KEYWORD Keyword to wait for
--rate RATE Mic rate, defaults to raspberry pi USB (24000)
--language LANGUAGE Language to use in both TTS and STT
--key KEY Key to be passed to STT engines.
--response_phrase RESPONSE_PHRASE
What to say when the keyword has been detected
wich WAS (now it handles arguments, but still...) basically
from vinisto.tts.google_tts import GoogleTTS
from vinisto.stt.google_stt import GoogleSTT
from vinisto.plugins.time import Time
from vinisto.plugins.repeat import Repeat
vinisto = Vinisto()
vinisto.stt = GoogleSTT('es-ES', {'rate': 24000},
"AIzaSyCuOvb2qd0mhQRkIbGAcgMUmFQaLIXtlmg")
vinisto.tts = GoogleTTS('es-ES')
vinisto.register_plugin(Time)
vinisto.register_plugin(Repeat)
while True:
vinisto.execute_callbacks()
Vinisto has a simple-yet-effective structure, a main package with packages for each of the principal functionalities:
- tts
- stt
- plugins
Previous usage example is perfect to illustrate how to use them. And vinisto.tts.google_tts for the tts part, vinisto.stt.google_stt for the stt part and finally vinisto.plugins.time for the plugins part
Vinisto waits for a keyword "vinisto" (that can be changed on main.py). After that, it'll receive one phrase, and will try to execute it.