RealChar / client /web /src /hooks /useSpeechRecognition.js
pycui's picture
Add RealChar deployment for HuggingFace (V0)
babeaf6
/**
* src/hooks/useSpeechRecognition.js
* Initialize speech recognition. Start and stop listening.
*
* created by Lynchee on 7/16/23
*/
import { useRef, useEffect } from 'react';
const useSpeechRecognition = (onResult, onSpeechEnd, callActive) => {
const recognition = useRef(null);
// initialize speech recognition
const initializeSpeechRecognition = () => {
window.SpeechRecognition = window.SpeechRecognition || window.webkitSpeechRecognition;
recognition.current = new window.SpeechRecognition();
recognition.current.interimResults = true;
recognition.current.maxAlternatives = 1;
recognition.current.continuous = true;
recognition.current.onend = () => {
if (callActive.current) {
startListening();
}
};
recognition.current.onresult = onResult;
recognition.current.onspeechend = onSpeechEnd;
};
const startListening = () => {
if (!recognition.current) return;
console.log("start listening");
recognition.current.start();
}
const stopListening = () => {
if (!recognition.current) return;
console.log("stop listening");
recognition.current.stop();
}
const closeRecognition = () => {
stopListening();
recognition.current = null;
}
return {
startListening,
stopListening,
closeRecognition,
initializeSpeechRecognition,
};
};
export default useSpeechRecognition;