v2.0.0 — now with a GUI. See DOCS.md for the user manual (what it does, how the corrector works, recommended settings, hardware, privacy).
Install on Ubuntu / Debian:
curl -fsSL https://codeberg.org/adaures/mufidiwiwhi/raw/branch/main/install_ubuntu.sh | bash
Or grab the binary from the releases page.
Downloadable builds for macOS, Windows, and Flatpak are coming soon.
Mufidiwiwhi (Multi-file diarisation with Whisper) is a tiny, quick-and-dirty program built on top of faster-whisper.
It transcribes audio with reliable speaker diarisation, by using one file per speaker: Mufidiwiwhi requires that you record each speaker in a separate file. You can use Mumble to record a podcast with guests or use Ardour DAW to record a Podcast with several remote guests (you can also use Zrythm). This will create 100% accurate diarisation.
Of course, you should run Mufidiwiwhi before merging all audio files together.
More information: Transcribe your Podcast with accurate speaker diarisation, for free, with Whisper
Make sure that you choose a podcast hosting platform that supports transcripts (such as Castopod!).
Mufidiwiwhi requires Python 3.10 or newer. The transcription engine is faster-whisper, which uses CTranslate2 for inference (4 to 8 times faster than openai-whisper on CPU). ffmpeg must be available on the PATH.
pip install git+https://codeberg.org/adaures/mufidiwiwhi.git
This installs both the mufidiwiwhi CLI and the mufidiwiwhi-gui GUI. All runtime dependencies (faster-whisper, PyQt6, the phonetic libraries, httpx) are pulled in automatically.
Pulls the latest release from Codeberg, drops the binary in ~/.local/bin, registers the icon and an apps-menu entry. No sudo, no system packages.
curl -fsSL https://codeberg.org/adaures/mufidiwiwhi/raw/branch/main/install_ubuntu.sh | bash
To uninstall, remove these three files:
~/.local/bin/mufidiwiwhi-gui
~/.local/share/icons/hicolor/scalable/apps/mufidiwiwhi.svg
~/.local/share/applications/mufidiwiwhi-gui.desktop
To get help, type
mufidiwiwhi --help
Example with four speakers, French audio, GPU inference, SRT output, and both phonetic + Hunspell post-correction:
mufidiwiwhi 'Aïcha' 'tracks/Aïcha.wav' Bob tracks/Bob.wav Guests tracks/Guests.wav 'Thème' 'tracks/Thème.wav' \
--model medium --model_dir ~/.cache/huggingface/hub \
--device cuda --compute_type auto \
--language fr \
--output_format srt --output_dir . --output_filename episode01 \
--dictionary ~/.config/mufidiwiwhi/dictionary.txt \
--phonetic-lang fr --phonetic-lang-secondary en \
--hunspell-primary /usr/share/hunspell/fr_FR \
--hunspell-secondary /usr/share/hunspell/en_US
The GUI's Project tab has a Copy CLI command button that prints the full equivalent of whatever you set up in the GUI, which is the easiest way to learn the CLI flags.
You can also point Mufidiwiwhi at an Audacity .aup3 project; each track is extracted to a 16 kHz mono WAV in a temp folder, the speaker name comes from the Audacity track name, and the temp folder is cleaned up when the app exits:
mufidiwiwhi project.aup3 --model medium --language fr
Add -v / --verbose for per-chunk timing, replacement decisions, and any pathological-word warnings on stderr; the high-level pipeline progress prints on stdout by default.
Overlapping speech (when one speaker interrupts another) is preserved as overlapping subtitle cues; SRT and VTT both support this. Most players render only one cue at a time, but the data is in the file.
A plain-text dictionary of proper nouns and domain terms can be used to correct the transcript. The phonetic pass uses Whisper's per-word confidence: low-confidence words are replaced when phonetically close to a dictionary entry, mid-confidence words are replaced only when there is a single very close match, and high-confidence words are left alone.
# one entry per line, # for comments, multi-word entries allowed
cat > vocab.txt <<EOF
# Podcast vocabulary
Castopod
OpenRAG
Podcasting 2.0
Free Software Foundation
EOF
mufidiwiwhi Alice a.wav Bob b.wav --model small --language fr \
--dictionary vocab.txt \
--phonetic-lang fr --phonetic-lang-secondary en
A PyQt6 GUI is available via the mufidiwiwhi-gui console script. It exposes the same functionality as the CLI in a tabbed window (Setup, Project, Run). Settings persist via QSettings.
mufidiwiwhi-gui
Add -v / --verbose to mirror per-chunk timing, replacement decisions, and Hunspell pathology warnings to the launching terminal.
mufidiwiwhi-gui --verbose
The GUI also accepts the same arguments as the CLI to prefill the project tab:
mufidiwiwhi-gui Lucy interview_lucy.wav Samir interview_samir.wav --dictionary vocab.txt
The Project tab has a Copy CLI command button that emits the full mufidiwiwhi ... invocation matching the current GUI state — the fastest way to learn the CLI flags.
Two PyInstaller specs ship in packaging/:
mufidiwiwhi-gui-onefile.spec— single self-extracting executable. Slower first launch (the bundle is unpacked to a temp dir on every run).mufidiwiwhi-gui-onedir.spec— single folder of files. Faster startup, easier to debug, more files to ship.
Whisper model weights and Hunspell dictionaries are NOT bundled. Models download to the user's huggingface cache on first use; Hunspell .aff/.dic files are read from /usr/share/hunspell (Linux) or wherever the platform installs them.
python3 -m venv env
. env/bin/activate
pip install -e . pyinstaller
pyinstaller packaging/mufidiwiwhi-gui-onefile.spec --noconfirm
The binary lands in dist/mufidiwiwhi-gui. It runs on most x86_64 glibc distros from roughly the Ubuntu 22.04 era onward (build on the oldest distro you want to support — glibc is forward-compatible only).
python3 -m venv env
. env/bin/activate
pip install -e . pyinstaller
pyinstaller packaging/mufidiwiwhi-gui-onefile.spec --noconfirm
Produces dist/mufidiwiwhi-gui (a Mach-O executable). To ship a .app bundle, swap EXE(...) for an app = BUNDLE(exe, name='Mufidiwiwhi.app', icon='mufidiwiwhi.icns', bundle_identifier='org.podlibre.Mufidiwiwhi') block in the spec. For Gatekeeper-friendly distribution, sign with a Developer ID certificate (codesign --deep --sign "Developer ID Application: ..." Mufidiwiwhi.app) and notarize via xcrun notarytool. ARM64 (Apple Silicon) and x86_64 are built natively on the matching host; for a universal2 binary, build on Apple Silicon with target_arch='universal2' and a universal2 Python.
py -3 -m venv env
env\Scripts\activate
pip install -e . pyinstaller
pyinstaller packaging\mufidiwiwhi-gui-onefile.spec --noconfirm
Produces dist\mufidiwiwhi-gui.exe. ffmpeg.exe must be on PATH at runtime; the easiest way is winget install Gyan.FFmpeg or shipping ffmpeg.exe next to the binary. For a signed installer, wrap the output with Inno Setup or NSIS.
Runtime:
- faster-whisper — CTranslate2-backed Whisper inference.
- NumPy — numeric arrays for audio buffers.
- phonetic-fr — French phonetic algorithm.
- Metaphone — English phonetic algorithm.
- jellyfish — Levenshtein and other string-distance metrics.
- spylls — pure-Python Hunspell reader.
- psutil — CPU / memory introspection for the GUI metrics strip.
- nvidia-ml-py — NVIDIA GPU / VRAM introspection.
- PyQt6 — the GUI toolkit.
- pydub — audio chunking via
ffmpeg.
Build / dev:
- pytest — test runner.
- PyInstaller — standalone binary builds for Linux, macOS, and Windows.
External tools:
- ffmpeg — audio decoding (must be on
PATH).
Sidebar and toolbar icons are from the Solar Linear Icons Collection on SVG Repo.
Benjamin Bellamy <benjamin@podlibre.org>.
Mufidiwiwhi is released under the GNU General Public License v3. Copyright © 2026 Ad Aures. See LICENSE for further details.


