Skip to content

Releases: Inguiotar/ABChapterize

abchapterize 0.9.1

Choose a tag to compare

@Inguiotar Inguiotar released this 31 Jul 10:04

Chapter marks that land where the narrator actually says "Chapter Seven".

A feature release on top of 0.9.0. New here? The README explains what ABChapterize is for. What follows is what changed.

Marks for anything the narrator announces

--custom takes phrase:title pairs, so anything with a spoken name gets a mark of its own — interludes, timelines, part headings:

abchapterize --custom "zwischenspiel:Zwischenspiel;/zeit[- ]?tafel/:Zeittafel" book.m4b

A phrase is a plain word or a /regexp/, a title can quote the phrase's own capturing groups ($1), and --custom-file reads the mappings from a file. It still has to be announced — a passing mention in the narration is not a mark.

Prologues and epilogues now get their own marks as well, phrased and titled in each of the eleven supported languages, and --ignore-chapter-numbers turns off numbered-chapter hunting entirely for books that have none.

Pick your GPU

--list-gpus prints what your machine reports; --use-gpu gtx picks one by name instead of by an index that can come out in a different order depending on how you logged in. With nothing specified, a single discrete GPU is now preferred automatically, and the startup line names the card it settled on.

Faster, and more accurate

  • Marks now land within a tenth of a second of the announcement. They used to be accepted as soon as the chapter phrase was merely audible — which a jingle never contradicts, since Whisper does not transcribe music, so a mark sitting seconds inside one sounded perfectly convincing. Books with a musical sting before each chapter benefit most.
  • And they get there in seconds rather than minutes. A mark that had landed half a minute early used to be recovered by combing the audio a tenth of a second at a time — hundreds of transcriptions and twenty minutes of apparent silence on a single mark. It now closes in on the announcement instead.
  • Chapters that used to go missing generally don't. A number spoken as a Roman numeral, misheard as something impossible, dropped by the recognizer at a window boundary, or hidden behind a pause a hair too short to look at — each of those now has its own way back.

Everything else

--debug writes a full troubleshooting log beside a file. --log-file puts the log where you want it, --color decides whether the bar and summary are colored. Several files and folders can be named in one command, and an interrupted batch run picks up where it left off. --model custom:<path> runs your own Whisper model. Spanish, Portuguese and Danish now understand compound spelled-out ordinals ("Capítulo vigésimo primero").

And various bugs exterminated. The CHANGELOG has the full list, in detail.

Downloads

File Platform
abchapterize-0.9.1-win-x64.zip Windows x64
abchapterize-0.9.1-linux-x64.tar.gz Linux x64 (glibc)

Self-contained — no .NET runtime to install. Each archive carries the executable, the native Whisper and ONNX Runtime libraries (CPU, CUDA and Vulkan backends), the README, the manual and all license texts. Unpack anywhere and keep the runtimes folder next to the executable; you still need ffmpeg/ffprobe available, and the speech model downloads itself on first run.

Full documentation: README · Manual

abchapterize 0.9.0

Choose a tag to compare

@Inguiotar Inguiotar released this 27 Jul 03:57

Correct chapter marks for your audiobooks — by actually listening to them.

ABChapterize scans audiobook files (.m4a, .m4b, .mp3, .opus, .mka) for spoken chapter announcements ("Chapter Seven", "Kapitel 12", …) using Whisper speech recognition and writes proper chapter marks straight into the file. No splitting, no server, no sidecar clutter — the audio itself is never re-encoded, only the chapter metadata is rewritten.

If you have ever bought an audiobook whose chapter marks were missing, misplaced, or pure fantasy, this is for you.

What it does

  • Finds chapters by listening. Short candidate windows are probed at silences and jingles first, and a full region is only transcribed when that isn't enough — so the time-consuming Whisper work stays at a minimum.
  • Jingle-aware by default. A bundled voice-activity model (Silero VAD) finds the music sting before an announcement even when it abuts the narration with no silence at all — something a plain amplitude scan misses entirely. --mark-before-jingle anchors the mark to the jingle itself instead of just before the phrase.
  • Self-healing. Gaps in the detected chapter numbering trigger a full transcription of exactly the regions where the missing chapters must be hiding. Whatever still can't be found leaves the file tagged .missing-marks-…, and a later run resumes it instead of starting over.
  • Verifies instead of trusting. --verify checks pre-existing marks against the audio and only redoes the stretches around the ones that don't hold up.
  • Writes in place, safely. Chapters are written by stream-copy remux into a temporary file that is verified before it atomically replaces the original — your audiobook can't be lost, even without --backup (which is there too, along with --revert).
  • Eleven languages of number recognition — English, German, French, Spanish, Italian, Dutch, Turkish, Portuguese, Polish, Swedish and Danish, cardinals and ordinals, before or after the phrase ("Erstes Kapitel", "2. Kapitel", "chapitre premier", "Birinci Bölüm"). Language is detected per file by default, and localizes the chapter phrase and titles along with it.
  • GPU accelerated — CUDA or Vulkan when available, CPU otherwise. Batches run several files at once, auto-throttled to live CPU load.
  • Zero setup for models. The Whisper model downloads on first use and is checked against pinned SHA-256 and SHA3-256 digests before it is loaded.

Getting started

  1. Have ffmpeg/ffprobe available (in PATH, next to the executable, or wherever FFMPEG_DIR points).
  2. Download the archive for your platform below and unpack it anywhere — keep the runtimes folder next to the executable.
  3. Run it:
abchapterize "My Audiobook.m4b"

The speech model (~1.6 GB for the default turbo) downloads once on first run. Then:

My Audiobook.m4b: 23 chapter(s) written (1-23) + intro, language: en (p=1.00)

Being careful on the first try is one flag away: --backup keeps the original as *.bak, and abchapterize --revert puts it back.

Downloads

File Platform
abchapterize-0.9.0-win-x64.zip Windows x64
abchapterize-0.9.0-linux-x64.tar.gz Linux x64 (glibc)

Both are self-contained — no .NET runtime to install. Each archive carries the executable, the native Whisper and ONNX Runtime libraries (CPU, CUDA and Vulkan backends), the README, the manual, and all license texts.

Notes

Version 0.9.0 rather than 1.0.0 on purpose: it does the job and does it carefully, but the option set may still shift before 1.0.

Full documentation: README · Manual