Local speaker diarization and realtime voice-labeling tools.
Project description
WhoSpeaksLive
WhoSpeaksLive is a local-first speaker diarization app for turning live or replayed media into speaker-labeled transcripts, with a browser UI for fast live speaker feedback, final sentence assignment, speaker library management, and validation.
Demo
https://github.com/user-attachments/assets/2de749e0-6c02-47de-b949-bd90b4f4efbb
For faster realtime ASR preview text like shown in the demo, use Kroko Pro/commercial streaming models; the public Community models work, but Pro/private models must be installed and licensed separately.
Current Scope
WhoSpeaksLive performs best on clean recordings where one person speaks at a time into good microphones. Diarization accuracy can degrade with background noise, background music, echo, crosstalk, overlapping speech, or low-quality microphones, and it may become less reliable as the active speaker count grows. The system assumes complete utterances can be assigned to a single speaker, so cases where one speaker starts a sentence and another finishes it are not expected to score well.
All Kroko languages supported by this integration work with realtime preview text: German, English, Spanish, French, Italian, Hebrew, Dutch, Portuguese, Swedish, and Turkish. Set --language or WHOSPEAKS_LANGUAGE to keep final ASR, Kroko/Banafo preview model selection, and stream2sentence sentence splitting on the same language. See the configuration guide for language codes and model details.
Without realtime preview text, WhoSpeaksLive can also work with additional languages. The key requirement is that the language is supported by Whisper and by at least one configured sentence segmenter, meaning NLTK or Stanza.
That currently makes these additional languages principally supported without realtime preview text: Afrikaans, Arabic, Belarusian, Bulgarian, Catalan, Czech, Welsh, Danish, Greek, Estonian, Basque, Persian, Finnish, Faroese, Galician, Hindi, Croatian, Hungarian, Armenian, Indonesian, Icelandic, Japanese, Georgian, Kazakh, Korean, Latin, Lithuanian, Latvian, Malayalam, Marathi, Maltese, Myanmar/Burmese, Norwegian, Norwegian Nynorsk, Polish, Romanian, Russian, Sanskrit, Sindhi, Slovak, Slovenian, Albanian, Serbian, Tamil, Telugu, Thai, Ukrainian, Urdu, Vietnamese, and Chinese.
CPU-only operation is not the recommended path for the current stack. The system is GPU-heavy today; a CPU-only setup may be possible, but should be treated as a separate optimization target and will likely require engineering work, slower processing, and some accuracy or throughput tradeoffs.
License
WhoSpeaksLive's own code is licensed under the MIT License.
Optional Kroko/Banafo preview support uses separately licensed upstream components and model files. Missing public Community preview models are downloaded automatically from Hugging Face when realtime preview starts. This repository's MIT license does not relicense Kroko/Banafo assets; before downloading, bundling, or deploying them, review and respect the current terms from Kroko by Banafo, the Banafo/Kroko-ASR model card, and the kroko-ai/kroko-onnx repository.
Start Here
For a guided setup, install the lightweight CLI and let it inspect the machine:
pip install whospeaks
whospeaks
The whospeaks starter shows the current component state and gives direct controls for language, realtime text, provider quality, backend URLs, ASR runtime, browser port, diagnostics, installation, exact launch-command printing, and launching the browser UI.
The short whospeaks command is a setup and launcher wrapper. It saves a small profile, runs doctor checks, and expands that profile into the longer whospeaks-window ... browser-server command when you launch.
For a Linux container server:
docker build -t whospeaks:local .
docker run --rm --name whospeaks -p 8796:8796 -v whospeaks-data:/data -v whospeaks-models:/models whospeaks:local
See Docker for the full build/run path and volume notes.
For a manual full working setup, follow these in order:
- Installation: install the Windows controller.
- External ASR and embeddings servers: set up the Linux GPU services.
- Quickstart: verify a local or remote smoke run, then run the tuned provider stack.
Documentation
| Topic | Document |
|---|---|
| Documentation map | docs/index.md |
| Product overview and use cases | docs/overview.md |
| Installation | docs/installation.md |
| macOS setup | docs/macos-setup.md |
| Quickstart | docs/quickstart.md |
| Live window workflow | docs/live-window-workflow.md |
| Meeting intelligence server | docs/meeting-intelligence-server.md |
| Speaker libraries | docs/speaker-libraries.md |
| External ASR and embeddings servers | docs/external-servers.md |
| Docker server image | docs/docker.md |
| Configuration guide | docs/configuration.md |
| Technical description | docs/technical-description.md |
| Technical architecture | docs/architecture.md |
| Validation and scoring | docs/validation-and-scoring.md |
| Modal deployment | docs/modal-deployment.md |
| Troubleshooting | docs/troubleshooting.md |
| Development workflow | docs/development.md |
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file whospeaks-0.0.1.tar.gz.
File metadata
- Download URL: whospeaks-0.0.1.tar.gz
- Upload date:
- Size: 575.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
af0a8de214af052a3f6a3a1ae05ca31e75e94e97335a9bd313328a5bff1ec123
|
|
| MD5 |
cb008a0c18db285b9dc9024de5c5c60d
|
|
| BLAKE2b-256 |
c7c78f1939319f3752c6c740898b5bd21793c0513db3b6b5d27154fcc8abca1c
|
File details
Details for the file whospeaks-0.0.1-py3-none-any.whl.
File metadata
- Download URL: whospeaks-0.0.1-py3-none-any.whl
- Upload date:
- Size: 582.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
08ed8a503f21f855ea759abc482f704e09630dcd5882ddfe38b71ed2b56d6333
|
|
| MD5 |
ff80c82f49f9d4f9583c5017991e5303
|
|
| BLAKE2b-256 |
1829938814b4dc9c87d39dda3af54920abcda17988bca815651becad06ba65dd
|