Small fixes for speech recognition
This commit is contained in:
parent
988b08a93c
commit
6c71422bdc
|
@ -63,15 +63,30 @@
|
||||||
|
|
||||||
// Try to detect speech recognition support
|
// Try to detect speech recognition support
|
||||||
if ("SpeechRecognition" in window) {
|
if ("SpeechRecognition" in window) {
|
||||||
|
// @ts-ignore
|
||||||
recognition = new SpeechRecognition();
|
recognition = new SpeechRecognition();
|
||||||
} else if ("webkitSpeechRecognition" in window) {
|
} else if ("webkitSpeechRecognition" in window) {
|
||||||
|
// @ts-ignore
|
||||||
recognition = new webkitSpeechRecognition();
|
recognition = new webkitSpeechRecognition();
|
||||||
} else {
|
|
||||||
console.log("Speech recognition not supported");
|
|
||||||
recognition = null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
recognition!.interimResults = false;
|
if (recognition) {
|
||||||
|
recognition.interimResults = false;
|
||||||
|
recognition.onstart = () => {
|
||||||
|
recording = true;
|
||||||
|
};
|
||||||
|
recognition.onresult = (event) => {
|
||||||
|
// Stop speech recognition, submit the form and remove the pulse
|
||||||
|
const last = event.results.length - 1;
|
||||||
|
const text = event.results[last][0].transcript;
|
||||||
|
input.value = text;
|
||||||
|
recognition.stop();
|
||||||
|
recording = false;
|
||||||
|
submitForm(true);
|
||||||
|
};
|
||||||
|
} else {
|
||||||
|
console.log("Speech recognition not supported");
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
// Scroll to the bottom of the chat on update
|
// Scroll to the bottom of the chat on update
|
||||||
|
@ -231,24 +246,11 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
const recordToggle = () => {
|
const recordToggle = () => {
|
||||||
// Check if already recording - if so, stop
|
// Check if already recording - if so, stop - else start
|
||||||
if (recording) {
|
if (recording) {
|
||||||
recognition?.stop();
|
recognition?.stop();
|
||||||
recording = false;
|
recording = false;
|
||||||
} else {
|
} else {
|
||||||
// Mark as recording
|
|
||||||
recording = true;
|
|
||||||
|
|
||||||
// Start speech recognition
|
|
||||||
recognition!.onresult = (event) => {
|
|
||||||
// Stop speech recognition, submit the form and remove the pulse
|
|
||||||
const last = event.results.length - 1;
|
|
||||||
const text = event.results[last][0].transcript;
|
|
||||||
input.value = text;
|
|
||||||
recognition.stop();
|
|
||||||
recording = false;
|
|
||||||
submitForm(true);
|
|
||||||
};
|
|
||||||
recognition?.start();
|
recognition?.start();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue