murmuraba
Version:
Real-time audio noise reduction with advanced chunked processing for web applications
81 lines • 2.75 kB
TypeScript
import { EventEmitter } from './event-emitter';
import { MurmubaraConfig, EngineEvents, StreamController, DiagnosticInfo, DiagnosticReport, ProcessingMetrics, ChunkConfig, EngineState } from '../types';
export declare class MurmubaraEngine extends EventEmitter<EngineEvents> {
private config;
private stateManager;
private logger;
private workerManager;
private metricsManager;
private audioContext?;
private activeStreams;
private wasmModule?;
private rnnoiseState?;
private inputPtr?;
private outputPtr?;
private initPromise?;
private cleanupTimer?;
private errorHistory;
private agcEnabled;
private agc?;
private audioWorkletEngine?;
private useAudioWorklet;
private inputGainNode?;
private inputGain;
private eventBridge;
private bridgeToken;
constructor(config?: MurmubaraConfig);
private setupEventForwarding;
private setupAutoCleanup;
initialize(): Promise<void>;
private performInitialization;
private checkEnvironmentSupport;
private getMissingFeatures;
private initializeAudioContext;
private initializeAudioWorkletEngine;
private loadWasmModuleWithTimeout;
private recordError;
private initializeDegraded;
private loadWasmModule;
private warmupModel;
private processFrame;
processStream(stream: MediaStream, chunkConfig?: ChunkConfig): Promise<StreamController>;
private createStreamController;
private createAudioWorkletStreamController;
private createScriptProcessorStreamController;
isAGCEnabled(): boolean;
setAGCEnabled(enabled: boolean): void;
getAGCConfig(): {
targetLevel: number;
maxGain: number;
enabled: boolean;
};
getReductionFactor(level?: string): number;
private generateStreamId;
getState(): EngineState;
isUsingAudioWorklet(): boolean;
destroy(force?: boolean): Promise<void>;
getMetrics(): ProcessingMetrics;
onMetricsUpdate(callback: (metrics: ProcessingMetrics) => void): void;
isActive(): boolean;
/**
* Set the input gain level dynamically
* @param gain - Gain value between 0.5 and 3.0
*/
setInputGain(gain: number): void;
/**
* Get the current input gain level
*/
getInputGain(): number;
getDiagnostics(): DiagnosticInfo;
private getBrowserName;
private getBrowserVersion;
private getAudioAPIsSupported;
runDiagnosticTests(): Promise<DiagnosticReport>;
/**
* Process a WAV file with RNNoise
* @param arrayBuffer WAV file as ArrayBuffer
* @returns Processed WAV file as ArrayBuffer
*/
processFile(arrayBuffer: ArrayBuffer): Promise<ArrayBuffer>;
}
//# sourceMappingURL=murmuraba-engine.d.ts.map