Workflow · Audiobook / ACX
ACX judges audiobooks chapter by chapter, so Specula does too. Chapter mode splits the file, runs a full loudness pass on every chapter, and scores RMS, true peak, and the room-tone noise floor against the ACX spec. Each chapter is also checked against the book's own median loudness, which catches the one pickup that drifted, the kind of miss a whole-file number averages away.
Why ACX rejects audiobooks
ACX checks three things and rejects on any of them. Two are easy to hit; the third is the one that catches people.
Loudness and true peak you can usually eyeball in a DAW. The room-tone noise floor is different: it's inaudible on headphones, invisible on a standard loudness meter, and a common reason an audiobook bounces back. Specula reads all three off the file directly, per chapter.
Score the book
Clean the speech map, split the chapters, score everything, export.
.dlg.json sidecar and re-apply next time you open the file.Per chapter, and against the median
A file-level pass isn't enough for a book. An audiobook can sit at a perfect −20 dB RMS overall while one chapter recorded on a different day drifts to −16, or a single quiet pickup dips under the noise-floor line. ACX checks per chapter, so Specula does too: every chapter gets its own ACX verdict on RMS, true peak, and noise floor.
The outlier flag catches consistency problems the absolute gates miss. Each chapter is compared to the book's own median loudness; anything beyond the tolerance (default ±2 LU) is flagged even if it's technically inside the ACX band. That's how you spot the chapter that will sound jarringly louder to a listener mid-book.
The corrected dialogue regions from step 1 feed straight into this: per-chapter speech-gated LUFS and the noise-floor reading both measure against the speech and silence you confirmed.
Fix what's flagged, in the same app
Each red cell points at its fix, and the two that bounce the most audiobooks have a fix in Edit mode.
Noise floor over −60 dB RMS is a common ACX rejection, and it's the one a uniform gain can't fix, because raising the voice raises the room tone with it. Level Dialogue (Edit mode) attacks it from the other side: using the speech regions you confirmed in step 1, it pushes the tone between phrases down first, then brings the voice to your RMS target, so the floor lands lower while the narration comes up. The trick covers a floor that just misses, a room tone a dB or two over the line; hiss baked into the capture needs a re-record.
A chapter that drifts off the book's loudness is the consistency flag, and Level chapters (Chapter mode → Level…) is the one-move fix: pick the metric (RMS, the ACX one, by default) and the target (the book's own median, or a fixed value such as −20 dB RMS, mid the ACX −23..−18 band, for consistency and compliance at once), and Specula applies a per-chapter gain and re-measures. A true peak over −3 dBTP takes one Limit TP pass, which trims the overshoots without disturbing the chapter levels you just set. Every fix is one undoable edit that writes a new file. See the editing workflow →
In the app
Batch a whole series
Skip the app window when you're checking dozens of files.
Everything above also runs headless: the specula CLI drives the app's measurement engine from a script. Score one chapter to a PDF:
specula report ch01.wav --mode podcast --format pdf --out ch01.pdf
Or wire the Get Report App Intent into a Folder Action so every new chapter scores itself on save, and a downstream Shortcut step branches on Integrated LUFS or Speech-Gated LUFS directly. Walk the folder, flag the chapters that miss, AirDrop the failures to the narrator. Full command reference in the CLI section of the user guide.
Before you upload
Per chapter, you know which files clear the spec and which won't, and the two flags that bounce the most books each have a one-move fix: Level Dialogue for a marginal room-tone floor, Level chapters for the one that drifts off the book's loudness. Read the numbers, fix the flags, hand off the receipt.