Files
UmbraAudio/specs
Umbra Tools 31cd9f7ce4 Record the paragraph-boundary drift and how it is now caught
The production Chinese re-flows the passage across paragraph ids in the
places where Pass 0 split the original mid-sentence. Measured: 439 of
3,038 translated paragraphs (14.5%) are sentence fragments, and in ch-15
the drift runs p0094-p0104 - eleven paragraphs whose Chinese is good but
attached to the wrong paragraph.

The alignment pass cannot see this by construction: a one-to-one paragraph
is a pure copy, so there is nothing to divide and nothing to disagree.

The verification stage finds it, and the spec records how it was made
precise. The first version asked two yes/no questions per paragraph and
was wrong in both directions - five of fifteen flags were paragraphs it
claimed were missing an adverb that was present, and it missed two
paragraphs that are drifted. The stage now asks which paragraph a
translation renders, shows the model its neighbours, and judges the
paragraphs as a window rather than one at a time.

On the real ch-15 window it now finds exactly the drift: ten paragraphs
dropped, p0094 kept and flagged because its Chinese correctly renders its
first two sentences.

Also recorded: the cost of the choice (a gap where a fragment inside a
broken window is dropped on an unreliable verdict) and the root cause
(the drafter is not told that each id must cover only its own English).
2026-11-06 21:26:21 -08:00
..

UmbraAudio Specifications

Index of all specification documents for the UmbraAudio audiobook generation system.

Specifications

File Topic Description
00-project-overview.md Architecture Pipeline overview, tech stack, data layout
01-parsing.md Pass 1a EPUB, PDF, TXT, MD manuscript parsing
02-analysis.md Pass 1b BookNLP, character profiling, pronunciation
03-voice-design.md Pass 2 Per-character voice reference generation
04-mapping.md Pass 3 Text segmentation, speaker attribution, manifests
05-generation.md Pass 5 Audio generation, caching, retry, CUDA management
06-normalization-watermarking.md Post-gen Audio normalization, ACX compliance, Perth watermark
07-assembly-export.md Export M4B, MP3, WAV export via FFmpeg
08-database.md Database SQLite schema, entity relationships, CRUD API
09-web-review-ui.md Web UI FastAPI + HTMX review interface
10-cli-orchestrator.md CLI Click commands, full pipeline orchestration
11-configuration-dependencies.md Config Pydantic settings, dependencies, build system
12-quality.md Quality MOS, WER, consistency, ACX compliance
18-UmbraTrans.md Multilingual Meaning-preserving translation, target voices, and multilingual audiobook production
19-enterprise-control-plane.md Enterprise Multi-tenant projects, access control, artifact lineage, and commercial voice library
20-enterprise-database-integration.md Enterprise DB Shared-PostgreSQL contract, blockers, cutover phases P1-P4
21-umbra-system-nodes-tasks-and-changes.md System Worker nodes, task assignment, cross-product change management, UI topology
22-releases-and-the-publish-flag.md Release The publish flag, pinned artifact sets, post-publication change, and the Deal Hunter lesson
23-speaker-duplicate-detection.md Speakers Duplicate-speaker scan, approval-safe merging, and the crowd veto
24-analysis-quality-plan.md Analysis Why the ch6 speakers were missed, and a ranked plan to improve attribution

Quick Reference

Pipeline Passes

1a: Parse    → chapters table
1b: Analyze  → characters, pronunciation_guide
2:  Voices   → voice_ref WAVs
3:  Map      → manifests/*.json
4:  Test     → sample audio (optional)
5:  Generate → audio/*.wav, audio_normalized/*.wav
    Export   → export/*.m4b, *.mp3

Key Entry Points

Component File Class/Function
CLI cli.py main Click group
Pipeline orchestrator.py run_pipeline()
TTS voices/chatterbox.py ChatterboxEngine
Segmenter mapping/segmenter.py Segmenter
Generator generation/chapter.py ChapterGenerator
Normalizer assembly/normalize.py AudioNormalizer
Web UI web/__init__.py create_app()
Database database.py Database