abchapterize 0.10.0
Chapter marks that land where the narrator actually says "Chapter Seven".
A feature release on top of 0.9.1. New here? The README explains what ABChapterize is for. What follows is what changed.
Faster where it was slow
The first pass now uses your whole machine. The speech scan that opens every run used to work through a book one short frame at a time on a single thread. It now spreads the timeline across every core and finds exactly the same speech, with not one segment boundary moved — which was the condition for shipping it at all. The new --vad-threads decides how much of the machine it takes.
And the second pass stops paying twice for the same stretch of audio. Where a book's silences sit close together, the recognizer used to be handed one short clip after another, each costing a full turn no matter how little audio was in it. Each read now runs on to the end of the next clip that fits in the turn it has already paid for — roughly a fifth off the second pass's work on a densely-marked book, with no announcement ever cut in half.
One file at a time, with the whole machine behind it
-J / --jobs is gone: multi-file runs no longer process several books at once. That parallelism was worth less than it looked — on a GPU it never happened anyway, and on a CPU the concurrent files were dividing one fixed pool of threads between them rather than adding to it. Giving each file everything is what makes the faster first pass possible. Batches of many files take about as long as before; a single file is quicker. A script still naming --jobs is told what to use instead rather than getting an "unknown option".
Marks in the right place, under the right number
One misheard chapter number used to cost a book every mark after it — all of them correctly found and correctly placed, discarded for contradicting a single mishearing. Now it is the odd mark that gives way instead of the rest of the book, and usually it does not even come to that: the close-up readings taken while pinning a mark down are far more reliable about the number than the wide window that first found the chapter, and their verdict now counts. Gap searches refuse a number that cannot be in the gap, and a mark that still contradicts its neighbours is repaired from them.
Marks also stopped drifting on stitched-together books. An .m4b assembled from separately encoded pieces hands the decoder a little more audio at every seam than its own timeline accounts for, and the tool's sense of time slowly ran ahead — by more than a second by the end of a long book, in the worst case putting a mark past the announcement entirely. Books without the defect are unaffected, down to the millisecond.
Where a better model is named with --pass3-model, it now also gets a go at pinning down a mark the smaller one could not confirm, and a second look at an announcement a long window lost.
Also new
- Phrases and titles can be written per language, for a batch run over a library that is not all in one language:
--chapter-phrase "[fr]/chapitre/;[en]section", and the same syntax for--title,--custom, prologues and epilogues. Anything untagged still means exactly what it did. --whisper-threadsand--vad-threads, both now defaulting to your machine's physical cores rather than nearly all of its hardware threads.--summarynames the files it counted — every file skipped, with the reason, and every file left with chapter marks still missing, with which ones they are.--verifyno longer replaces a whole set of marks that failed wholesale. Marks failing in bulk almost always means they were never one-per-numbered-chapter to begin with, which is true of every retailer mark set grouping several book chapters into one entry — so that file is now left exactly as it was, with a warning, instead of being redetected from scratch. Where only some marks fail, nothing has changed.
And various bugs exterminated. The CHANGELOG has the full list, in detail.
Downloads
| File | Platform |
|---|---|
abchapterize-0.10.0-win-x64.zip |
Windows x64 |
abchapterize-0.10.0-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.