interface SpeechRecognition extends EventTarget { continuous: boolean; interimResults: boolean; lang: string; onstart: ((this: SpeechRecognition, ev: Event) => void) | null; onend: ((this: SpeechRecognition, ev: Event) => void) | null; onerror: ((this: SpeechRecognition, ev: SpeechRecognitionErrorEvent) => void) | null; onresult: ((this: SpeechRecognition, ev: SpeechRecognitionEvent) => void) | null; onspeechstart: ((this: SpeechRecognition, ev: Event) => void) | null; onspeechend: ((this: SpeechRecognition, ev: Event) => void) | null; start(): void; stop(): void; abort(): void; } interface SpeechRecognitionErrorEvent extends Event { error: string; message: string; } interface SpeechRecognitionEvent extends Event { resultIndex: number; results: SpeechRecognitionResultList; } interface SpeechRecognitionResultList { length: number; [index: number]: SpeechRecognitionResult; } interface SpeechRecognitionResult { isFinal: boolean; length: number; [index: number]: SpeechRecognitionAlternative; } interface SpeechRecognitionAlternative { transcript: string; confidence: number; } interface Window { SpeechRecognition: new () => SpeechRecognition; webkitSpeechRecognition: new () => SpeechRecognition; }