
Description
A week after the meeting you need to check what was actually agreed, and all you have is ninety minutes of audio and a progress bar to scrub through. Sending it to an online transcription service solves that and creates a different problem: the client names, the numbers, the internal argument all end up on someone else's servers. Speakr is a self-hosted transcription and note-taking app — audio goes in, and what comes out is a structured note with speaker labels, library-wide search and a chat you can interrogate, all running on hardware you control.
It treats a recording as a pipeline: capture or drop in a file, transcribe and work out who said what, generate a summary and action items, then file it into a searchable library. The interesting part is Inquire mode — ask "what did we settle on for the price change, and did anyone push back?" and it searches across the whole library, answering with clickable timestamps that jump straight to the moment being cited, so you never have to remember which meeting it happened in.
Flexible capture: record the microphone, system or browser-tab audio, or both mixed together. The device picker surfaces PulseAudio/PipeWire monitors, BlackHole, VB-Cable, Voicemeeter and Stereo Mix, with per-OS setup notes, and existing files can simply be dragged in.
Long sessions survive: in-app recordings stream to the server as you go, so a multi-hour session keeps going and a page reload does not lose it.
Bring your own engine: self-hosted WhisperX (recommended, and what the speaker features depend on), OpenAI, Mistral Voxtral, AssemblyAI, OpenASR, Alibaba FunASR or any custom ASR webservice — the right connector is detected from your configuration.
Diarization and voice profiles: every line gets attributed automatically, and with the WhisperX backend voice embeddings recognize the same person across different recordings instead of making you relabel each time.
Custom vocabulary: bias the transcriber toward names, jargon and acronyms it would otherwise mangle, set globally, per tag, per folder or right in the upload dialog, and saved as reusable templates.
Synced playback: click any transcript line to jump to that moment, follow along with highlighting as it plays, or switch to a chat-bubble view for multi-speaker conversations.
Summaries and event extraction: summaries are generated automatically with prompts customizable per recording, tag or folder, and action items and calendar-worthy events are pulled out of the transcript.
Inquire across the library: semantic search and natural-language questions over everything you have, with citations that open the recording at the cited segment. An opt-in agentic mode iterates — searching, listing and reading until it can answer — showing each step live, and you choose whether it may read summaries and private notes or transcripts only.
Hands-off intake: a watched folder auto-imports and processes anything dropped into it, optionally with per-user subfolders named by user id or username.
Organization and retention: folders and bulk operations for a large library, smart tags that carry their own AI prompt and ASR settings and stack on top of each other, and retention policies with auto-deletion plus per-recording protection.
Multi-user collaboration: OIDC single sign-on against Keycloak, Azure AD, Google, Auth0 or Pocket ID; groups whose tags auto-share recordings with every member; view/edit/reshare permissions and admin-controlled public links.
Automation surface: a REST API v1 with Swagger UI for n8n, Zapier and Make, HMAC-signed and SSRF-guarded webhooks on recording lifecycle events, and per-user budgets for LLM tokens and transcription minutes.
Straightforward to run: Docker Compose brings it up on port 8899, and a lite image drops PyTorch to cut the download from about 4.4GB to 725MB (only Inquire's semantic search falls back to plain text search). It installs as a PWA too, with a phone share target, seven interface languages and light/dark themes.
It treats a recording as a pipeline: capture or drop in a file, transcribe and work out who said what, generate a summary and action items, then file it into a searchable library. The interesting part is Inquire mode — ask "what did we settle on for the price change, and did anyone push back?" and it searches across the whole library, answering with clickable timestamps that jump straight to the moment being cited, so you never have to remember which meeting it happened in.
Features
Flexible capture: record the microphone, system or browser-tab audio, or both mixed together. The device picker surfaces PulseAudio/PipeWire monitors, BlackHole, VB-Cable, Voicemeeter and Stereo Mix, with per-OS setup notes, and existing files can simply be dragged in.
Long sessions survive: in-app recordings stream to the server as you go, so a multi-hour session keeps going and a page reload does not lose it.
Bring your own engine: self-hosted WhisperX (recommended, and what the speaker features depend on), OpenAI, Mistral Voxtral, AssemblyAI, OpenASR, Alibaba FunASR or any custom ASR webservice — the right connector is detected from your configuration.
Diarization and voice profiles: every line gets attributed automatically, and with the WhisperX backend voice embeddings recognize the same person across different recordings instead of making you relabel each time.
Custom vocabulary: bias the transcriber toward names, jargon and acronyms it would otherwise mangle, set globally, per tag, per folder or right in the upload dialog, and saved as reusable templates.
Synced playback: click any transcript line to jump to that moment, follow along with highlighting as it plays, or switch to a chat-bubble view for multi-speaker conversations.
Summaries and event extraction: summaries are generated automatically with prompts customizable per recording, tag or folder, and action items and calendar-worthy events are pulled out of the transcript.
Inquire across the library: semantic search and natural-language questions over everything you have, with citations that open the recording at the cited segment. An opt-in agentic mode iterates — searching, listing and reading until it can answer — showing each step live, and you choose whether it may read summaries and private notes or transcripts only.
Hands-off intake: a watched folder auto-imports and processes anything dropped into it, optionally with per-user subfolders named by user id or username.
Organization and retention: folders and bulk operations for a large library, smart tags that carry their own AI prompt and ASR settings and stack on top of each other, and retention policies with auto-deletion plus per-recording protection.
Multi-user collaboration: OIDC single sign-on against Keycloak, Azure AD, Google, Auth0 or Pocket ID; groups whose tags auto-share recordings with every member; view/edit/reshare permissions and admin-controlled public links.
Automation surface: a REST API v1 with Swagger UI for n8n, Zapier and Make, HMAC-signed and SSRF-guarded webhooks on recording lifecycle events, and per-user budgets for LLM tokens and transcription minutes.
Straightforward to run: Docker Compose brings it up on port 8899, and a lite image drops PyTorch to cut the download from about 4.4GB to 725MB (only Inquire's semantic search falls back to plain text search). It installs as a PWA too, with a phone share target, seven interface languages and light/dark themes.

