Centurion

CENTURION

SPEECH IN · SUBTITLES OUT · .NET 10

Centurion — Speech In, Subtitles Out

Speech Subtitles, done properly. Centurion is a .NET 10 command-line toolkit that turns audio/video into polished ASS subtitles — and beyond: speaker diarization, machine translation, vocal separation, and even machine dubbing with Qwen3-TTS. Fully local by default, GPU-aware, zero manual tool installs.

Pipeline Platform Tests Status

Quick Start

# 1. Install the .NET 10 SDK and FFmpeg, then build
dotnet build -c Release

# 2. Transcribe a video  intermediate file
Centurion asr demo.mp4 --language en

# 3. Render subtitles
Centurion build demo.centurion.json

Everything else (whisper.cpp, CrispASR, Demucs, models…) is auto-downloaded on first use

Documentation

Page What’s inside
Quick Start Prerequisites, install, build & typical workflows
Commands The full command family — convert, asr, ocr, correct, from-script, build with every option
Translate LLM translation, glossary, target-script alignment & karaoke timestamps
Dub Media dubbing with Qwen3-TTS — voice cloning, time alignment, ducking
Server Centurion.Server — run the whole pipeline over a REST API
Advanced Operator micro-commands, quality reports, self-update, localization
Features Subtitle styles, speaker diarization, vocal separation, GPU, non-Latin scripts

Command Family at a Glance

Command What it does
init Interactive setup wizard — detects files, suggests the right chain
convert Entry point: any subtitle file intermediate file
asr Media intermediate through speech recognition
ocr Video/image intermediate through visible text recognition
from-script Media + script timed intermediate file
correct Calibrate timeline & text of an intermediate file
translate Translate an intermediate file (LLM, glossary, script)
dub Intermediate dubbed WAV audio (Qwen3-TTS)
build Exit point: intermediate ASS / SRT / TXT
serve REST API over the pipeline (in-process HTTP)
validate / migrate / IR schema check & upgrade
models / providers Model registry & provider capability probes
pipeline-graph / quality DAG visualization & per-run quality reports
update Self-update from GitHub releases

How Is It Built?

Operator-pipeline (DAG) architecture — every stage is an independent, swappable module, executed as a directed acyclic graph with parallel branches, retries and graceful degradation:

┌─ OCR branch: VideoSubFinder frame pick ─► OcrExtract ──────────┐
│                                                               ▼
input ─► FFmpegConvert ─► AudioPreprocess ─► [ VocalSeparation] ─► Transcribe
   ─► [ Diarization] ─► SentenceSplit ─► TextCleaning ─► [ Alignment] ─► IR (*.centurion.json) ─► build ─► ASS / SRT / TXT

All inference goes through a Provider abstraction (local-first with cloud fallback) — models / providers manage the registry. Projects: Centurion.Models (data) Centurion.Abstractions (contracts) Centurion.Core (engine) Centurion.Cli (CLI, incl. serve HTTP mode) Centurion.Tests. Details in Features.

Contributing

Issues, PRs, and spicy feedback are all welcome! Get familiar with the pipeline/operator structure first, and keep CLI options backward-compatible where possible.

License

MIT License — see LICENSE for details.