UNPKG

@varunmhajan/hom-i-voice-ai

Version:

Voice AI utilities for home loan assistance with India-specific formatting

135 lines 3.42 kB
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