react-native-executorch
Version:
An easy way to run AI models in react native with ExecuTorch
45 lines (44 loc) • 1.42 kB
JavaScript
import { useEffect, useState } from 'react';
import { SpeechToTextController } from '../../controllers/SpeechToTextController';
export const useSpeechToText = ({
modelName,
encoderSource,
decoderSource,
tokenizerSource,
overlapSeconds,
windowSize,
streamingConfig
}) => {
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, _] = useState(() => new SpeechToTextController({
transcribeCallback: setSequence,
isReadyCallback: setIsReady,
isGeneratingCallback: setIsGenerating,
onErrorCallback: setError,
modelDownloadProgessCallback: setDownloadProgress,
overlapSeconds: overlapSeconds,
windowSize: windowSize,
streamingConfig: streamingConfig
}));
useEffect(() => {
const loadModel = async () => {
await model.loadModel(modelName, encoderSource, decoderSource, tokenizerSource);
};
loadModel();
}, [model, modelName, encoderSource, decoderSource, tokenizerSource]);
return {
isReady,
isGenerating,
downloadProgress,
configureStreaming: model.configureStreaming,
sequence,
error,
transcribe: waveform => model.transcribe(waveform)
};
};
//# sourceMappingURL=useSpeechToText.js.map
;