-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathWebSpeechAPI.html
97 lines (85 loc) · 2.51 KB
/
WebSpeechAPI.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
<html>
<head>
<title>Web Speech API Demo</title>
</head>
<body>
<div style="border:dotted;padding:10px">
<span id="final_span"></span>
<span id="interim_span" style="color:grey"></span>
</div>
<script>
// permissions
navigator.getUserMedia = (navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia || navigator.msGetUserMedia);
if (navigator.getUserMedia) {
navigator.getUserMedia(
{
video:false,
audio:true
},
function(stream) { /* do something */ },
function(error) { /* do something */ }
);
} else {
alert('Sorry, the browser you are using doesn\'t support getUserMedia');
}
var audio = new Audio('ding.mp3');
var recognition = new webkitSpeechRecognition();
var BobActivated = false;
if ('webkitSpeechRecognition' in window) {
recognition.continuous = false;
recognition.interimResults = true;
recognition.lang = "en";
var final_transcript = '';
var interim_transcript = '';
recognition.start();
recognition.onspeechstart = function(event) {
start_timestamp = event.timeStamp;
};
recognition.onresult = function (event) {
var final = "";
var interim = "";
for (var i = 0; i < event.results.length; ++i) {
if (event.results[i].isFinal) {
// log the latest phrase
console.log(event.results[i][0].transcript);
if(BobActivated){
console.log("Bob you got here");
BobActivated = false;
}
// check if program called
if(event.results[i][0].transcript == "Bob"){
console.log(event.results[i]);
console.log("Bob Was Called!");
audio.play();
BobActivated = true;
}
final += event.results[i][0].transcript;
} else {
interim += event.results[i][0].transcript;
}
final_span.innerHTML = final;
interim_span.innerHTML = interim;
}
};
recognition.onend = function() {
recognition.start();
};
recognition.onerror = function(event) {
if (event.error == 'no-speech') {
console.log('info_no_speech');
}
if (event.error == 'audio-capture') {
console.log('info_no_microphone');
}
if (event.error == 'not-allowed') {
if (event.timeStamp - start_timestamp < 100) {
console.log('info_blocked');
} else {
console.log('info_denied');
}
}
};
}
</script>
</body>
</html>