{% extends "base.html" %} {% from "_model_management.html" import model_management %} {% block content %}
{{ project.source_path }} · Status: {{ project.status }}
Live status of background tasks — chapter builds, speaker creation, audio generation.
Runs all steps automatically: Discover → Voices → Segment → Generate → Export
Upload a Word document (.docx), EPUB, or text file.
{{ chapter_count }} chapters loaded
{{ speaker_count }} speakers found
Run LLM analysis to identify characters and speakers from the manuscript.
Requires chapters to be loaded. Upload a manuscript first.
{{ voice_count }} voice references ready
Generate unique voice references for each speaker using VoiceDesign. This will temporarily unload LM Studio models.
Requires speakers to be discovered first.
{{ utterance_count }} utterances across {{ chapter_count }} chapters
Split the manuscript into individual utterances with speaker attribution.
Requires speakers to be discovered first.
Generate audio for all utterances using the assigned voices.
{% if pipeline_status.step.value == 'generate' and pipeline_status.state.value == 'running' %}{{ pipeline_status.detail }}{% if pipeline_status.total_utterances > 0 %} ({{ pipeline_status.completed_utterances }}/{{ pipeline_status.total_utterances }} utterances){% endif %}
Assembles the finished chapter audio into a single M4B with metadata, chapter markers, and cover art from the m4b Meta page, then runs a quality check. Warnings/errors are shown below.
{% set exp = pipeline_status if pipeline_status and pipeline_status.state.value in ('running','completed','failed') and pipeline_status.step.value == 'export' else None %}{{ exp.detail }}
{{ exp.detail }}
{% if exp.warnings %}Author's Republic-ready MP3 package, one file per chapter you edit: sample (no number), opening intro i, closing ii, and story chapters numbered 1–27 from Salvage. Files are 44.1 kHz mono, 192 kbit CBR with 2 s silence at each end. Uses only your chapter audio — no narration is synthesized.
{% set aard = ar_status or {'state': 'idle', 'detail': '', 'progress': 0, 'error': ''} %}{{ aard.detail }}
{{ ar_manifest.track_count }} tracks · {{ "%.1f"|format(ar_manifest.total_duration_s / 60) }} min audio · built {{ ar_manifest.built_at }} {% if ar_manifest.warnings %}· {{ ar_manifest.warnings|length }} warning(s){% endif %} {% if ar_manifest.accepted_deviations %} · {{ ar_manifest.accepted_deviations|length }} accepted deviation(s) {% endif %}
{# One ZIP with every track plus the manifest: a distributor wants a single artifact. #} Download all MP3s (.zip)| Track | RMS dB | Peak dB | Crest dB | Rule |
|---|---|---|---|---|
| {{ d.track }} | {{ "%.2f"|format(d.measured_rms_db) }} | {{ "%.2f"|format(d.measured_peak_db) }} | {{ "%.2f"|format(d.crest_db) }} | {{ d.rule }} |
| # | Role | Title / File | Min | MB | RMS dB | Peak dB | Status | |
|---|---|---|---|---|---|---|---|---|
| {{ t.number or "–" }} | {{ t.role }} | {{ t.name }} ({{ t.source }}) | {{ "%.1f"|format(t.duration_s / 60) }} | {{ "%.1f"|format(t.size_bytes / 1048576) }} | {{ "%.1f"|format(t.rms_db) }} | {{ "%.1f"|format(t.peak_db) }} | {% if t.warning %}{{ t.warning[:60] }} {% else %}ok{% endif %} | MP3 |
Requires utterances to be segmented first.
Exported {{ export_files|length }} file(s)
{{ pipeline_status.detail }}
Requires audio generation to complete. Exports to M4B and MP3.