# TranscriptionSuite runs Whisper, NeMo and MLX models behind one local dashboard

> TranscriptionSuite is a desktop speech-to-text app that keeps every recording on your own machine, with an Electron dashboard driving a Python backend through Docker on most platforms and natively on Apple Silicon. The interesting part is the breadth of model backends, from WhisperX and NVIDIA NeMo Parakeet to MLX ports, with speaker diarization that sometimes needs a HuggingFace token and sometimes does not.

**homelab-00/TranscriptionSuite** — A fully local and private Speech-To-Text app, offering multiple model backends, diarization & calendar mode - Available for Windows, macOS & Linux

- Repository: https://github.com/homelab-00/TranscriptionSuite
- Website: https://transcriptionsuite.app/
- Stars: 778 · Forks: 76
- Language: TypeScript
- License: GPL-3.0
- Published: 2026-10-20 · Updated: 2026-10-20 · Language: en
- Canonical page: https://hysenlabs.com/projects/homelab-00-transcriptionsuite

## A dashboard that manages the engine for you

TranscriptionSuite is two parts working as one application. The Dashboard is the desktop program you install, and the server is the transcription engine, which the Dashboard downloads and manages for you, in Docker on most platforms and natively on Apple Silicon Macs.

The Docker arrangement is explained in plain terms, which is a good sign: Docker is a free program that runs the server in its own self-contained box, you install it once during setup, and the Dashboard drives it for you.

The result is that day-to-day use is entirely point-and-click, and a terminal is only needed for a few one-time setup steps on some platforms. The documentation points you to the Installation section and the Compatibility Matrix depending on whether you want to start immediately or check first whether your computer can run it.

The privacy claim is stated precisely rather than vaguely. Everything runs on your own computer, and the only internet requirement is downloading the app and the model weights on first use, after which it works fully offline. Your audio and transcripts never leave your machine.

The stack under the hood is an Electron dashboard plus a Python backend. The repository layout matches: dashboard/ for the desktop side, server/ for the backend, scripts/ and build/ for the build, docs/ for the documentation, and a dgx-spark-implemantation.md at the root, which suggests a port to NVIDIA DGX Spark hardware.

## Six model families, and the GPU decides which ones you get

The choice of speech model is the centre of the app, and the supported set is wide enough that the hardware decides your options.

On the Docker platforms, which covers Linux, Windows and Intel Macs, the list is WhisperX using faster-whisper models, NVIDIA NeMo with Parakeet v3 and Canary v2, VibeVoice-ASR, SenseVoice through FunASR, and whisper.cpp using GGML models. That last one is the path for AMD and Intel GPUs via Vulkan, and the documentation points to a dedicated section for setting that up.

On Apple Silicon, the list changes completely. There is MLX Whisper from tiny up to large-v3-turbo, MLX Parakeet v3, MLX Canary v2 and MLX VibeVoice-ASR, all running natively on the GPU without Docker at all.

Acceleration follows the same split: NVIDIA CUDA, Apple Metal, AMD and Intel Vulkan, or plain CPU. The badges in the header make the supported acceleration paths explicit, and CPU is listed as supported, which matters for anyone on a machine with no discrete GPU.

So the practical decision is a hardware decision. A machine with an NVIDIA card gets CUDA, an M1 or later Mac gets native MLX without Docker, an AMD or Intel card gets the whisper.cpp path over Vulkan, and everything else falls back to CPU. The repository topics list cuda, mlx and vulkan alongside whisper, nemo and local-first, which is the same distinction in one line.

## Diarization works differently per model family

Speaker diarization is the feature that separates a transcript from a meeting record, and TranscriptionSuite supports it for Whisper, NeMo, SenseVoice and VibeVoice. The implementation differs by backend, and the documentation is specific about which path needs what.

Whisper and NeMo use PyAnnote, which needs a free HuggingFace account token. The app walks you through obtaining it during setup, so it is an extra step rather than a blocker.

SenseVoice ships with a built-in CAM++ diarizer, and VibeVoice diarizes by itself. Neither needs a token.

On Apple Silicon there is a third path: Sortformer provides Metal-native diarization for up to 4 speakers, with no token needed at all.

So the token requirement is per model, not per app, which means a user who picks SenseVoice or VibeVoice never touches HuggingFace, and a user on Apple Silicon with Sortformer never does either. That is worth knowing before you set the app up, because the setup flow asks for a token only on the paths that need one.

Longform transcription is the other headline. You can record for as long as you want, from the microphone or the system audio, and the full transcript arrives seconds after you stop. While recording, a rolling preview shows roughly the last 20 seconds of transcription, so you can see it working rather than waiting in the dark.

## Live Mode is a Whisper-only feature

Live Mode gives real-time, sentence-by-sentence transcription for continuous dictation workflows, and it carries a restriction that shapes how you pick a model.

It runs on Whisper via faster-whisper and on whisper.cpp models. Other model families do not serve Live Mode. That is stated plainly, and it means the NeMo, VibeVoice, SenseVoice and MLX paths are for batch transcription, not for a live dictation loop.

The distinction matters because the two uses have opposite requirements. Batch transcription wants the most accurate model you can fit, and can take minutes. Dictation wants low latency, so the model that responds quickly wins even if it is less accurate.

File import covers the batch case from the other direction. You drop existing audio or video files into the Session tab and save the result as plain text, as subtitles in .srt or .ass format, or both, straight to a folder of your choice. The documentation notes that no Notebook entry is created for imported files, so imports do not clutter the same list as live sessions.

The multilingual claim is also model-dependent. Whisper transcribes more than 90 languages and can translate foreign audio into English, and Canary v2 additionally translates in both directions.

## Remote use is built around Tailscale or a LAN

The Remote Connection section describes two ways to reach the server from another machine, and the first is explicitly the recommended one.

Option A is Tailscale, with the documentation labelling it recommended, and the server machine setup is described as its own subsection. Option B is a LAN, described as the same local network, which is the simpler path with a narrower reach.

The distinction is a privacy one, and it follows from the app's premise. A LAN address is reachable by anything on that network, whereas a Tailscale address is reachable only by the devices on your own tailnet, which is a much smaller and more controlled set.

The same section covers the OpenAI-compatible API endpoints and outgoing webhooks, and the table of contents shows both as first-class topics. An OpenAI-compatible endpoint is a notable choice, because it means existing tooling that talks to an OpenAI transcription API can point at the local server instead of a hosted one, which is how a local-first transcription app stays useful to scripts and integrations written for the cloud service.

Outgoing webhooks are the counterpart, letting the server notify an external system when a transcription completes, which is how you would wire local transcription into a workflow that otherwise runs somewhere else.

## What is settled, what is not, and what the project says about itself

The repository structure and the release history give an honest picture of the state of the project.

The app is TypeScript in the dashboard with a Python server, GPL-3.0 licensed, and the last push was on 2026-10-04. Recent releases are v1.3.10 from 2026-09-24, v1.3.9 from 2026-08-09 and v1.3.8 from 2026-07-19, so it is on a 1.3 line with regular patch-level releases rather than a pre-1.0 experiment.

The table of contents includes a State of the Project section with an In General and AI Disclosure subsection, which is unusual to see and worth reading in full before drawing conclusions about the project. There is also a Contributing subsection, and the root carries AGENTS.md and CLAUDE.md alongside a .mcp.json file and a .pre-commit-config.yaml, so the project has an agent-oriented contribution setup.

The Installation section is broken out per platform, with separate subsections for macOS Apple Silicon, macOS Intel, Windows and Linux, plus one for downloading the dashboard app with Linux AppImage prerequisites. There is an optional step for verifying the download with Kleopatra, which is a GPG signature check, and the downloader for the Linux AppImage is called out separately because AppImage has its own prerequisite handling.

The local-first framing is consistent across the repository, with local-first among the topic tags and a phrase in the description that it is available for Windows, macOS and Linux, with OS badges for Linux, Windows 11 and macOS.

One limitation is inherent in the design rather than a bug. The Docker route needs a container runtime installed, the Apple Silicon route needs an M1 or later, and the AMD and Intel GPU route is tied to whisper.cpp GGML models over Vulkan, so a user with an AMD card is choosing a different model family than a user with an NVIDIA card.

## Conclusion

Adopt TranscriptionSuite if you need transcripts that never leave your machine, especially on a machine with an NVIDIA GPU, an Apple Silicon Mac or an AMD or Intel card with Vulkan, since those are the configurations the backends are built for. Skip it if you want a hosted service with no local setup, or if you need Live Mode with a model outside the Whisper family, since only Whisper and whisper.cpp models serve that mode. Verify first that your hardware matches the compatibility matrix, that you are willing to supply a HuggingFace token if you want PyAnnote diarization on Whisper or NeMo, and that Docker is available on the platforms where the server runs containerised.

## FAQ

### Does TranscriptionSuite send my audio to a server?

No. Everything runs on your own computer, and the internet is only needed to download the app and the model weights on first use, after which it works fully offline. Your audio and transcripts never leave your machine.

### Which speech-to-text models does TranscriptionSuite support?

On the Docker platforms it supports WhisperX with faster-whisper, NVIDIA NeMo Parakeet v3 and Canary v2, VibeVoice-ASR, SenseVoice through FunASR, and whisper.cpp with GGML models. On Apple Silicon it supports MLX Whisper, MLX Parakeet v3, MLX Canary v2 and MLX VibeVoice-ASR running natively on the GPU without Docker.

### Do I need a HuggingFace token for speaker diarization?

Only on some backends. Whisper and NeMo use PyAnnote, which needs a free HuggingFace account token that the app walks you through during setup. SenseVoice ships a built-in CAM++ diarizer, VibeVoice diarizes by itself, and on Apple Silicon Sortformer provides Metal-native diarization for up to 4 speakers, all without a token.

### Which models support Live Mode in TranscriptionSuite?

Live Mode runs on Whisper through faster-whisper and on whisper.cpp models. Other model families do not serve Live Mode, so the NeMo, VibeVoice, SenseVoice and MLX paths are for batch transcription.

## Sources

- [homelab-00/TranscriptionSuite on GitHub](https://github.com/homelab-00/TranscriptionSuite)
- [License: GPL-3.0](https://github.com/homelab-00/TranscriptionSuite/blob/main/LICENSE)
- [Project website](https://transcriptionsuite.app/)
- [README](https://github.com/homelab-00/TranscriptionSuite/blob/main/README.md)
- [Releases](https://github.com/homelab-00/TranscriptionSuite/releases)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/homelab-00-transcriptionsuite
