/sonus

:speech_balloon: /so.nus/ STT (speech to text) for Node with offline hotword detection

Primary LanguageJavaScriptMIT LicenseMIT

sonus

Build Status Dependency Status

This project is in active development and is rapidly evolving. As of v0.1.0 it uses semantic versioning.

Sonus is a speech to text library you can use to quickly and easally add a VUI (Voice User Interface) to any hardware or software project. Just like Alexa, Google Now, 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.

Platform Support

  • Linux - most major distros (Including Raspbian)
  • macOS
  • Windows

Streaming Recognition Services

  • Google Cloud Speech
  • Alexa Voice Services
  • Wit.ai
  • Microsoft Cognitive Services
  • Houndify

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

Add sonus and your cloud speech recognition system of choice:

const Sonus = require('sonus')
const speech = require('@google-cloud/speech')({
  projectId: 'streaming-speech-sample',
  keyFilename: './keyfile.json'
})

Add your keyword and initialize Sonus:

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

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) 

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

Authors

Evan Cohen: @_evnc
Ashish Chandwani: @ashishschandwa1

License

Licensed under MIT.