hama-js
Version:
G2P, phoneme-ASR, and P2G inference for Node, Bun, and browsers, powered by a self-contained WASM engine (no onnxruntime).
53 lines (52 loc) • 1.7 kB
TypeScript
import { type PhonemeSpan } from "./ctc.js";
export interface ASRNodeOptions {
modelPath?: string;
vocabPath?: string;
sampleRate?: number;
blankToken?: string;
unkToken?: string;
wordBoundaryToken?: string;
temperature?: number;
blankBias?: number;
unkBias?: number;
collapseRepeats?: boolean;
}
export interface ASRResult {
phonemes: string[];
phonemeText: string;
wordPhonemeText: string;
tokenIds: number[];
frameTokenIds: number[];
numFrames: number;
}
export interface CTCDecodeOptions {
blankId: number;
wordBoundaryToken: string;
collapseRepeats?: boolean;
}
export declare const decodeCtcTokens: (frameTokenIds: readonly number[], decoderTokens: readonly string[], options: CTCDecodeOptions) => {
tokenIds: number[];
phonemes: string[];
words: string[][];
};
export declare class ASRNodeModel {
private readonly engine;
private readonly handle;
private readonly decoderTokens;
private readonly blankId;
private readonly unkId;
private readonly wordBoundaryToken;
private readonly temperature;
private readonly blankBias;
private readonly unkBias;
private readonly collapseRepeats;
private readonly sampleRate;
private constructor();
static create(options?: ASRNodeOptions): Promise<ASRNodeModel>;
get inputFormat(): "waveform";
transcribeWavFile(wavPath: string): Promise<ASRResult>;
transcribeWaveform(waveform: readonly number[] | Float32Array, sampleRate: number): Promise<ASRResult>;
/** Approximate per-phoneme time spans (ms) from an ASRResult. */
phonemeSpans(result: ASRResult): PhonemeSpan[];
private argmaxFrames;
}