mmi-js
Version:
Multi-Modal Input Library for voice, gesture, and traditional inputs.
26 lines (23 loc) • 757 B
JavaScript
class VoiceInput {
constructor(eventBus) {
this.eventBus = eventBus;
const SpeechRecognition = window.SpeechRecognition || window.webkitSpeechRecognition;
if (SpeechRecognition) {
this.recognition = new SpeechRecognition();
this.recognition.continuous = true;
this.recognition.onresult = this.handleResult.bind(this);
this.recognition.start();
} else {
console.warn('Web Speech API not supported.');
}
}
handleResult(event) {
for (let i = event.resultIndex; i < event.results.length; ++i) {
if (event.results[i].isFinal) {
const transcript = event.results[i][0].transcript.trim();
this.eventBus.emit('voice', { transcript });
}
}
}
}
export default VoiceInput;