electron-speech

Easy speech recognition in Node!

Stars
171

electron-speech

Speech recognition in node and the browser using Electron.

THIS MODULE NO LONGER WORKS

It seems that Google has shut down the Chrome Speech API for use in shell environments like Electron, which electron-speech relies on.

Some other directions to pursue instead include:

  1. webkitSpeechRecognition in the browser. This works if you are using a Chrome-based browser that isn't a shell like Electron.
  2. Sonus: node module that is optimized
    for low powered devices and provides customizable offline hotword detection
    with real-time streaming results (via Google Cloud
    Speech

    and others).
  3. If you are looking for a purely offline option:
    node-pocketsphinx
  4. Jasper looks promising, but is
    Python-based. Go forth and write a node wrapper around it!

Prerequisites

If you want to use the API from a script using Node, you will need to launch your script using the electron-spawn command instead of the node command:

$ npm install -g electron-spawn

$ electron-spawn example.js

Usage

CLI

This module installs the electron-speech command:

$ electron-speech
listening..
(whatever is said is written here, to stdout)

-q|--quiet to omit the listening.. message. (it's on stderr anyways though)

-c|--continuous to keep on listening after each result.

API

var Speech = require('electron-speech')

var recog = Speech({
  lang: 'en-US',
  continuous: true
})

recog.on('text', function (text) {
  console.log(text)
});

recog.listen()

Methods

var speech = Speech(opts)

Returns speech, an EventEmitter and Readable stream.

opts accepts multiple keys:

  • opts.lang - recognize speech in the language lang. Defaults to 'en-US'.
  • opts.continuous - if true, text events will keep on being emitted as recognition
    occurs.

speech.listen()

Starts listening to speech via the microphone. 'ready'` will be emitted once speech recognition has begun.

speech.pipe(stream)

Uses speech as a readable stream for text rather than an event emitter. Results have newlines appended to them for parsing convenience.

speech.on('ready')

Emitted when the microphone has begun to listen for speech.

speech.on('text', function (text) {})

Emitted when speech has been recognized.

speech.on('error', function (err) {})

Emitted when an error has occurred in recognition.

speech.on('close')

Emitted when recognition has ended. Does not fire if continuous was set to true.

License

ISC