import useSpeechToTextBrowser from './useSpeechToTextBrowser'; import useSpeechToTextExternal from './useSpeechToTextExternal'; import useGetAudioSettings from './useGetAudioSettings'; const useSpeechToText = ( setText: (text: string) => void, onTranscriptionComplete: (text: string) => void, ): { isLoading?: boolean; isListening?: boolean; stopRecording: () => void | (() => Promise); startRecording: () => void | (() => Promise); } => { const { speechToTextEndpoint } = useGetAudioSettings(); const externalSpeechToText = speechToTextEndpoint === 'external'; const { isListening: speechIsListeningBrowser, isLoading: speechIsLoadingBrowser, startRecording: startSpeechRecordingBrowser, stopRecording: stopSpeechRecordingBrowser, } = useSpeechToTextBrowser(setText, onTranscriptionComplete); const { isListening: speechIsListeningExternal, isLoading: speechIsLoadingExternal, externalStartRecording: startSpeechRecordingExternal, externalStopRecording: stopSpeechRecordingExternal, } = useSpeechToTextExternal(setText, onTranscriptionComplete); const isListening = externalSpeechToText ? speechIsListeningExternal : speechIsListeningBrowser; const isLoading = externalSpeechToText ? speechIsLoadingExternal : speechIsLoadingBrowser; const startRecording = externalSpeechToText ? startSpeechRecordingExternal : startSpeechRecordingBrowser; const stopRecording = externalSpeechToText ? stopSpeechRecordingExternal : stopSpeechRecordingBrowser; return { isLoading, isListening, stopRecording, startRecording, }; }; export default useSpeechToText;