@varunmhajan/hom-i-voice-ai
Version:
Voice AI utilities for home loan assistance with India-specific formatting
135 lines • 3.42 kB
TypeScript
import { EventEmitter } from 'eventemitter3';
export interface RecorderConfig {
sampleRate?: number;
channels?: number;
audioBitsPerSecond?: number;
mimeType?: string;
enableVAD?: boolean;
vadThreshold?: number;
silenceTimeout?: number;
minRecordingTime?: number;
maxRecordingTime?: number;
chunkDuration?: number;
enableNoiseSuppression?: boolean;
enableEchoCancellation?: boolean;
enableAutoGainControl?: boolean;
ultraFastMode?: boolean;
enableRealTimeProcessing?: boolean;
bufferSize?: number;
}
export interface RecorderState {
isRecording: boolean;
isProcessing: boolean;
voiceActivityDetected: boolean;
audioLevel: number;
recordingDuration: number;
error: string | null;
}
export interface AudioChunk {
data: Blob;
timestamp: number;
duration: number;
isLast?: boolean;
}
/**
* Ultra-fast Voice Recorder with advanced VAD and low-latency processing
*/
export declare class VoiceRecorder extends EventEmitter {
private config;
private mediaRecorder;
private mediaStream;
private audioContext;
private analyser;
private scriptProcessor;
private recordingState;
private audioChunks;
private recordingStartTime;
private silenceTimer;
private vadTimer;
private animationFrame;
private performanceMetrics;
constructor(config?: RecorderConfig);
private initializeAudioContext;
/**
* Start recording with optimized settings
*/
startRecording(): Promise<void>;
/**
* Stop recording and return audio data
*/
stopRecording(): Promise<Blob>;
/**
* Setup audio analysis for VAD and level monitoring
*/
private setupAudioAnalysis;
/**
* Setup optimized media recorder
*/
private setupMediaRecorder;
/**
* Find the best supported MIME type for recording
*/
private findBestMimeType;
/**
* Voice Activity Detection with optimized algorithms
*/
private startVoiceActivityDetection;
/**
* Stop voice activity detection
*/
private stopVoiceActivityDetection;
/**
* Start silence timer for auto-stop
*/
private startSilenceTimer;
/**
* Clear silence timer
*/
private clearSilenceTimer;
/**
* Start duration tracking with auto-stop
*/
private startDurationTracking;
/**
* Stop duration tracking
*/
private stopDurationTracking;
/**
* Process audio buffer for real-time analysis
*/
private processAudioBuffer;
/**
* Update performance metrics
*/
private updatePerformanceMetrics;
/**
* Handle errors consistently
*/
private handleError;
/**
* Cleanup resources
*/
private cleanup;
getState(): RecorderState;
getConfig(): RecorderConfig;
getPerformanceMetrics(): {
totalRecordings: number;
averageRecordingDuration: number;
vadAccuracy: number;
processingLatency: number;
};
updateConfig(updates: Partial<RecorderConfig>): void;
/**
* Check if browser supports recording
*/
static isSupported(): boolean;
/**
* Get supported MIME types
*/
static getSupportedMimeTypes(): string[];
/**
* Destroy recorder and cleanup all resources
*/
destroy(): void;
}
//# sourceMappingURL=VoiceRecorder.d.ts.map