diff --git a/README.md b/README.md index a691cc8..d62568f 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,122 @@ -# Heard +

+ Heard app icon +

-A macOS menu bar app that automatically detects Microsoft Teams meetings, records dual-track audio (app + mic), and produces on-device transcripts with speaker diarization. Also includes a real-time dictation mode that types transcribed speech into any focused text field. +

Heard

-No cloud, no LLM, no external APIs — everything runs on-device on Apple Silicon. +

+ Stop taking meeting notes. Get them automatically.
+ Heard is a quiet macOS menu bar app that auto-detects your Microsoft Teams meetings, records them, and turns them into clean, speaker-labeled Markdown transcripts — fully on-device. +

+ +

+ Install · + Why Heard · + A look inside · + Features · + Requirements +

+ +

+ Heard recording a Teams meeting from the macOS menu bar +

+ +--- + +## Why Heard? + +**No cloud. No subscription. No sending your meetings to anyone's servers.** +Every byte of audio, every transcript, every speaker embedding lives on your Mac. Heard never makes a network call to a transcription service — because there is no transcription service. It all runs locally on Apple Silicon. + +- **Zero‑click recording** — As soon as a Teams meeting starts, Heard starts. When the meeting ends, you have a transcript waiting in your Documents folder. +- **Speaker-labeled transcripts** — Diarization separates each voice; once you name a speaker, Heard remembers them across every future meeting. +- **Dual‑track audio** — Heard records the system audio (the people on the call) and your microphone as separate streams, then merges them after transcription. The result is dramatically cleaner than recording a single mixed track. +- **Custom vocabulary** — Add product names, acronyms, or jargon and they'll come through correctly in both meeting transcripts and live dictation. +- **Real‑time dictation, anywhere** — Press a hotkey and Heard types what you say into whatever app is focused — Notes, Slack, your IDE, anywhere. +- **In‑meeting notes** — A second hotkey opens a quick composer. Your typed note is timestamped to the moment you started writing it and merged into the transcript chronologically. +- **Built for macOS** — A native SwiftUI menu bar app with a calm "Paper" palette. No Electron. No tray icon misery. + +### How it stacks up + +| | Heard | Cloud meeting recorders | +|------------------------------|-----------------------------|---------------------------------| +| Audio leaves your Mac | Never | Always | +| Works offline | Yes | No | +| Subscription | Free, open source | $$$ / month | +| Needs a meeting bot to join | No — runs on your machine | Yes | +| Speaker memory across calls | Yes, on-device | Sometimes | +| Transcribes in real time as you dictate | Yes | Different product | +| Custom vocabulary | Yes | Sometimes | + +--- + +## A look inside + +### Quietly lives in your menu bar +Heard sits in the top bar and changes its icon to tell you what it's doing — pulsing while recording, a waveform while transcribing, a calm tape icon while it waits for your next call. + +

+ Heard menu bar dropdown in the Watching state +   + Heard menu bar dropdown in the Recording state with elapsed timer +

+ +### Outputs a clean, speaker-labeled Markdown transcript +Timestamps, merged speaker blocks, and your own typed notes interleaved at the moment you wrote them. + +

+ A finished Markdown transcript with speaker labels and timestamps +

+ +### Dictates into any app, in real time +Hold `⌃⇧D` (or rebind it) and start talking. Words appear as soon as the sliding-window ASR confirms them, with filler words and "uhs" stripped automatically. + +

+ Floating dictation HUD with a live transcription being typed into a text field +

+ +### A native settings panel built for macOS +Custom vocabulary, model management, speaker library, and permission status all live in a single 880 × 600 window. + +

+ Settings window, General tab +

+ +

+ Settings window, Models tab +   + Settings window, Speakers tab +

+ +### Names new speakers with one playable clip each +The first time Heard hears someone new, it surfaces a ~10-second sample of their clearest speech and asks you who they are. After that, it remembers them. + +

+ Name Speakers window with playable audio clips per candidate +

+ +--- + +## Install + +**Homebrew (recommended):** + +```bash +brew tap execsumo/heard +brew install --cask heard +``` + +**Direct download:** Grab the latest `Heard-x.x.x.dmg` from [GitHub Releases](https://github.com/execsumo/Heard/releases), open it, and drag Heard to `/Applications`. + +After launching, grant Microphone (always required) and Accessibility (required for dictation, recommended for richer meeting metadata). Heard will guide you to the right System Settings pane from inside the app. + +## Requirements + +- macOS 15.0+ +- Apple Silicon (FluidAudio CoreML/ANE models are ARM-only) +- [FluidAudio](https://github.com/FluidInference/FluidAudio) 0.14.3+ (resolved automatically via SPM) + +--- ## Features @@ -45,23 +159,6 @@ No cloud, no LLM, no external APIs — everything runs on-device on Apple Silico - **Settings window** — 880×600, five tabs: **General** (launch at login, auto-watch, developer mode, custom vocabulary, output folder, permissions), **Dictation** (enable, push-to-talk, hotkey recorder with validation feedback, model keep-alive slider, live status, show dictation HUD checkbox), **Models** (download cards with progress, pipeline keep-alive, "Unload All Models"), **Speakers** (your name, inline rename, merge, delete, search, sort, with prompts to retroactively update all past transcripts), **About**. - **Name Speakers window** — 560×520 standalone scene with audio-clip playback per candidate, roster-suggestion hints, save/skip, and a 120 s countdown. -## Installation - -**Homebrew (recommended):** - -```bash -brew tap execsumo/heard -brew install --cask heard -``` - -**Direct download:** Grab the latest `Heard-x.x.x.dmg` from [GitHub Releases](https://github.com/execsumo/Heard/releases), open it, and drag Heard to `/Applications`. - -## Requirements - -- macOS 15.0+ -- Apple Silicon (FluidAudio CoreML/ANE models are ARM-only) -- [FluidAudio](https://github.com/FluidInference/FluidAudio) 0.14.3+ (resolved automatically via SPM) - ## Build & Run ```bash @@ -236,3 +333,4 @@ After a notarized DMG is published to GitHub Releases, update `Casks/heard.rb` i - [`handoff.md`](./handoff.md) — Current implementation status and known issues - [`ROADMAP.md`](./ROADMAP.md) — Planned improvements and stretch ideas - [`CLAUDE.md`](./CLAUDE.md) — Working rules for AI assistants +- [`docs/screenshots/`](./docs/screenshots) — Where the README screenshots live, and how to capture new ones diff --git a/docs/screenshots/README.md b/docs/screenshots/README.md new file mode 100644 index 0000000..70c6b52 --- /dev/null +++ b/docs/screenshots/README.md @@ -0,0 +1,27 @@ +# Screenshots + +This folder holds the screenshots referenced from the top-level `README.md`. Replace any missing PNG with a real capture; keep the filenames exactly as listed so the README links don't break. + +All shots should be taken on a Retina display, 2x resolution, with the app's "Paper" light palette. Crop tightly to the surface — no surrounding desktop chrome unless noted. + +| File | What to capture | Suggested size | +|---|---|---| +| `hero.png` | Menu bar dropdown in `Recording` state, with the elapsed timer visible. Optional: composite over a soft Paper-palette backdrop. | ~1200 × 800 | +| `menubar-dropdown.png` | Menu bar dropdown in `Watching` state, showing 2–3 Recent Meetings. | 268 × natural | +| `recording.png` | Menu bar dropdown in `Recording` state with the dark `#2E3338` header strip and elapsed time. | 268 × natural | +| `transcript.png` | A finished Markdown transcript open in a Markdown viewer (e.g. Obsidian, Marked 2, or VS Code preview). Speaker labels, timestamps, and at least one `[mm:ss] _**Note from …:**_` line should be visible. | ~1000 × 700 | +| `dictation-hud.png` | The floating "Dictating" pill at the bottom of the screen, with a focused text field above it showing live transcribed text. | ~900 × 500 | +| `settings-general.png` | Settings → General tab. Show the Behavior, Permissions, and Custom vocabulary cards. | 880 × 600 | +| `settings-models.png` | Settings → Models tab with the dark hero card and a couple of model rows. | 880 × 600 | +| `settings-speakers.png` | Settings → Speakers tab with a populated list, search visible. | 880 × 600 | +| `name-speakers.png` | Speaker naming window with two candidate cards (one playing, one idle) and the auto-dismiss countdown. | 560 × 520 | + +## How to capture cleanly + +1. Launch the bundled app: `./scripts/bundle.sh && open build/Heard.app`. +2. Enable Developer Mode (Settings → General) so the **Simulate Meeting** buttons appear. +3. Resize the Settings window to its default 880 × 600 and snap window screenshots with `⌘⇧4 + space` then click the window. +4. For the menu bar dropdown, use `⌘⇧5` → "Capture Selected Portion" and drag a rectangle around the panel. +5. Save PNGs into this folder with the exact filenames above. + +Hi-DPI PNGs render crisply on GitHub; avoid JPEG.