UNPKG

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
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; }