additional fix for recognition

style change
This commit is contained in:
Niko 2019-07-02 18:43:48 +02:00
parent cbddf1d1c7
commit b56f6dfa22
3 changed files with 105 additions and 102 deletions

View File

@ -14,18 +14,17 @@
</head> </head>
<body> <body>
<h1>Speech Recognition</h1> <h1>Digitaler Demenztest</h1>
<p id=info>Press the button to activate microphone.</p> <p id=info>Press the button to activate microphone.</p>
<p id=query hidden>query</p>
<button>Start new test</button> <button>Start new test</button>
<button id="speechBtn">Speech</button> <button id="speechBtn">Test Button</button>
<button onclick="getElementById('query').innerHTML = 'changed'">Change query</button>
<div> <div>
<p class="server">Server offline</p> <p class="server">Server offline</p>
<p class="output" style="font-style: italic;">... erkannte worte ...</p> <p class="quest">Question: </p>
</div> <p class="output" style="font-style: italic;">Erkannte worte ...</p>
</div>
<script src="ws-client.js"></script> <script src="ws-client.js"></script>
</body> </body>

View File

@ -4,7 +4,7 @@ body, html {
html { html {
height: 100%; height: 100%;
background-color: teal; background-color: rgb(65, 143, 143);
} }
body { body {
@ -19,7 +19,7 @@ h1, p {
div p { div p {
padding: 20px; padding: 20px;
background-color: rgba(0,0,0,0.2); background-color: rgba(51, 51, 51, 0.2);
} }
div { div {

View File

@ -87,7 +87,7 @@ var diagnosticPara = document.querySelector('.output');
var testBtn = document.querySelector('button'); var testBtn = document.querySelector('button');
var testBtn2 = document.getElementById('speechBtn'); var testBtn2 = document.getElementById('speechBtn');
var infoPara = document.getElementById('info'); var infoPara = document.getElementById('info');
var userPrompt = document.getElementById('query'); var questionNumDisplay = document.querySelector('.quest');
// #endregion // #endregion
// websocket to communicate with the server // websocket to communicate with the server
@ -154,7 +154,7 @@ ws.onopen = function () {
ws.onmessage = function (payload) { ws.onmessage = function (payload) {
var dialogflowResult = JSON.parse(payload.data); var dialogflowResult = JSON.parse(payload.data);
checkIntent(dialogflowResult); checkIntent(dialogflowResult);
document.querySelector('h1').innerHTML = dialogflowResult.intent.displayName; // document.querySelector('h1').innerHTML = dialogflowResult.intent.displayName;
}; };
// #endregion // #endregion
@ -215,6 +215,7 @@ function checkIntent (result) {
function startQuestion (number) { function startQuestion (number) {
question = number; question = number;
state = 'answer'; state = 'answer';
questionNumDisplay.textContent = 'Question: ' + question;
handleQuestion(); handleQuestion();
} }
@ -263,8 +264,11 @@ function readQuestionTwo () {
window.setTimeout( window.setTimeout(
function () { function () {
recognition.stop(); recognition.stop();
console.log('recognition stopped'); window.setTimeout(
handleAnswer(answerQuery); function () {
handleAnswer(answerQuery);
answerQuery = '';
}, 3000);
}, 6000); }, 6000);
recognition.start(); recognition.start();
console.log('reocgnition started. Question: ' + question); console.log('reocgnition started. Question: ' + question);
@ -369,39 +373,6 @@ function handleAnswerToThirdQuestion (query) {
} }
// #endregion // #endregion
// #region global functions
function startDemenzScreening () {
ws.send('starte demenz test');
// startQuestion(2);
testBtn.disabled = true;
testBtn.textContent = 'Test in progress';
infoPara.textContent = 'wait...';
diagnosticPara.textContent = 'detecting...';
}
function speak (sentence) {
speechsynth.text = sentence;
window.speechSynthesis.speak(speechsynth);
}
function testSpeechOut () {
answerQuery = 'apfel wiese tisch apfel lampe pferd';
question = 1;
for (let i = 0; i < 2; i++) {
var tokens = answerQuery.split(new RegExp(separators.join('|'), 'g'));
questionPoints[question] += calculatePoints(tokens, QUESTION_ONE_ANSWERS);
}
console.log(questionPoints[question]);
// speechsynth.text = 'test 123';
// speechsynth.volume = 1;
// speechsynth.rate = 1;
// console.log(speechsynth);
// window.speechSynthesis.speak(speechsynth);
// console.log(window.speechSynthesis);
}
// function recognizeSpeech () { // function recognizeSpeech () {
// if (state === 'answer') { // if (state === 'answer') {
// var arr; // var arr;
@ -427,6 +398,7 @@ function testSpeechOut () {
// // recognition.grammars = speechRecognitionList; // // recognition.grammars = speechRecognitionList;
// } // }
// #region speech recognition event
recognition.onresult = function (event) { recognition.onresult = function (event) {
var last = event.results.length - 1; var last = event.results.length - 1;
var speechResult = event.results[last][0].transcript.toLowerCase(); var speechResult = event.results[last][0].transcript.toLowerCase();
@ -439,57 +411,7 @@ recognition.onresult = function (event) {
// testBtn.disabled = false // testBtn.disabled = false
// testBtn.textContent = 'record...' // testBtn.textContent = 'record...'
}; };
1;
function processSpeech (speechResult) {
console.log('To dialogflow: ' + speechResult);
ws.send(speechResult);
let timeOut;
switch (question) {
case 1:
timeOut = 6500;
break;
case 2:
answerQuery += speechResult;
return;
case 3:
if (speechResult.includes('uhr')) {
speechResult = speechResult.replace('uhr', '');
}
timeOut = 6500;
break;
case 4:
break;
case 5:
timeOut = 6500;
break;
}
if (state === 'answer') {
if (timerId != undefined) {
clearTimeout(timerId);
}
answerQuery += speechResult;
timerId = window.setTimeout(
function () {
// if (!rePrompt) {
// ws.send('ich brauche noch etwas Zeit')
// } else {
console.log('recording end. Evaluate: ' + answerQuery);
handleAnswer(answerQuery);
answerQuery = '';
diagnosticPara.textContent = '';
// }
recognition.stop();
console.log('timer fallback');
}, timeOut);
} else {
console.log('recording end.');
recognition.stop();
}
}
// #region speech recognition event
recognition.onspeechend = function () { recognition.onspeechend = function () {
// recognition.stop(); // recognition.stop();
// testBtn.disabled = false; // testBtn.disabled = false;
@ -542,6 +464,88 @@ recognition.onstart = function (event) {
// } // }
// #endregion // #endregion
// #region global functions
function processSpeech (speechResult) {
console.log('To dialogflow: ' + speechResult);
ws.send(speechResult);
let timeOut;
switch (question) {
case 1:
timeOut = 6500;
break;
case 2:
answerQuery += speechResult;
return;
case 3:
if (speechResult.includes('uhr')) {
speechResult = speechResult.replace('uhr', '');
}
timeOut = 6500;
break;
case 4:
break;
case 5:
timeOut = 6500;
break;
}
if (state === 'answer') {
if (timerId != undefined) {
clearTimeout(timerId);
}
answerQuery += speechResult;
timerId = window.setTimeout(
function () {
// if (!rePrompt) {
// ws.send('ich brauche noch etwas Zeit')
// } else {
console.log('recording end. Evaluate: ' + answerQuery);
handleAnswer(answerQuery);
answerQuery = '';
diagnosticPara.textContent = '';
// }
recognition.stop();
console.log('timer fallback');
}, timeOut);
} else {
console.log('recording end.');
recognition.stop();
}
}
function startDemenzScreening () {
// ws.send('starte demenz test');
startQuestion(2);
testBtn.disabled = true;
testBtn.textContent = 'Test in progress';
infoPara.textContent = 'wait...';
diagnosticPara.textContent = 'detecting...';
}
function testSpeechOut () {
answerQuery = 'apfel wiese tisch apfel lampe pferd';
question = 1;
for (let i = 0; i < 2; i++) {
var tokens = answerQuery.split(new RegExp(separators.join('|'), 'g'));
questionPoints[question] += calculatePoints(tokens, QUESTION_ONE_ANSWERS);
}
console.log(questionPoints[question]);
// speechsynth.text = 'test 123';
// speechsynth.volume = 1;
// speechsynth.rate = 1;
// console.log(speechsynth);
// window.speechSynthesis.speak(speechsynth);
// console.log(window.speechSynthesis);
}
function speak (sentence) {
speechsynth.text = sentence;
window.speechSynthesis.speak(speechsynth);
}
function calculatePoints (tokens, d) { function calculatePoints (tokens, d) {
let points = 0; let points = 0;
let dict = {}; let dict = {};