User Manual
Reference documentation for blah., a local push-to-talk dictation app. It covers the hotkeys, the dictation pipeline, every voice and setting, file locations, and troubleshooting. Everything blah. does runs on your machine, offline, with no account.
Overview
blah. is a push-to-talk dictation tool. You hold a hotkey, speak, and release; the audio is transcribed, optionally reshaped by a voice, and pasted into whatever window had focus.
blah. has no main window. It lives in the menu bar on macOS, or the system tray on Windows — this manual calls it the blah. menu — and is controlled by two global hotkeys and that menu. The entire pipeline, speech recognition, voice cleanup, translation, and privacy filtering, runs locally on your machine. There is no account, no network call, and no telemetry, and the app works fully offline after installation.
- Runs on Mac (Apple Silicon, macOS 15 or later) or Windows with a Vulkan-capable GPU (NVIDIA, AMD, or Intel; 8 GB of graphics memory recommended).
- A microphone — any built-in or external mic works.
- All processing is local. Nothing you say or paste is sent anywhere.
- 30 voices, 21 translation languages, and an optional privacy filter.
Install & File Locations
On macOS, download the DMG (v1.0.8, 5.4 GB — the speech and language models are bundled inside), open it, and drag blah. to your Applications folder. On Windows, the installer is per-user and requires no administrator rights.
Blah-1.0.8.dmg is d1f3ee17a594963120382e9f45d989cace0a4d81b12a6f37a66e9e192d001dac. Compare with shasum -a 256 ~/Downloads/Blah-1.0.8.dmg.Open the blah. menu to reach almost everything: on macOS, click the blah. icon in the menu bar (top-right of the screen); on Windows, find it in the system tray by the clock (click the ^ overflow arrow if the icon is hidden) and right-click it. This menu is the app's main control surface.
| Path | Contents |
|---|---|
| /Applications/Blah.app | The installed application and its bundled models. |
| ~/Library/Application Support/Blah/settings.json | All settings, stored as plain JSON. |
| ~/Library/Application Support/Blah/stats.jsonl | One line per paste — counts only, never the text. |
| ~/Library/Application Support/Blah/transcriptions.jsonl | Transcript history, written only if you opt in. |
| ~/Library/Application Support/Blah/memos/ | Voice-memo WAV files (the default location; configurable in Settings). |
| Path | Contents |
|---|---|
| %LOCALAPPDATA%\Programs\Blah\ | The installed application and its bundled models. |
| %APPDATA%\Blah\settings.json | All settings, stored as plain JSON. |
| %APPDATA%\Blah\stats.jsonl | One line per paste — counts only, never the text. |
| %APPDATA%\Blah\transcriptions.jsonl | Transcript history, written only if you opt in. |
| Documents\blah-memos\ | Voice-memo WAV files (the default location; configurable in Settings). |
~/Library/Application Support/Blah on macOS, %APPDATA%\Blah\ on Windows); on Windows, also delete Documents\blah-memos, where voice memos are saved by default.Hotkeys & Gestures
blah. uses two independent global hotkeys: one for dictation and one for voice memos. Both the key and the activation gesture are configurable in Settings.
| Hotkey | Default (macOS) | Default (Windows) | Action |
|---|---|---|---|
| Dictate | Left Command | Left Alt | Records, transcribes, applies the voice and translation, and pastes. |
| Voice memo | Right Command | Right Alt | Records and saves a WAV file. No transcription. |
Gestures
- Double-tap and hold (default on Windows). Tap the key twice in quick succession and hold it down on the second tap. Recording runs while the key is held and finishes on release. This prevents an ordinary single key press from starting a recording.
- Press and hold (default on macOS). Hold the key down to record and release to finish. Simpler, but the key continues to perform its normal function in other applications, so choose one you do not otherwise use.
Keys You Can Bind
The two hotkeys cannot share a key, and the bindable keys differ by platform.
- macOS: the left or right Command, Option, or Control key; the Fn (Globe) key; or mouse buttons 3 through 8.
- Windows: the left, right, or either variant of Alt, Ctrl, Shift, and the Windows key; the function keys F13 through F16; Caps Lock, Scroll Lock, and Pause/Break; or the mouse Back and Forward buttons.
The Dictation Pipeline
When you release the hotkey, the audio passes through a fixed sequence of stages, all on-device. The order explains why a masked term is still cleaned up, and why a very short clip is pasted instantly.
- Detect spoken language. blah. detects the language you are speaking automatically, so you can dictate in any supported language without changing a setting.
- Silence guards. The clip is discarded before transcription if it is shorter than 0.4 seconds or quieter than an RMS of 0.005. This is why an accidental key tap produces no paste.
- Transcription. The speech model converts the audio to text on the GPU. Your custom vocabulary (section 11) is supplied here as a spelling hint.
- Macros. Voice macros (section 11) are expanded, longest trigger first. This runs before the privacy filter, so an expansion that contains private information is still caught.
- Privacy filter. If enabled, the text is scanned for personal information — names, emails, phone numbers, addresses, account numbers, and the like. In Flag mode a dialog lets you choose how to proceed; in Mask mode each match is silently replaced with
[REDACTED]. See section 09. - Voice cleanup. If a voice is selected, blah. rewrites the text in that style. See section 07.
- Translation. If a target language is set, the cleaned text goes through a second pass where blah. renders it in that language. It runs after voice cleanup, so a voice and a translation can be combined (for example, polish with Formal rephrase, then translate). See section 08.
- Polish and paste. Casing and spacing are adjusted for a clean mid-sentence insertion, focus is returned to your original window, and the text is pasted.
Cleanup Bypasses
To keep short commands instant, blah. is skipped when the text is shorter than four words (for example, "yes" or "okay, thanks") or, for the Simple voice only, already clean. The Format and Fun voices are exempt — a two-word phrase such as "x equals five" is exactly where conversion is useful — as is any dictation with an active profanity modifier. Translation always runs when a target language is set.
Warm Up
blah. loads on first use, which takes a few seconds, and stays resident while you work. After a configurable idle period it is unloaded to free memory. See Settings, "Free memory when idle" (section 10).
Menu Reference
Open the blah. menu by clicking the menu-bar icon on macOS, or right-clicking the tray icon on Windows. The top line is a live status read-out (Idle, Recording, Transcribing, Cleaning, or Pasting). A check mark indicates the active selection in each submenu.
Preview Editor
Holding Shift during a dictation opens the cleaned text in a small editor instead of pasting it, so you can correct the wording and change the voice or language before committing.
The editor shows the original transcript (labelled "Heard") above an editable field containing the cleaned result. Changing the Voice or Translate selector re-runs the transformation live against the original transcript. The field is focused automatically with the cursor at the end.
| macOS | Windows | Action |
|---|---|---|
| Cmd+Enter | Ctrl+Enter | Commit and paste the edited text. |
| Esc | Esc or Ctrl+W | Cancel and close without pasting. |
| Cmd+R | Ctrl+R | Reset to the latest model output for the current voice and language. |
Voices
A voice is a local transformation applied to the transcript. Select one from the blah. menu (Voice submenu) or per-dictation in the Preview editor. With no voice selected, the transcript is pasted verbatim. The voices are grouped into five families.
Cleanup
Format
Code
Reference
Fun
Translation
Set a target language in the blah. menu (Translate submenu). Translation runs as a second pass after the voice, so combinations work — Formal rephrase with Spanish, for example, produces polished English that is then translated.
Twenty-one target languages are available, including English itself — pick English to translate dictation spoken in another language into English. The full list: English, Spanish, Mandarin Chinese, French, German, Russian, Italian, Japanese, Brazilian Portuguese, Korean, Modern Standard Arabic, Hindi, Dutch, Turkish, Polish, Vietnamese, Thai, Indonesian, Greek, Cantonese (written in traditional Chinese), and Swedish.
Privacy Filter
An optional pass that detects personal information before it is pasted. Set the mode in the blah. menu (Privacy filter submenu). It runs before voice cleanup, so blah. only ever sees the masked placeholder, never the original value.
| Mode | Behavior |
|---|---|
| Off | No scanning. This is the default. |
| Flag | Scans every dictation. If anything is detected, a dialog shows the original and a masked version and asks how to proceed. |
| Mask | Scans and silently replaces sensitive spans with [REDACTED] before pasting. |
Detected categories: email addresses, URLs, phone numbers, street addresses, account and card numbers, API keys and secrets, dates, and personal names. Every match is replaced with the same [REDACTED] placeholder, so the category is not revealed in the pasted text.
In Flag mode the dialog offers Paste Masked, Paste Original, or Cancel.
Settings Reference
Open from the blah. menu (Settings). Changes take effect when you click Save; Cancel discards them. The defaults are listed below.
| Control | Default (macOS) | Default (Windows) | Notes |
|---|---|---|---|
| Dictate key | Left Command | Left Alt | Any of the keys listed in section 03. |
| Dictate gesture | Press and hold | Double-tap and hold | Either gesture, set per hotkey. |
| Voice memo key | Right Command | Right Alt | Must differ from the dictate key. |
| Voice memo gesture | Press and hold | Double-tap and hold |
| Control | Default | Notes |
|---|---|---|
| Microphone | System default | Choose a device if dictation captures only silence. |
| Privacy filter | Off | Off, Flag, or Mask. |
| Profanity filter | Off | Tone modifier for cleanup. |
| Free memory when idle | 15 minutes | 15, 30, 60, or 120. Unloads blah. after this idle period. "Clear now" releases it immediately. |
| Control | Default | Notes |
|---|---|---|
| Auto-inject into focused window | On | When off, the result is left on the clipboard instead. |
| Restore clipboard after paste | On | Restores your previous clipboard contents. |
| Smart casing & spacing | On | One toggle: fixes capitalization and adds a space when inserting mid-sentence. |
| Open at login | Off | Launches blah. when you sign in. |
| Live captions | Off | See section 12. Ignored while the privacy filter is active. |
| Control | Default | Notes |
|---|---|---|
| Voice memo folder | ~/Library/Application Support/Blah/memos/ (macOS) Documents\blah-memos (Windows) | "Choose" sets a custom directory. |
| Vocabulary | Empty | One term per line. See section 11. |
| Voice macros | Empty | One trigger | expansion per line. |
At the bottom of the scrollable list a Reset section holds Run setup again (reopens the first-run wizard) and Delete all settings (resets everything, including vocabulary and macros, after confirmation; stats and memos are not affected). The pinned footer contains only Cancel and Save.
Vocabulary & Macros
Vocabulary
Proper nouns, jargon, and acronyms that the recognizer tends to misspell. Enter one term per line under Settings, Vocabulary. The terms are passed to the recognizer as a spelling hint that biases it toward those spellings. The hint is capped at roughly 244 tokens, so limit it to the terms that matter.
Macros
Text substitutions, entered as one trigger | expansion pair per line. Matching is case-insensitive and applies the longest matching trigger first. Macros run after transcription but before the privacy filter, so an expansion that contains private information is still caught. Multi-line expansions are stored with a literal newline marker.
my email sig | Jane Doe Senior Engineer, Acme Corp jane@acme.com
Live Captions
An optional strip above the overlay that displays a rolling transcript while you speak. Disabled by default; enable it in Settings.
It re-transcribes the captured audio several times per second and shows the raw output — no voice cleanup is applied to the live text, only to the final paste. It is disabled automatically whenever the privacy filter is active, so partial sensitive text is never displayed.
Transcribe a File
Open from the blah. menu (Transcribe file). Drag an audio or video file onto the drop zone, or use Choose file, to produce a transcript that can optionally be run through a voice or translation.
Most common formats are supported: audio (WAV, MP3, M4A, FLAC, OGG, AAC, Opus, WMA) and video (MP4, MOV, MKV, WebM, AVI, M4V, MPG, MPEG). The Voice and Translate selectors reshape the result without re-decoding the file. Long files are processed in chunks. Use Copy, Save (to a .txt file), or Clear on the result.
Voice Memos
The second hotkey (Right Command on macOS, Right Alt on Windows, by default) records audio without transcribing it, for quick ad-hoc captures. It uses the same hold-to-record gesture as dictation.
Each memo is saved as a 16-bit mono WAV file named memo-YYYYMMDD-HHMMSS.wav in the voice-memo folder (~/Library/Application Support/Blah/memos/ on macOS, Documents\blah-memos on Windows, by default). "Show voice memos" in the blah. menu opens that folder. Memos do not count toward stats.
Stats
Open from the blah. menu (Stats). A read-only grid showing three timeframes — Today, This week, and All time — across four rows.
| Row | Meaning |
|---|---|
| Dictations | Number of successful pastes. |
| Words | Total words pasted. |
| Time saved | Words divided by 40 WPM, minus the time spent dictating (clamped at zero). The 40 WPM figure is deliberately conservative. |
| Top voice | The most-used voice in that timeframe. |
The data is read from stats.jsonl, which records a timestamp, word count, voice, language, and duration — never the text itself. "Reset stats" deletes the file after confirmation.
Transcript History
An opt-in, local-only log of past dictations, with a review window. Disabled by default; enable it with the Enable toggle inside the Transcript history window, which opens from the blah. menu.
When enabled, each pasted dictation is appended to transcriptions.jsonl (text, voice, language, and timestamp). The window lists entries newest-first with per-entry Copy and Delete buttons, plus Refresh and Clear all. The log rotates at 5,000 entries, retaining the most recent 2,500.
About & Licenses
Open from the blah. menu (About blah.).
The window shows the version and copyright, links to the Software License Agreement (the bundled EULA) and the Privacy Policy, a Licenses button (the open-source and model licenses for everything blah. bundles), and Report a bug. All bundled components are license-compliant for offline use.
Troubleshooting
~/Library/Application Support/Blah/logs/ on macOS, or %APPDATA%\Blah\startup-crash.log on Windows.Frequently Asked Questions
~/Library/Application Support/Blah on macOS, or %APPDATA%\Blah\ and Documents\blah-memos on Windows.