Skip to content

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

License

Notifications You must be signed in to change notification settings

evancohen/sonus

Folders and files

NameName
Last commit message
Last commit date

Latest commit

efb3cfb Â· Jun 8, 2019

History

98 Commits
Jan 11, 2019
Jan 9, 2019
Oct 13, 2016
Jan 17, 2019
Oct 7, 2016
May 21, 2017
Jan 10, 2019
Sep 28, 2016
Jun 8, 2019
Mar 8, 2019
Jun 3, 2019
Jan 28, 2017
Oct 7, 2016

Repository files navigation

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

  • 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

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)

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.

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.