A Library to provide speech recognition capability in browsers.
The library enables speech recognition support for any browser that includes support for either:
- Web Speech API or
- Web Audio API + getUserMedia support
If the browser does not support either of the above, then currently you're out of luck.
watson-html5-speech-recognition use Web Speech API when present and Watson Speech To Text service for all other (supported) cases.
Currently, the following are supported:
-
Webkit speech recognition
- Chrome (33)
- FireFox (>=44)
-
Watson Speech to Text
- Microsoft Edge
- Firefox (<44)
- Opera
- An instance of Watson Speech To Text Service (requires a Bluemix account)
- Watson Speech to Text Websocket server (provided. see Example section below)
npm install watson-html5-speech-recognitionvar Speech = require('watson-html5-speech-recognition');
var speech = new Speech.SpeechToText();
speech.listen({
onStart: function() {
console.log('starting');
},
onResult: function(e) {
console.log(e.text);
},
onError: function(e) {
console.log('error', e);
},
onEnd: function(e) {
console.log('end', e);
}
});If Watson speech services are engaged, the watson-html5-speech-recognition request a token from the server then communicates via websocket.
By default, watson-html5-speech-recognition assumes the token endpoint exists at /api/speech-to-text/token. If you alter the location of that endpoint, you must supply the new location via a configuration parameter upon instantiation. Like so...
var Speech = require('watson-html5-speech-recognition');
var speech = new Speech.SpeechToText({
watsonTokenUrl: `/path/to/my/speech-to-text/token`
});NOTE: The example server uses the watson-developer-cloud npm package to configure the token endpoint (see example/server/stt-token.js).
The example contains a simple web front end, along with a backend web socket server that communicates with the Watson Speech To Text service
Clone the example:
git clone https://github.com/cdimascio/watson-html5-speech-recognitionNavigate to the example root:
cd example/serverInstall dependencies:
npm installBuild the example:
npm run compileFirst, be sure to complete all steps in the section above, "Setup the example"
Then,
Open stt-token.js to line 10
Set '<your-username>' and '<your-username>' to match your Watson Speech To Text Service credentials.
npm startTry it:
- Navigate to http://localhost:3000
- Click the 'mic' button
- Speak
The watson-html5-speech-recognition library is exposed as a node module. It, thus can be used seamlessly with build tools like webpack, browserify, jspm, etc.
For the purpose of this example, we use Browserify to generate speech.js from main.js. Once generated, speech.js can be included in your webpage via script tag. See index.html.
If you want to further customize main.js, you must regenerate speech.js. To do so:
cd example/servernpm run compile
All example files live in example/server.
UI client files:
public/main.jssets upwatson-html5-speech-recognitionand adds an instance to the global space.public/speech.jsis generated frommain.jsby Browserify. (npm run compile)public/index.htmlcontains application to listen for user input and output it to the screen.
Server files:
app.jscreates an express server and exposes a base route for speech to text endpointsstt-token.jsinstantiates watson speech to text and provides an endpoint to request speech to text authorization tokens.
Apache 2.0