UNPKG

@varunmhajan/hom-i-voice-ai

Version:

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

143 lines 4.29 kB
import { EventEmitter } from 'eventemitter3'; export interface VoiceConfig { apiKey: string; baseUrl?: string; language?: string; voiceId?: string; audioFormat?: 'mp3' | 'wav' | 'ogg'; priority?: 'speed' | 'quality' | 'balanced'; mode?: 'full-voice' | 'stt-only' | 'tts-only' | 'auto'; enableSTT?: boolean; enableTTS?: boolean; autoPlay?: boolean; enableCompression?: boolean; enableCaching?: boolean; chunkSize?: number; maxCacheSize?: number; timeout?: number; retryAttempts?: number; ultraFastMode?: boolean; preloadVoices?: boolean; enableWebWorkers?: boolean; } export interface ConversationMessage { role: 'user' | 'assistant'; content: string; timestamp: Date; type: 'text' | 'voice' | 'call'; audioData?: string; metadata?: Record<string, unknown>; } export interface VoiceResponse { success: boolean; message?: string; audio?: string; audioData?: { audio: string; mimeType: string; duration?: number; }; conversationHistory?: ConversationMessage[]; metadata?: { processingTime: number; endpoint: string; model?: string; cached?: boolean; }; error?: string; } export interface AudioInput { audio: string; mimeType: string; } /** * Ultra-fast Voice AI Client with minimal latency optimizations */ export declare class VoiceClient extends EventEmitter { private config; private conversationHistory; private audioCache; private isProcessing; private requestQueue; private processingQueue; private abortController?; private performanceMetrics; constructor(config: VoiceConfig); private initializeOptimizations; private verifyApiKey; private preloadVoiceModels; private initializeWebWorkers; /** * Send voice message with ultra-fast processing */ sendVoiceMessage(input: Blob | File | AudioInput | string, options?: Partial<VoiceConfig>): Promise<VoiceResponse>; /** * Send text message optimized for speed */ sendTextMessage(text: string, options?: Partial<VoiceConfig>): Promise<VoiceResponse>; /** * Transcribe audio only (no TTS response) */ transcribeAudio(audioInput: Blob | File | AudioInput, options?: Partial<VoiceConfig>): Promise<VoiceResponse>; /** * Convert text to speech with caching */ textToSpeech(text: string, options?: Partial<VoiceConfig>): Promise<VoiceResponse>; /** * Play audio with optimized loading */ playAudio(audioData: string): Promise<void>; private prepareRequestBody; private makeRequest; private generateCacheKey; private getCachedResponse; private cacheResponse; private manageCacheSize; private updatePerformanceMetrics; private handleError; private blobToBase64; getConversationHistory(): ConversationMessage[]; clearConversationHistory(): void; clearCache(): void; getPerformanceMetrics(): { averageLatency: number; requestCount: number; cacheHitRate: number; errorRate: number; }; getStatus(): { isProcessing: boolean; cacheSize: number; conversationLength: number; config: { apiKey: string; baseUrl: string; language: string; voiceId: string; audioFormat: "mp3" | "wav" | "ogg"; priority: "speed" | "quality" | "balanced"; mode: "full-voice" | "stt-only" | "tts-only" | "auto"; enableSTT: boolean; enableTTS: boolean; autoPlay: boolean; enableCompression: boolean; enableCaching: boolean; chunkSize: number; maxCacheSize: number; timeout: number; retryAttempts: number; ultraFastMode: boolean; preloadVoices: boolean; enableWebWorkers: boolean; }; performance: { averageLatency: number; requestCount: number; cacheHitRate: number; errorRate: number; }; }; updateConfig(updates: Partial<VoiceConfig>): void; destroy(): void; } //# sourceMappingURL=VoiceClient.d.ts.map