react-native-executorch
Version:
An easy way to run AI models in React Native with ExecuTorch
57 lines (56 loc) • 2.33 kB
TypeScript
import { MODES, STREAMING_ACTION } from '../constants/sttDefaults';
import { AvailableModels } from '../types/stt';
import { ResourceSource } from '../types/common';
import { SpeechToTextLanguage } from '../types/stt';
export declare class SpeechToTextController {
private speechToTextNativeModule;
sequence: number[];
isReady: boolean;
isGenerating: boolean;
private tokenizerModule;
private overlapSeconds;
private windowSize;
private chunks;
private seqs;
private prevSeq;
private waveform;
private numOfChunks;
private streaming;
private decodedTranscribeCallback;
private isReadyCallback;
private isGeneratingCallback;
private onErrorCallback;
private config;
constructor({ transcribeCallback, isReadyCallback, isGeneratingCallback, onErrorCallback, overlapSeconds, windowSize, streamingConfig, }: {
transcribeCallback: (sequence: string) => void;
isReadyCallback?: (isReady: boolean) => void;
isGeneratingCallback?: (isGenerating: boolean) => void;
onErrorCallback?: (error: Error | undefined) => void;
overlapSeconds?: number;
windowSize?: number;
streamingConfig?: keyof typeof MODES;
});
load({ modelName, encoderSource, decoderSource, tokenizerSource, onDownloadProgressCallback, }: {
modelName: AvailableModels;
encoderSource?: ResourceSource;
decoderSource?: ResourceSource;
tokenizerSource?: ResourceSource;
onDownloadProgressCallback?: (downloadProgress: number) => void;
}): Promise<void>;
configureStreaming(overlapSeconds?: number, windowSize?: number, streamingConfig?: keyof typeof MODES): void;
private chunkWaveform;
private resetState;
private expectedChunkLength;
private getStartingTokenIds;
private decodeChunk;
private handleOverlaps;
private trimLeft;
private trimRight;
private trimSequences;
private validateAndFixLastChunk;
private tokenIdsToText;
transcribe(waveform: number[], audioLanguage?: SpeechToTextLanguage): Promise<string>;
streamingTranscribe(streamAction: STREAMING_ACTION, waveform?: number[], audioLanguage?: SpeechToTextLanguage): Promise<string>;
encode(waveform: Float32Array): Promise<null>;
decode(seq: number[]): Promise<number>;
}