npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

voaf

v1.1.0

Published

VoAF : node js Voice Assistant Framework using google text to speech and speech to text.

Downloads

18

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();