import * as ort from "onnxruntime-web"; import type { ModelConfig } from "./model-types.js"; import type { AsrTranscriber, AudioSamples, ConfigureOrtWebOptions, DecoderOptions, OrtTensor, SessionOptions, TensorData, TensorMap, TokenFrame, TranscriptResult } from "./types.js"; import { EncoderModel } from "./models.js"; type TokenVocabulary = string[]; type EncoderLayout = "BCT" | "BTV" | "BVT"; type TensorMetadata = { name: string; type?: string; shape?: readonly (number | string | undefined)[]; }; type DecoderKind = "whisper-ort" | "whisper-hf" | "aed" | "gigaam-rnnt" | "tone-ctc" | "sherpa-transducer" | "ctc" | "rnnt" | "tdt" | "nemo-conformer"; interface DecoderResult { tokenIds: number[]; tokenFrames: TokenFrame[]; totalFrames: number; } interface EncodedAudio { encodedData: TensorData; encodedDims: readonly number[]; encodedLayout: EncoderLayout; encodedLength: number; } interface EncoderInputs { signal: OrtTensor; length: OrtTensor; } interface EncoderLike { audioSignalName: string; lengthName: string; prepareInputsFromWaveform(samples: Float32Array): EncoderInputs; run(signal: OrtTensor, length: OrtTensor): Promise; } interface PreprocessorLike { run(audioSamples: Float32Array): Promise; } interface DecoderLike { decode(encodedData: TensorData, encodedDims: readonly number[], encodedLayout: EncoderLayout, encodedLength: number): Promise; } interface CanaryOptions { language?: string; targetLanguage?: string; pnc?: "yes" | "no"; } interface AsrModelOptions { preprocessor?: PreprocessorLike | null; encoder: EncoderLike; decoder: DecoderLike; tokens: TokenVocabulary; sampleRate?: number; } interface SessionBundleOptions { config?: ModelConfig; tokens: TokenVocabulary; encoderSession: ort.InferenceSession; decoderSession: ort.InferenceSession; } interface GigaamModelOptions extends SessionBundleOptions { jointSession: ort.InferenceSession; } interface ToneModelOptions { config?: ModelConfig; tokens: TokenVocabulary; session: ort.InferenceSession; } interface SherpaModelOptions { config?: ModelConfig; tokens: TokenVocabulary; encoderSession: ort.InferenceSession; decoderSession: ort.InferenceSession; joinerSession: ort.InferenceSession; } interface CreateAsrModelOptions { modelType?: string; decoderKind?: DecoderKind | string; config?: ModelConfig; preprocessorModel?: string | null; encoderModel?: string | null; decoderModel?: string | null; decoderJointModel?: string | null; whisperModel?: string | null; vocabularyText?: string | null; vocabJson?: string | null; addedTokensJson?: string | null; sessionOptions?: SessionOptions; decoderOptions?: DecoderOptions; } /** Configure ONNX Runtime Web global environment settings. */ export declare function configureOrtWeb(options?: ConfigureOrtWebOptions): void; export declare class AsrModel implements AsrTranscriber { readonly preprocessor: PreprocessorLike | null; readonly encoder: EncoderLike; readonly decoder: DecoderLike; readonly tokens: TokenVocabulary; readonly sampleRate: number; constructor({ preprocessor, encoder, decoder, tokens, sampleRate }: AsrModelOptions); transcribeSamples(samples: AudioSamples, sampleRate?: number): Promise; transcribeWavBuffer(arrayBuffer: ArrayBuffer): Promise; } export declare class NemoAedModel implements AsrTranscriber { readonly config?: ModelConfig; readonly tokens: TokenVocabulary; readonly tokenToId: Map; readonly encoderSession: ort.InferenceSession; readonly decoderSession: ort.InferenceSession; readonly encoderHelper: EncoderModel; readonly sampleRate: number; readonly maxSequenceLength: number; readonly encoderOutputEmbeddingsName: string; readonly encoderOutputMaskName: string; readonly decoderInputIdName: string; readonly decoderEncoderEmbeddingsName: string; readonly decoderEncoderMaskName: string; readonly decoderMemsName: string; readonly decoderInputIdType: string; readonly decoderMemsType: string; readonly decoderMemsShapeTemplate: readonly (number | string | undefined)[]; readonly logitsName: string; readonly decoderHiddenStatesName: string; constructor({ config, tokens, encoderSession, decoderSession }: SessionBundleOptions); canaryPrefix(options?: CanaryOptions): number[]; initialMems(batchSize: number): ort.Tensor; transcribeSamples(samples: AudioSamples, sampleRate?: number, options?: CanaryOptions): Promise; transcribeWavBuffer(arrayBuffer: ArrayBuffer, options?: CanaryOptions): Promise; } export declare class GigaamRnntModel implements AsrTranscriber { readonly config?: ModelConfig; readonly tokens: TokenVocabulary; readonly encoderSession: ort.InferenceSession; readonly decoderSession: ort.InferenceSession; readonly jointSession: ort.InferenceSession; readonly sampleRate: number; readonly encoderHelper: EncoderModel; readonly blankTokenId: number; readonly maxTokensPerStep: number; readonly decoderTargetName: string; readonly decoderTargetLengthName: string | null; readonly decoderTargetType: string; readonly decoderTargetLengthType: string; readonly decoderStateInputNames: string[]; readonly decoderVectorOutputName: string; readonly decoderStateOutputNames: string[]; readonly jointEncoderInputName: string; readonly jointDecoderInputName: string; readonly jointOutputName: string; readonly jointEncoderShape: readonly (number | string | undefined)[]; readonly jointDecoderShape: readonly (number | string | undefined)[]; constructor({ config, tokens, encoderSession, decoderSession, jointSession }: GigaamModelOptions); initialDecoderStates(batchSize?: number): Map; adaptJointInput(tensor: ort.Tensor, targetShape: readonly (number | string | undefined)[]): ort.Tensor; runJointArgmax(encoderFrameTensor: ort.Tensor, decoderVectorTensor: ort.Tensor): Promise; transcribeSamples(samples: AudioSamples, sampleRate?: number): Promise; transcribeWavBuffer(arrayBuffer: ArrayBuffer): Promise; } export declare class ToneCtcModel implements AsrTranscriber { readonly config?: ModelConfig; readonly tokens: TokenVocabulary; readonly session: ort.InferenceSession; readonly sampleRate: number; readonly blankTokenId: number; readonly signalName: string; readonly stateName: string; readonly logitsName: string; readonly nextStateName: string; readonly signalMeta: TensorMetadata | null; readonly stateMeta: TensorMetadata | null; readonly chunkSamples: number; readonly stateType: string; readonly stateShape: number[]; constructor({ config, tokens, session }: ToneModelOptions); toIntPcm(samples: Float32Array): Int32Array; decodeCtcGreedy(tokens: number[], tokenFrames: TokenFrame[], sequence: readonly number[], frameStartIndex: number): void; transcribeSamples(samples: AudioSamples, sampleRate?: number): Promise; transcribeWavBuffer(arrayBuffer: ArrayBuffer): Promise; } export declare class SherpaTransducerModel implements AsrTranscriber { readonly config: ModelConfig; readonly tokens: TokenVocabulary; readonly encoderSession: ort.InferenceSession; readonly decoderSession: ort.InferenceSession; readonly joinerSession: ort.InferenceSession; readonly sampleRate: number; readonly blankTokenId: number; readonly maxSymbolsPerFrame: number; readonly encoderInputName: string; readonly encoderLengthName: string | null; readonly encoderInputMeta: TensorMetadata | null; readonly encoderLengthMeta: TensorMetadata | null; readonly encoderOutputName: string; readonly encoderLengthOutName: string | null; readonly decoderInputName: string; readonly decoderInputMeta: TensorMetadata | null; readonly decoderOutputName: string; readonly contextSize: number; readonly decoderInputType: string; readonly joinerEncName: string; readonly joinerDecName: string; readonly joinerOutputName: string; readonly joinerEncShape: readonly (number | string | undefined)[]; readonly joinerDecShape: readonly (number | string | undefined)[]; readonly encoderFeatureConfig: ModelConfig; readonly encoderHelper: EncoderModel; constructor({ config, tokens, encoderSession, decoderSession, joinerSession }: SherpaModelOptions); adaptTensorToShape(tensor: ort.Tensor, targetShape: readonly (number | string | undefined)[]): ort.Tensor; makeDecoderInput(context: readonly number[]): ort.Tensor; runEncoder(samples: Float32Array): Promise; transcribeSamples(samples: AudioSamples, sampleRate?: number): Promise; transcribeWavBuffer(arrayBuffer: ArrayBuffer): Promise; } /** Create an ASR model runtime from resolved model files and config. */ export declare function createAsrModel({ modelType, decoderKind, config, preprocessorModel, encoderModel, decoderModel, decoderJointModel, whisperModel, vocabularyText, vocabJson, addedTokensJson, sessionOptions, decoderOptions, }?: CreateAsrModelOptions): Promise; export {}; //# sourceMappingURL=asr-model.d.ts.map