abchapterize 0.12.1
Faster on nearly every book, a progress display that says where it has got to, and settings that can live in a file.
A release on top of 0.12.0. New here? The README explains what ABChapterize is for. What follows is what changed.
Most books are now read a good deal faster
Finding a chapter announcement means transcribing a short window of audio, and until now every place one could conceivably hide got a window of its own. Two new reading shapes cut most of that away, and a file takes whichever suits it without being asked.
A book that announces its chapters after a jingle gets its music read first, in order, and its pauses afterwards — but only where they can still be carrying something: anywhere the chapter numbering has a hole, everything before the first chapter found, and everything after the last. So a prologue and an epilogue are still looked for exactly where they belong, and what gets skipped is the pauses between two chapters whose numbers already run consecutively, where nothing else could be announced anyway.
A book with no jingles skims its longest pauses first. Chapters are announced after a book's longer pauses, and the pauses they are not announced after outnumber them by a hundred to one — so the file is skimmed once through in descending pause length to find out roughly where its chapters are, and the ordinary sweep behind it then passes over everything the numbering already accounts for. The skim stops by itself once the pauses get too short to be this book's chapter breaks, and gives up early on a book that announces nothing at all.
Across a shelf of test books that came out about a quarter faster overall, and close to half on the ones that gain most — for the same marks in the same places, to the millisecond. Nothing about how chapters are found, numbered or placed has changed, and a book whose numbering restarts for a second part is still recognized as one. --jingle-first asks for the music-first shape on a file that would not have chosen it, and --verbose says which shape a file ran under.
The progress display says where it has got to
The bar and its percentage now have the first line to themselves, as wide as the console, and the phase, chapter state, timer and file name move to a line of their own underneath — where a long book title no longer has to compete with the bar for room.
The phases have names instead of numbers. They had grown into Pass 1, 2, 2.5, 3 and 3.5, and the fractions were a fiction — "pass 2.5" was never a step between two others. Each one is now named for what it does and spelled as something in progress: Analyzing... measures the file, Probing... transcribes short windows, Scanning... reads a stretch end to end, Finishing... writes the marks. A Re- prefix means the same machinery again over audio that came back empty.
Two things that used to look like the bar misbehaving now read as what they are: a percentage running backwards while a hole in the numbering sends the tool back over earlier ground says so (Probing... (<<)), and wherever a pass is working one stretch of a book rather than the whole of it, that stretch is picked out on the bar in dark cyan. A book that restarts its numbering shows one chapter number per part — ch 11,15,4(+1) — instead of appearing to count backwards, and a finished file's result line says how long it took, both outright and as a share of the run.
Settings can live in a file — or in a folder
--config <path> reads options from a file, one per line, written exactly as you would type them. Everything after the option name is its argument, so a phrase or a --custom mapping needs no quoting; blank lines and # comments are ignored. What you type on the command line always beats the same option in a file, wherever --config stands, while options meant to be repeated accumulate. A config file may pull in another.
A folder can carry its own settings. Drop an .abchapterize-config into it — same format — and every book in that folder is processed with those options; an .abchapterize-custom beside it is read as --custom mappings. Settings layer from the outside in, so a shelf overrides the library and the command line overrides both, and only folders the run actually reached through are read. A per-folder file may change how a book is read — phrases, titles, language, mark placement, how hard to look — but not what the run is: models, file selection, output and mode options stay the command line's, and asking for one of those in a folder file is an error naming it rather than a setting quietly ignored.
Also new
- Chapter marks worth a second listen now name their part. On a book whose numbering restarts, the low-confidence list reads
part 1 chapter 4, 9; part 2 chapter 3— "chapter 4" alone did not say which one to go and listen to. - The tuning constants detection runs on can be overridden for a run, with
--set:. They are calibrated against real audiobooks and changing one on a hunch is a good way to lose a chapter quietly, so it is a last resort rather than a first: the manual and the newdoc/constants.mdcover what each one does.
Before you upgrade a script
--pass3-model is now --upgrade-model (-M is unchanged). The old spelling keeps working, silently and indefinitely, so nothing needs touching — the rename just fixes a name that was already wrong before the passes lost their numbers, that model being consulted by five different steps of which only one was pass 3.
If you grep your own debug logs for a phase name, that is the change to know about: logs written by 0.12.0 and earlier keep the old wording, since nothing rewrites them.
And a fresh crop of bugs was hunted down, cornered and exterminated — among them a chapter announced over music that went missing because the recognizer wrote "[Musik]" rather than hearing it, and a mark that could land in the reader's credit instead of on the chapter. The CHANGELOG names them all individually, as is only proper.
Downloads
| File | Platform |
|---|---|
abchapterize-0.12.1-win-x64.zip |
Windows x64 |
abchapterize-0.12.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.