voaf
v1.1.0
Published
VoAF : node js Voice Assistant Framework using google text to speech and speech to text.
Downloads
4
Readme
VoAF, Voice Assistant Framework
VoAF is a package dedicated to text to speech and speech to text. It uses google cloud plateform services and can be ran on all OS platforms including raspberry pi. If the readme is not comprehensive enough or if you have any configuration problems feel free to open an issue.
Installation
Before adding VoAF to you project you need to check if you have the right audio configuration.
sox
The first thing to install is "sox" in version 14.4.1 or lower. Sox is used for recording audio. For windows users, it needs to be added to windows PATH environment. sox 14.4.1 for windows
ALSA
For linux OS, the ALSA backend is needed, so be sure to have the alsa.h header file in place :
sudo apt-get install libasound2-dev
Google Cloud Platform
VoAF uses google text to speech and speech to text. You need to have an account in google cloud platform, to enable both API and to generate a service licence key. Once you have the key, put the json file at the root of your folder and add a .env file with the following entry :
GOOGLE_APPLICATION_CREDENTIALS="./google-service-key.json"
Of course you replace google-service-key.json with your own key name or you can rename your json key to google-service-key.json.
Package
Then you can add VoAF as a dependency.
yarn add voaf
npm install voaf
Usage
The first thing to do is to create a config object. If you don't then the default config will be :
const config = {
masterKeyword: "slave",
masterAnswer: "yes master!",
dontUnderstand: ["I don't understand.", "Can you repeat?"],
languageCode: "en-US",
ssmlGender: "NEUTRAL",
};
voaf.setConfig(config);
masterKeyword : string : word for the assistant to start listening for a command. masterAnswer : string : answer of the assistant when he hears the masterKeyword. dontUnderstand : string array : answer of the assistant when he doesn't understand (random when more than 1 string). languageCode and ssmlGender are the voice language and gender. You can find a list here : https://cloud.google.com/text-to-speech/docs/voices
Then you have to feed the assistant with some commands and actions. The command object is like this :
{
keywords: required string array,
action: optional function,
answers: required string array,
}
Single command :
const singleCommand = {
keywords: ["deezer"],
action: () => {
const deezerPath = "./deezer.exe";
console.log(`Deezer path is ${deezerPath}`);
},
answers: ["I can do that.", "Ok wait.", "Of course."],
}
voaf.addCommand(singleCommand);
Array of commands :
const arrayCommands = [
{
keywords: ["spotify"],
answers: ["I can do that.", "Ok wait.", "Of course."],
},
{
keywords: ["netflix", "netfleex"],
action: () => {
const four = 2 * 2;
console.log(`hi from netflix. 2 x 2 = ${four}`);
},
answers: ["I can do that.", "Ok wait.", "Of course."],
},
];
voaf.addCommands(arrayCommands);
Finally you start !
voaf.startRecording();