hackergrrl / electron-speech

:microphone: Easy speech recognition in Node!
172 stars 13 forks source link

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:

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