Spaces:
Build error
Build error
/** | |
* 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; | |