UNPKG

@sapphi-red/speex-preprocess-wasm

Version:
105 lines (100 loc) 3.71 kB
type I16Ptr = number type SpeexPreprocessState = number type SpeexPreprocessCtlRequest = number /** @internal */ interface SpeexModule extends Pick<EmscriptenModule, 'wasmBinary' | 'locateFile' | '_free' | '_malloc' | 'HEAP16' | 'HEAP32' | 'HEAPF32'> { /** * Creates a new preprocessing state. You MUST create one state per channel processed. * @param frame_size Number of samples to process at one time (should correspond to 10-20 ms). Must be * the same value as that used for the echo canceller for residual echo cancellation to work. * @param sampling_rate Sampling rate used for the input. * @return Newly created preprocessor state */ _speex_preprocess_state_init( frame_size: number, sampling_rate: number ): SpeexPreprocessState /** * Destroys a preprocessor state * @param st Preprocessor state to destroy */ _speex_preprocess_state_destroy(state: SpeexPreprocessState): void /** * Preprocess a frame * @param st Preprocessor state * @param x Audio sample vector (in and out). Must be same size as specified in speex_preprocess_state_init(). * @return Bool value for voice activity (1 for speech, 0 for noise/silence), ONLY if VAD turned on. */ _speex_preprocess_run(state: SpeexPreprocessState, x: I16Ptr): 1 | 0 /** * Used like the ioctl function to control the preprocessor parameters * @param st Preprocessor state * @param request ioctl-type request (one of the SPEEX_PREPROCESS_* macros) * @param ptr Data exchanged to-from function * @return 0 if no error, -1 if request in unknown */ _speex_preprocess_ctl( state: SpeexPreprocessState, request: SpeexPreprocessCtlRequest, void_: unknown ): -1 | 0 } declare const loadModule: EmscriptenModuleFactory<SpeexModule> type LoadOptions = Pick<SpeexModule, 'locateFile' | 'wasmBinary'>; declare class SpeexPreprocessor { private readonly speexModule; readonly frameSize: number; readonly samplingRate: number; private readonly state; private processBuffPtr; private processI16Buff; private ctlBuffPtr?; constructor(speexModule: Readonly<SpeexModule>, frameSize: number, samplingRate: number); private mallocCtlBuffPtr; private ctl; private ctlGetI32; private ctlSetI32; private ctlGetBool; private ctlSetBool; private ctlGetF32; private ctlSetF32; private ctlGetI32Array; get denoise(): boolean; set denoise(value: boolean); get agc(): boolean; set agc(value: boolean); get vad(): boolean; set vad(value: boolean); get agcLevel(): number; set agcLevel(value: number); get probStart(): number; set probStart(value: number); get probContinue(): number; set probContinue(value: number); get noiseSuppress(): number; set noiseSuppress(value: number); get echoSuppress(): number; set echoSuppress(value: number); get echoSuppressActive(): number; set echoSuppressActive(value: number); get agcIncrement(): number; set agcIncrement(value: number); get agcDecrement(): number; set agcDecrement(value: number); get agcMaxGain(): number; set agcMaxGain(value: number); get agcLoudness(): number; get agcGain(): number; get psdSize(): number; get psd(): Int32Array<ArrayBuffer>; get noisePsdSize(): number; get noisePsd(): Int32Array<ArrayBuffer>; get prob(): number; get agcTarget(): number; set agcTarget(value: number); private assertFrameSize; processInt16(frame: Int16Array): boolean; process(frame: Float32Array): boolean; destroy(): void; } export { type LoadOptions, type SpeexModule, SpeexPreprocessor, loadModule as loadSpeexModule };