Skip to content

Repository files navigation

Mufidiwiwhi

Mufidiwiwhi

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!).

Screenshots

Settings Project Run
Settings tab Project tab Run tab
Whisper model, device, language, and correction thresholds. One file per speaker, output formats, chapters from the Audacity project. Live log with per-segment progress, timing, and replacement decisions.

Setup

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.

Ubuntu / Debian one-liner

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

Command-line usage

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.

Optional post-correction

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

GUI

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.

Building a standalone binary (PyInstaller)

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.

Linux

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).

macOS

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.

Windows

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.

Dependencies

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).

Credits

Sidebar and toolbar icons are from the Solar Linear Icons Collection on SVG Repo.

Author

Benjamin Bellamy <benjamin@podlibre.org>.

License

Mufidiwiwhi is released under the GNU General Public License v3. Copyright © 2026 Ad Aures. See LICENSE for further details.

About

Multi-File Diarization with Whisper. Synchronized read-only mirror of https://codeberg.org/adaures/mufidiwiwhi

Resources

Stars

17 stars

Watchers

3 watching

Forks

Contributors

Languages