UNPKG

react-native-executorch

Version:

An easy way to run AI models in react native with ExecuTorch

49 lines (48 loc) 1.71 kB
"use strict"; import { useEffect, useMemo, useState } from 'react'; import { SpeechToTextController } from '../../controllers/SpeechToTextController'; export const useSpeechToText = ({ modelName, encoderSource, decoderSource, tokenizerSource, overlapSeconds, windowSize, streamingConfig, preventLoad = false }) => { const [sequence, setSequence] = useState(''); const [isReady, setIsReady] = useState(false); const [downloadProgress, setDownloadProgress] = useState(0); const [isGenerating, setIsGenerating] = useState(false); const [error, setError] = useState(); const model = useMemo(() => new SpeechToTextController({ transcribeCallback: setSequence, isReadyCallback: setIsReady, isGeneratingCallback: setIsGenerating, onErrorCallback: setError, modelDownloadProgressCallback: setDownloadProgress }), []); useEffect(() => { model.configureStreaming(overlapSeconds, windowSize, streamingConfig); }, [model, overlapSeconds, windowSize, streamingConfig]); useEffect(() => { const loadModel = async () => { await model.loadModel(modelName, encoderSource, decoderSource, tokenizerSource); }; if (!preventLoad) { loadModel(); } }, [model, modelName, encoderSource, decoderSource, tokenizerSource, preventLoad]); return { isReady, isGenerating, downloadProgress, configureStreaming: model.configureStreaming, sequence, error, transcribe: (waveform, audioLanguage) => model.transcribe(waveform, audioLanguage), streamingTranscribe: (streamAction, waveform, audioLanguage) => model.streamingTranscribe(streamAction, waveform, audioLanguage) }; }; //# sourceMappingURL=useSpeechToText.js.map