Speech recognition in node and the browser using Electron.
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:
- webkitSpeechRecognition in the browser. This works if you are using a Chrome-based browser that isn't a shell like Electron.
- 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).
- If you are looking for a purely offline option: node-pocketsphinx
- Jasper looks promising, but is Python-based. Go forth and write a node wrapper around it!
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
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.
var Speech = require('electron-speech')
var recog = Speech({
lang: 'en-US',
continuous: true
})
recog.on('text', function (text) {
console.log(text)
});
recog.listen()
Returns speech
, an EventEmitter and Readable stream.
opts
accepts multiple keys:
opts.lang
- recognize speech in the languagelang
. Defaults to'en-US'
.opts.continuous
- if true,text
events will keep on being emitted as recognition occurs.
Starts listening to speech via the microphone. 'ready
'` will be emitted once speech
recognition has begun.
Uses speech
as a readable stream for text rather than an event emitter.
Results have newlines appended to them for parsing convenience.
Emitted when the microphone has begun to listen for speech.
Emitted when speech has been recognized.
Emitted when an error has occurred in recognition.
Emitted when recognition has ended. Does not fire if continuous
was set to
true.
ISC