Skip to main content
m4Bookmaker icon

m4Bookmaker — filter fork

Convert a folder of audio files into a clean M4B audiobook — in seconds. This fork adds a fully offline language filter on top.

PyPI License: GPL-3.0 macOS Windows Linux Python 3.11+

⭐ Watch this repo (Releases only) to get notified when a new version drops.

Docs · Releases · Report a Bug

Drag in a folder, adjust your chapters, hit Convert. m4Bookmaker handles the rest — chapters, cover art, metadata, and even repairs broken audio files automatically. This fork adds an optional pass that scans the audio for words and phrases you configure, then produces a separate copy with those moments quietly attenuated — see Language filter below.

m4Bookmaker — main window

Docs · Releases · Report a Bug


About this fork

The base conversion app — chapters, cover art, metadata, audio repair, all of it — is m4Bookmaker by Sageframe. This repository is an independent fork that builds a language filter on top of it; it isn't affiliated with or endorsed by the original project. If you don't need the filter, use the original — it's simpler and more widely used.

This fork's own development follows the same discipline the base app documents in its own Development Process (the Ho System: a structured methodology for human-AI collaborative development, where a human makes every design decision and an AI implements under direction, with verification at every step). Every design decision in the filter feature is recorded as its own dated ADR under docs/adr/, with a running development log in docs/FORK.md and the original product requirements in docs/PRD.md.


What it does

  • Automatic chapters from filenames — track numbers and prefixes stripped
  • Chapter editor — rename, reorder, merge, split, adjust timestamps inline
  • Built-in audio player — scrub through source audio, seek to any chapter boundary
  • Edit existing M4Bs — rename chapters and adjust timestamps without re-encoding
  • Batch queue — stage multiple books and process them sequentially
  • Audio repair — fixes corrupted MP3 frames, missing headers, inconsistent streams
  • Automatic cover art — largest image in the directory is used
  • Multiple windows — each encoding in parallel
  • Full CLI — everything in the GUI is scriptable from the command line
m4Bookmaker — chapter editor

Language filter

An optional, fully offline pass: transcribe a book locally, scan the transcript against words and phrases you choose, then render a separate copy with those moments faded down — never cut, spliced, or time-stretched, so chapter timestamps stay valid. Your original file is never modified, and nothing is ever uploaded anywhere.

  • Fully offline — transcription and matching run entirely on your machine, using a local speech-recognition model you download once. No audio or transcript ever leaves your computer.
  • Word List — build categories of words and phrases to filter, with optional masking for anything sensitive you'd rather not see spelled out in the review screens.
  • Reusable filter profiles — save a named set of categories and an attenuation strength (how much the audio fades, and for how long around each match), and reuse it across every book you filter.
  • Guided wizard — one screen per step: pick your source file, transcribe it, choose a profile, scan, review, render.
  • Review before anything is rendered — every match shows in context, with a one-click audio preview of exactly what would be silenced, before you commit to it. Include or exclude individual matches, or act on a whole term or category at once.
  • Full Transcript Review — an optional tab shows the entire chapter, not just what the scan flagged, so you can catch anything that slipped through and add it straight to your Word List.
  • Import and export your Word List — back up your catalog as a JSON file, or bring in someone else's, with duplicates detected automatically.
  • Never touches your original file — the source M4B is left exactly as it is; the app writes a separate filtered copy plus a local report describing exactly what was changed and why.

Status: work in progress, not yet recommended for general use. See docs/FORK.md for the full development history and docs/PRD.md for the complete requirements this feature is being built against.


Installation

Signed, notarized installers aren't built for this fork yet — install via PyPI or from source below. (The base app's own signed macOS/Windows installers, without the filter, are available from Sageframe's own site.)

From PyPI

Works on macOS, Windows, and Linux. Requires Python 3.11+ and ffmpeg.

pip install m4bmaker-filter

Or with the optional GUI:

pip install m4bmaker-filter[gui]

Python 3.11 or newer is required. On an older Python, pip won't tell you that — it just reports No matching distribution found for m4bmaker-filter, which reads like the package doesn't exist. Check with python3 --version; the default python3 on macOS is often 3.9, so you may need to install a newer one (e.g. brew install python@3.12) and use python3.12 -m pip install m4bmaker-filter.

Install ffmpeg if you don't have it:

# macOS
brew install ffmpeg

# Ubuntu / Debian
sudo apt install ffmpeg

# Windows (winget)
winget install ffmpeg

Language filter: install whisper-cli

Converting audio to M4B needs only ffmpeg. The language filter also needs whisper-cli, the command-line program from whisper.cpp (MIT-licensed), which does the offline transcription. pip does not install it, so install it separately and make sure it's on your PATH:

# macOS
brew install whisper-cpp

On Linux and Windows, download a prebuilt binary from the whisper.cpp releases if one is published for your platform, or build it from source following the whisper.cpp README, then put whisper-cli (whisper-cli.exe on Windows) somewhere on your PATH.

Check that it works:

whisper-cli --help

The speech model itself (base.en, about 148 MB) is not part of whisper-cli. Download it once from inside the app via Language Filter → Manage Transcription Models…; it is checksum-verified and stored locally. That window also shows whether whisper-cli was found, and the Transcribe step tells you if it's missing.

Tested with whisper.cpp 1.9.x, installed via Homebrew on macOS. Other platforms and versions are untested with this fork.

From source

Requires Python 3.11+ and ffmpeg.

git clone https://github.com/nhowland/m4bmaker-filter.git
cd m4bmaker-filter
pip install -e .

Launch the GUI:

python -m m4bmaker.gui.app

Or use the CLI:

m4bmaker-filter ./MyBook --title "Dune" --author "Frank Herbert"

CLI reference

m4bmaker-filter <folder> [options]
Flag Description
--title Book title
--author Author name
--narrator Narrator name
--cover Path to cover image
--output Output directory
--bitrate AAC bitrate (default: matches source)
--stereo Force stereo output
--no-prompt Skip interactive prompts

The language filter is GUI-only for now — it isn't exposed on the CLI yet.


Supported formats

Input: mp3 · m4a · aac · flac · wav · ogg — formats can be mixed in the same folder.

Output: .m4b (AAC in MP4 container with chapter metadata)


Privacy & network activity

m4Bookmaker is fully local — it never uploads your audio files or metadata. The language filter is the same: transcription, scanning, and rendering all happen on your machine.

Update checker: On startup, the GUI makes a single outbound request to the GitHub Releases API to check whether a newer version is available:

GET https://api.github.com/repos/nhowland/m4bmaker-filter/releases/latest
User-Agent: m4bmaker/<version>

This sends your IP address and the installed version number to GitHub's API. No other data is transmitted. The check runs silently in the background and fails silently if you are offline. The CLI (m4bmaker-filter command) makes no network calls at all.


Contributing

See CONTRIBUTING.md.

License

GPL-3.0 · Base app © 2026 Andrew T. Marcus (Sageframe) · Language filter additions © 2026 the contributors to this fork

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. See LICENSE for details.


Docs · Releases · Report a Bug

Base app by Sageframe · Language filter fork built independently

Metadata

Release files for m4bmaker-filter 1.1.1.post1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for m4bmaker-filter 1.1.1.post1
File Size Uploaded
m4bmaker_filter-1.1.1.post1.tar.gz 309.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for m4bmaker-filter 1.1.1.post1
File Interpreter ABI Platform
m4bmaker_filter-1.1.1.post1-py3-none-any.whl Python 3 none any Details

Total release size: 615.6 kB

Release files / m4bmaker_filter-1.1.1.post1.tar.gz

Download URL m4bmaker_filter-1.1.1.post1.tar.gz
Size 309.2 kB
Tags Source
SHA-256 checksum
How to use checksums
719fdd5842c5baf1f4ab8da88a5f5f38cd1f0ebf354fe962aa09224bbcd40ad1
BLAKE2b-256 checksum
How to use checksums
057928ff51a4611c5139b2716f91f66eaa1c54592fd43d01bc2deb9218e03cd7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.14

Release files / m4bmaker_filter-1.1.1.post1-py3-none-any.whl

Download URL m4bmaker_filter-1.1.1.post1-py3-none-any.whl
Size 306.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
4c51082ad64ee448a3ab796c3f707ee5dcbdd15cbe9e3b32af3278b831704ea8
BLAKE2b-256 checksum
How to use checksums
e303fdee21c682ac55919198979c014bf57ebbb8d933b2569dc05929b6a75dc8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.14

Release history Release notifications | RSS feed

1.1.2

2 release files

This release

1.1.1.post1 This release

2 release files

1.1.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page