evancohen / sonus

:speech_balloon: /so.nus/ STT (speech to text) for Node with offline hotword detection
MIT License
627 stars 79 forks source link
alexa hotword-detection keyword-spotting node speech speech-recognition speech-to-text stt voice-control voice-recognition

sonus

Build Status Dependency Status

A dead simple STT library in Node

Sonus lets you quickly and easily add a VUI (Voice User Interface) to any hardware or software project. Just like Alexa, Google Assistant, and Siri, Sonus is always listening offline for a customizable hotword. Once that hotword is detected your speech is streamed to the cloud recognition service of your choice - then you get the results in realtime.

Platform Support

Streaming Recognition Services

Installation

npm install --save sonus

Dependencies

Generally, running npm install should suffice. This module however, requires you to install SoX.

For most linux disto's

Recommended: use arecord, which comes with most linux distros. Alternatively:

sudo apt-get install sox libsox-fmt-all

For macOS

brew install sox

Usage

Configure out cloud speech recognition system of choice, like Google Cloud Speech API.

Note: You need to use the GOOGLE_APPLICATION_CREDENTIALS environment variable for your JSON keyfile, or check the examples to see how you can pass in the keyflie path.

Add sonus and said recognizer:

const Sonus = require('sonus')
const speech = require('@google-cloud/speech')
const client = new speech.SpeechClient()

Add your keyword and initialize Sonus with a Snowboy hotword:

const hotwords = [{ file: 'resources/snowboy.umdl', hotword: 'snowboy' }]
const sonus = Sonus.init({ hotwords }, client)

Create your own Alexa in less than a tweet:

Sonus.start(sonus)
sonus.on('hotword', (index, keyword) => console.log("!"))
sonus.on('final-result', console.log)

Full API Documentation

Versioning

This project uses semantic versioning as of v0.1.0

How do I set up Google Cloud Speech API?

Follow these instructions.

How do I make my own hotword?

Sonus uses Snowboy for offline hotword recognition. You can use their website or API to train a model for a new hotword. Hotword training must occur online through their web service.

Built #withsonus

If you've build a project with Sonus send a PR and include it here!

Authors

Evan Cohen: @_evnc
Ashish Chandwani: @ashishschandwa1

License

Licensed under MIT.