Voice dictation
A mic button in the composer turns speech into text in real time. It uses the speech recognition built into the system web view (the Web Speech API), so there is no extra model to install - but it also means the platform itself decides what happens to the audio.
How it works
Click the mic (Voice dictation) next to the send button to start. While it listens, the button turns red and pulses. Whatever is already in the message box stays, and what you say is appended after it: interim guesses appear as you speak and settle into final text as the engine commits each phrase.
Click the mic again to stop. Sending the message stops dictation for you: what is in the box is what gets sent, and anything the engine was still finishing is dropped rather than written back into the empty box. Dictation also ends if the speech engine closes the session on its own. Recognition uses the web view’s language - normally your system display language; Loach has no separate language setting.
You can edit the message box while dictation is running. Your changes are kept, and the next phrase you say is added at the end of the text as it now stands.
When dictation fails
Problems show as a short line under the message box:
- “Microphone access was blocked. Allow it in your OS sound settings to dictate.” - the microphone permission was denied, or the platform’s speech service refused the request. Check that apps are allowed to use the microphone in your OS privacy settings.
- “Dictation error: …” - any other failure, followed by the engine’s own error code (for example
networkwhen an online speech service can’t be reached, oraudio-capturewhen no microphone is available). - “Couldn’t start dictation. Try again.” - the engine refused to start.
- “Voice dictation isn’t available on this device.” - the web view offers the API but couldn’t create a recogniser.
Stopping before you say anything is not an error, so nothing is shown.
Where it shows up
The mic button only appears when the system web view exposes the Web Speech API. Where it doesn’t, the button is hidden rather than showing a button that does nothing. In practice:
- Windows - WebView2 exposes the API, so the button shows.
- Linux - usually hidden: most WebKitGTK builds don’t provide the API.
- macOS - shows only if the system WebKit exposes the API.
- Private Chat - never. Private Chat leaves the mic out on purpose, because the recogniser may send audio off your machine.
On Chromium-based engines such as WebView2, audio for the speech recogniser can be sent to an online speech service rather than processed on your machine. Voice dictation is not guaranteed to be offline, even though the rest of Loach is local-first. If that is a concern, stick to typing.