Libraryless. Click here for Pure Java version (3297L/19K).
sS hSpeechRecognition(S jsOnSpeech, bool autoStart) {
ret hSpeechRecognition(jsOnSpeech, autoStart, "de-DE", true);
}
// requires JQuery
sS hSpeechRecognition(S jsOnSpeech, bool autoStart, S language, bool autoTurnOn, O... _) {
optPar S noWebKit = "No webkit";
optPar S speechUI = "";
ret hjavascript(([[
var bigOn = #BIGON#, srPause = false, listening = false;
var recognition;
var firstStart = true;
var srUpdatesBlocked = false;
function resultHTML(html) {
if ($("#speechResults")) $("#speechResults").html(html);
}
function srUpdate() {
if (srUpdatesBlocked) return;
var btn = $("#speechOnBtn, .speechOnBtn");
//console.log("srUpdate: btn=" + btn.length);
btn.prop('disabled', false);
btn.html(bigOn ? "Stop listening" : "Listen");
//console.log("srUpdate: bigOn=" + bigOn + ", srPause=" + srPause);
var should = bigOn && !srPause;
$(".listenStatus").css("visibility", should ? "visible" : "hidden");
if (should && !listening) startRecognition();
else if (!should && listening) stopRecognition();
}
function stopRecognition() {
listening = false;
recognition.stop();
srUpdate();
}
function isMobile() {
return /mobile/i.test(navigator.userAgent);
}
function startRecognition() {
listening = true;
recognition.start();
if (firstStart) {
firstStart = false;
resultHTML(isMobile() ? "Please talk after the blip" : "You can talk now");
}
srUpdate();
}
function startSpeechRecog() {
resultHTML("Starting");
console.log("startSpeechRecog");
if (!('webkitSpeechRecognition' in window)) {
console.log("No webkit");
document.writeln(]] + jsQuote(noWebKit) + [[);
return;
}
console.log("Have webkit");
document.writeln(]] + jsQuote(speechUI) + [[);
recognition = new webkitSpeechRecognition();
resultHTML("Speech recognition available.");
recognition.lang = "#LANGUAGE#";
recognition.onerror = function(event) {
var s = " ";
if (event.error != "no-speech") s = "Error: " + event.error;
resultHTML(s);
}
recognition.onresult = function(event) {
var result = event.results[0];
var transcript = result[0].transcript;
resultHTML("You said: \"" + transcript + "\"");
#ONSPEECH#
if (transcript == "stop listening") {
bigOn = false;
srUpdate();
}
}
recognition.onnomatch = function(event) {
resultHTML("-");
}
recognition.onend = function(event) {
listening = false;
srUpdatesBlocked = true; // block for a short time
setTimeout(function() {
srUpdatesBlocked = false;
srUpdate();
}, 100);
}
srUpdate();
}
// legacy
function startOrStop() { startOrStop(); }
function startOrStopSpeechRecog() {
bigOn = !bigOn;
srUpdate();
}
window.srUpdate = srUpdate;
]] + (autoStart ? "startSpeechRecog();" : ""))
.replace("#BIGON#", str(autoTurnOn))
.replace("#LANGUAGE#", language)
.replace("#ONSPEECH#", jsOnSpeech));
}download show line numbers debug dex old transpilations
Travelled to 14 computer(s): aoiabmzegqzx, bhatertpkbcr, cbybwowwnfue, cfunsshuasjs, gwrvuhgaqvyk, ishqpsrjomds, lpdgvwnxivlt, mqqgnosmbjvj, pyentgdyhuwx, pzhvpgtvlbxg, tslmcundralx, tvejysmllsmz, vouqrxazstgt, xrpafgyirdlv
No comments. add comment
| Snippet ID: | #1014011 |
| Snippet name: | hSpeechRecognition - HTML continues speech recognition using Google |
| Eternal ID of this version: | #1014011/43 |
| Text MD5: | 6aad98163b18457985bb409ea9610d21 |
| Transpilation MD5: | 91799d1a347a9d6502e81580b776e2ef |
| Author: | stefan |
| Category: | javax / html |
| Type: | JavaX fragment (include) |
| Public (visible to everyone): | Yes |
| Archived (hidden from active list): | No |
| Created/modified: | 2021-07-24 00:53:18 |
| Source code size: | 3446 bytes / 116 lines |
| Pitched / IR pitched: | No / No |
| Views / Downloads: | 1022 / 1309 |
| Version history: | 42 change(s) |
| Referenced in: | [show references] |