A tiny javascript SpeechRecognition library that lets your users control your site with voice commands.
annyang has no dependencies, weighs just 2 KB, and is free to use and modify under the MIT license.
Play with some live speech recognition demos
It's as easy as adding one javascript file to your document, and defining the commands you want.
<script src="//cdnjs.cloudflare.com/ajax/libs/annyang/2.3.0/annyang.min.js"></script>
<script>
if (annyang) {
// Let's define a command.
var commands = {
'hello': function() { alert('Hello world!'); }
};
// Add our commands to annyang
annyang.addCommands(commands);
// Start listening.
annyang.start();
}
</script>
Check out some live speech recognition demos and advanced samples, then read the full API Docs.
You can easily add a GUI for the user to interact with Speech Recognition using Speech KITT.
Speech KITT makes it easy to add a graphical interface for the user to start or stop Speech Recognition and see its current status. KITT also provides clear visual hints to the user on how to interact with your site using their voice, providing instructions and sample commands.
Speech KITT is fully customizable, and comes with many different themes (and instructions on how to create your own designs).
<script src="//cdnjs.cloudflare.com/ajax/libs/annyang/2.3.0/annyang.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/SpeechKITT/0.3.0/speechkitt.min.js"></script>
<script>
if (annyang) {
// Add our commands to annyang
annyang.addCommands({
'hello': function() { alert('Hello world!'); }
});
// Tell KITT to use annyang
SpeechKITT.annyang();
// Define a stylesheet for KITT to use
SpeechKITT.setStylesheet('//cdnjs.cloudflare.com/ajax/libs/SpeechKITT/0.3.0/themes/flat.css');
// Render KITT's interface
SpeechKITT.vroom();
}
</script>
For help with setting up a GUI with KITT, check out the Speech KITT page.
Chrome's implementation of SpeechRecognition behaves differently based on the protocol used:
-
https://
Asks for permission once and remembers the choice. -
http://
Asks for permission repeatedly on every page load. Results are also returned significantly slower in HTTP.
For a great user experience, don't compromise on anything less than HTTPS (available free with CloudFlare and Let's Encrypt).
Tal Ater: @TalAter
Licensed under MIT.