-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathspeech.html
114 lines (100 loc) · 4.03 KB
/
speech.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
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
<!DOCTYPE html>
<html>
<head lang="en-US">
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<title>Web Speech API</title>
<link href='https://fonts.googleapis.com/css?family=Open+Sans' rel='stylesheet' type='text/css'>
<style>
body {
font-family: 'Open Sans', sans-serif;
font-size: 20px;
}
#confidence {
color:#00a256;
}
#finalspeech {
color:#045ced;
}
#unfinalspeech {
font-style: italic;
color:#ffba00;
}
</style>
</head>
<body>
<h6 id="confidence">confidence: <span id="confidencetext">--</span></h6>
<h1 id="speech"><span id="finalspeech"> </span><span id="unfinalspeech"> </span></h1>
<script src="socket.io/socket.io.js"></script>
<script>
var socket = io('https://localhost:8000', { secure: true });
var finalspeech = document.getElementById('finalspeech');
var unfinalspeech = document.getElementById('unfinalspeech');
var confidencetext = document.getElementById('confidencetext');
var speechcontainer = {};//{'confidence': 0.0, 'transcript': '','isFinal ': false};
// Test browser support
window.SpeechRecognition = window.SpeechRecognition ||
window.webkitSpeechRecognition ||
null;
if (window.SpeechRecognition !== null) {
var recognizer = new window.SpeechRecognition();
// Recogniser doesn't stop listening even if the user pauses
recognizer.continuous = false;
// Give us interim results
recognizer.interimResults = true;
// Start recognising
recognizer.onend = function(event) {
console.log('recognizer ended, restarting');
recognizer.start();
};
recognizer.onstart = function(event) {
console.log('recognizer started');
};
recognizer.onsoundstart = function(event) {
console.log('!');
};
recognizer.onsoundend = function(event) {
console.log('..');
//recognizer.stop();
};
recognizer.onresult = function(event) {
speechcontainer.confidence = parseFloat(event.results[0][0].confidence).toFixed(3);
speechcontainer.transcript = event.results[0][0].transcript;
speechcontainer.isFinal = event.results[0].isFinal;
socket.emit('speech', speechcontainer);
//console.log(speechcontainer.transcript);
// this is to catch a chrome bug
if(event.results.length === 2 && event.results[0].isFinal) {
location.reload();
}
};
// Listen for errors
recognizer.onerror = function(event) {
console.log('Error: ', event.error);
};
// start the speech recognition
try{
recognizer.start();
} catch(ex) {
console.log('error starting recognizer: ', ex);
}
socket.on('finalspeech', function(speechBuffer) {
console.log('final: ', speechBuffer);
var concatSpeech = '';
speechBuffer.map(function(speech) {
concatSpeech += speech.transcript + ' ';
});
finalspeech.innerHTML = concatSpeech;
unfinalspeech.innerHTML = '';
});
socket.on('unfinalspeech', function(currentSpeech) {
console.log('unfinal: ', currentSpeech);
unfinalspeech.innerHTML = currentSpeech.transcript;
});
socket.on('confidence', function(currentConfidence) {
confidencetext.innerHTML = currentConfidence;
});
}
</script>
</body>
</html>