LADLE's voice input uses the Web Speech API (`SpeechRecognition` / `webkitSpeechRecognition`) built into most browsers. The audio stream is processed by the OS's speech service (Google's on Chrome/Android, Apple's on Safari/iOS, Microsoft's on Edge). LADLE only sees the resulting text — the same way a keyboard entry arrives.
How to dictate
Click the microphone icon in the composer. The browser will prompt for microphone permission the first time (grant it — it's for this session only, and can be revoked in your browser settings). Speak; the transcript appears in the composer as you talk. Click the icon again to stop.
Browser support
Voice input is feature-detected; the icon is hidden entirely when the browser lacks support.
Language of transcription
The recognizer inherits the browser's UI language by default. To change: adjust your OS language settings or, on Chrome, chrome://settings/languages. LADLE does not override — we take whatever the browser gives us. Multi-language dictation (mid-sentence code-switch) works best on Chrome with 'auto detect language' enabled in Chrome's speech settings.
Privacy model
The audio stream never touches LADLE's servers. It flows: microphone → browser → OS speech service (which may or may not process locally depending on your OS — check your OS's dictation settings if this matters to you) → transcript back into the browser → into the composer's input field. Only the resulting text is sent to LADLE when you hit send. This is not our choice; it's the Web Speech API's architecture.
Known limitations
Silence detection ends the session after ~2-3 seconds of no speech (varies by browser). Long-form dictation may cut off mid-sentence; restart the mic to continue — your existing composed text is preserved. Punctuation is inferred by the recognizer, not perfectly. Special characters and code are best typed. The interim-vs-final distinction between hypothesized text (dim) and finalized text (bright) is subtle — watch for the fade.