https://github.com/kaiwedekind/anycontrol
Voice control for your websites and applications
https://github.com/kaiwedekind/anycontrol
anycontrol speech speech-api speech-recognition speech-to-text voice voice-assistant voice-control
Last synced: about 1 year ago
JSON representation
Voice control for your websites and applications
- Host: GitHub
- URL: https://github.com/kaiwedekind/anycontrol
- Owner: KaiWedekind
- License: mit
- Created: 2018-07-26T13:17:48.000Z (almost 8 years ago)
- Default Branch: master
- Last Pushed: 2022-12-08T18:19:35.000Z (over 3 years ago)
- Last Synced: 2024-10-11T14:07:47.089Z (over 1 year ago)
- Topics: anycontrol, speech, speech-api, speech-recognition, speech-to-text, voice, voice-assistant, voice-control
- Language: JavaScript
- Homepage:
- Size: 3.36 MB
- Stars: 54
- Watchers: 4
- Forks: 6
- Open Issues: 26
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# AnyControl
AnyControl is a small JavaScript SpeechRecognition library that lets your users control your site with voice commands. It is build on top of Webkit Speech API.
AnyControl has no dependencies, just 5 KB small, and is free to use and modify under the MIT license.
[](https://nodei.co/npm/anycontrol/)
[](https://github.com/KaiWedekind/anycontrol/issues)
[](https://github.com/KaiWedekind/anycontrol/network)
[](https://github.com/KaiWedekind/anycontrol/stargazers)
[](https://raw.githubusercontent.com/KaiWedekind/anycontrol/master/LICENSE)
[](https://github.com/KaiWedekind/anycontrol/blob/master/package.json)
[](https://github.com/KaiWedekind/anycontrol/blob/master/CodeOfConduct.md)
## Browser support
Google Chrome 31+
## Live Demo + Documentation
[Link](https://kaiwedekind.github.io/anycontrol)
## Getting started
```html
var ctrl = new anycontrol()
ctrl.addCommand("previous page", function() {
console.log('Go to previous page')
});
ctrl.addCommand("next page", function () {
console.log('Go to next page')
});
ctrl.start();
```
## API
**Add command**
```javascript
ctrl.addCommand("home", function() {
// Navigate to home
});
ctrl.addCommand("search", function(param) {
console.log("Search for:", param);
});
```
**Add command with keyword support**
```javascript
ctrl.addCommand("send a message to ${USER} saying ${THIS_TEXT} and send it at ${SPECIFIED_TIME}", function (ctx) {
console.log('Result', ctx)
/*
{
USER: "michael",
transcript: "hello siri send a message to michael saying hi there and send it at 2 p.m.",
THIS_TEXT: "hi there",
SPECIFIED_TIME: "2 p.m."
}
*/
});
ctrl.addCommand("${MY_ASSISTANT} what ${OBJECT} is it", function (ctx) {
console.log('Result', ctx)
/*
{
MY_ASSISTANT: "alexa",
OBJECT: "day",
transcript: "alexa what day is it"
}
*/
});
/* Variations */
function calculateSum (ctx) {
alert(`The result of ${ctx.VALUE_1} times ${ctx.VALUE_2} equals ${ctx.VALUE_1 * ctx.VALUE_2}`)
}
ctrl.addCommand("${MY_ASSISTANT} what is ${VALUE_1} x ${VALUE_2}", calculateSum);
ctrl.addCommand("${MY_ASSISTANT} what's ${VALUE_1} x ${VALUE_2}", calculateSum);
function presidentLookup (country) {
switch (country) {
case 'argentina': {
return 'Alberto Fernández'
}
case 'angola': {
return 'João Lourenço'
}
case 'brazil': {
return 'Jair Bolsonaro'
}
case 'china': {
return 'Xi Jinping'
}
case 'america': {
return 'Donald Trump'
}
}
}
function checkPresidentOfCountry(ctx) {
const president = presidentLookup(ctx.COUNTRY);
alert(`The president of ${ctx.COUNTRY} is ${president}.`);
}
ctrl.addCommand("Who's the president of ${COUNTRY}", checkPresidentOfCountry);
ctrl.addCommand("Who is the president of ${COUNTRY}", checkPresidentOfCountry);
```
**Remove command**
```javascript
ctrl.removeCommand("search");
```
**Start listening (continuously)**
```javascript
ctrl.start();
```
**Stop listening**
```javascript
ctrl.stop();
```
**Get single command**
```javascript
ctrl.getCommand();
```
**Turn debug mode on/off**
```javascript
ctrl.debug(true|false);
```
## LICENSE
MIT