@lobehub/tts
Version:
A high-quality & reliable TTS React Hooks library
40 lines (38 loc) • 1.16 kB
JavaScript
import { useAudioRecorder } from "../useAudioRecorder/index.mjs";
import { useSpeechRecognitionCore } from "./useSpeechRecognitionCore.mjs";
import { useCallback } from "react";
//#region src/react/useSpeechRecognition/useSpeechRecognitionAutoStop.ts
const useSpeechRecognitionAutoStop = (locale, { onStart, onStop, onBlobAvailable, onRecognitionFinish, ...rest } = {}) => {
const { time, formattedTime, start: startRecord, stop: stopRecord, blob, url } = useAudioRecorder(onBlobAvailable);
const { isLoading, start, stop, text } = useSpeechRecognitionCore(locale, {
onRecognitionFinish: (data) => {
onRecognitionFinish?.(data);
stopRecord();
},
...rest
});
const handleStart = useCallback(() => {
onStart?.();
start();
startRecord();
}, [start, startRecord]);
const handleStop = useCallback(() => {
onStop?.();
stop();
stopRecord();
}, [stop, stopRecord]);
return {
blob,
formattedTime,
isLoading,
isRecording: isLoading,
response: new Response(JSON.stringify({ text }), { status: 200 }),
start: handleStart,
stop: handleStop,
text,
time,
url
};
};
//#endregion
export { useSpeechRecognitionAutoStop };