Remembering-in-Moskowien/Centurion

Turns audio and video into clean, readable subtitles—automatically, end to end.

C#

0

86 commits

updated Sep 30, 2026

See the code

README

Centurion

Speech in, subtitles out. Centurion is a .NET 10 command-line application that turns audio and video into polished ASS subtitles, and goes further: speaker diarization, machine translation, vocal separation, and machine dubbing with Qwen3-TTS / QORA-TTS / IndexTTS. Fully local by default, GPU-aware.

architecture platform tests status


Quick Start

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

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

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

Third-party tools and models (whisper.cpp, CrispASR, Demucs, QORA-TTS weights, etc.) are downloaded automatically on first use.


Highlights

CapabilityDescription
Speech recognitionWhisper.cpp and CrispASR, plus cloud ASR (OpenAI / Groq / DashScope / Deepgram)
OCRGLM-OCR (cloud), RapidOCR (local ONNX), Ollama, llama.cpp — burned-in subtitles, signs and game dialogue
Speaker diarizationSpeaker labels flow into the ASS output
DubbingQwen3-TTS / QORA-TTS / IndexTTS voice cloning, time-aligned and mixed in
Translation11+ LLM providers, glossary and target-script alignment, karaoke timestamps
IR pipelineOne versioned intermediate file (*.centurion.json) chains every command
REST APICenturion serve exposes the pipeline over HTTP (in-process ASP.NET Core)
Quality reportsEvery command writes a .quality.json with coverage, drift, CPS and warnings

Commands

The full command reference lives in the Commands documentation. Short overview:

CommandPurpose
initInteractive setup wizard
convertSubtitle file to intermediate
asr / ocr / from-scriptMedia to intermediate
correctTimeline and text calibration
translate / dubTranslation and dubbing
buildIntermediate to ASS / SRT / TXT
quality / validate / migrate / pipeline-graphQA and IR tooling
models / providersModel and provider registry
serveREST API
doctorEnvironment diagnostics and diagnostic log

Every command accepts --help. Centurion doctor probes the environment (runtime, toolchain, models, config, network, disk) and writes a diagnostic log suitable for issue reports.


Documentation


Architecture

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

input ─► FFmpegConvert ─► AudioPreprocess ─► [VocalSeparation] ─► Transcribe
   ─► [Diarization] ─► SentenceSplit ─► TextCleaning ─► [Alignment]
   ─► IR (*.centurion.json) ─► build ─► ASS / SRT / TXT

OCR branch: VideoSubFinder frame pick to OcrExtract, parallel to the audio path.

All inference goes through a provider abstraction (local-first with cloud fallback): ASR, OCR, LLM, TTS, diarization and vocal separation each expose IProvider capabilities; the models and providers commands manage the registry.

ProjectRole
src/Centurion.ModelsData models, metadata registry, console facade
src/Centurion.AbstractionsInterfaces, abstract bases, DTOs
src/Centurion.CoreEngine: DAG executor, operators, strategies, providers, DI
src/Centurion.CliSpectre.Console CLI front-end (incl. serve HTTP mode)
src/Centurion.TestsxUnit test suite

Versioning & Releases

  • Version identity is the build number: banners and IR provenance (generator.version) show build-N, where N is the git commit count.
  • Every push to master is automatically published by GitHub Actions as a pre-release tagged build-N, with asset centurion-win64.zip.
  • Release packages do not include third-party tool executables (VideoSubFinder / RapidOCR / QORA-TTS / IndexTTS / llama.cpp); they are downloaded on first use or placed by the user under tools/.
  • Build dates can be pinned with -p:BuildDate=yyyy-MM-ddTHH:mm:ssZ.

See CHANGELOG.md for the full history.


Contributing

Issues, pull requests and feedback are welcome. Familiarize yourself with the pipeline/operator structure first, and keep CLI options backward-compatible where possible.

License

MIT — see LICENSE.

Remembering-in-Moskowien/Centurion

Turns audio and video into clean, readable subtitles—automatically, end to end.

C#

0

86 commits

updated Sep 30, 2026

See the code

README

Centurion

Speech in, subtitles out. Centurion is a .NET 10 command-line application that turns audio and video into polished ASS subtitles, and goes further: speaker diarization, machine translation, vocal separation, and machine dubbing with Qwen3-TTS / QORA-TTS / IndexTTS. Fully local by default, GPU-aware.

architecture platform tests status


Quick Start

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

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

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

Third-party tools and models (whisper.cpp, CrispASR, Demucs, QORA-TTS weights, etc.) are downloaded automatically on first use.


Highlights

CapabilityDescription
Speech recognitionWhisper.cpp and CrispASR, plus cloud ASR (OpenAI / Groq / DashScope / Deepgram)
OCRGLM-OCR (cloud), RapidOCR (local ONNX), Ollama, llama.cpp — burned-in subtitles, signs and game dialogue
Speaker diarizationSpeaker labels flow into the ASS output
DubbingQwen3-TTS / QORA-TTS / IndexTTS voice cloning, time-aligned and mixed in
Translation11+ LLM providers, glossary and target-script alignment, karaoke timestamps
IR pipelineOne versioned intermediate file (*.centurion.json) chains every command
REST APICenturion serve exposes the pipeline over HTTP (in-process ASP.NET Core)
Quality reportsEvery command writes a .quality.json with coverage, drift, CPS and warnings

Commands

The full command reference lives in the Commands documentation. Short overview:

CommandPurpose
initInteractive setup wizard
convertSubtitle file to intermediate
asr / ocr / from-scriptMedia to intermediate
correctTimeline and text calibration
translate / dubTranslation and dubbing
buildIntermediate to ASS / SRT / TXT
quality / validate / migrate / pipeline-graphQA and IR tooling
models / providersModel and provider registry
serveREST API
doctorEnvironment diagnostics and diagnostic log

Every command accepts --help. Centurion doctor probes the environment (runtime, toolchain, models, config, network, disk) and writes a diagnostic log suitable for issue reports.


Documentation


Architecture

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

input ─► FFmpegConvert ─► AudioPreprocess ─► [VocalSeparation] ─► Transcribe
   ─► [Diarization] ─► SentenceSplit ─► TextCleaning ─► [Alignment]
   ─► IR (*.centurion.json) ─► build ─► ASS / SRT / TXT

OCR branch: VideoSubFinder frame pick to OcrExtract, parallel to the audio path.

All inference goes through a provider abstraction (local-first with cloud fallback): ASR, OCR, LLM, TTS, diarization and vocal separation each expose IProvider capabilities; the models and providers commands manage the registry.

ProjectRole
src/Centurion.ModelsData models, metadata registry, console facade
src/Centurion.AbstractionsInterfaces, abstract bases, DTOs
src/Centurion.CoreEngine: DAG executor, operators, strategies, providers, DI
src/Centurion.CliSpectre.Console CLI front-end (incl. serve HTTP mode)
src/Centurion.TestsxUnit test suite

Versioning & Releases

  • Version identity is the build number: banners and IR provenance (generator.version) show build-N, where N is the git commit count.
  • Every push to master is automatically published by GitHub Actions as a pre-release tagged build-N, with asset centurion-win64.zip.
  • Release packages do not include third-party tool executables (VideoSubFinder / RapidOCR / QORA-TTS / IndexTTS / llama.cpp); they are downloaded on first use or placed by the user under tools/.
  • Build dates can be pinned with -p:BuildDate=yyyy-MM-ddTHH:mm:ssZ.

See CHANGELOG.md for the full history.


Contributing

Issues, pull requests and feedback are welcome. Familiarize yourself with the pipeline/operator structure first, and keep CLI options backward-compatible where possible.

License

MIT — see LICENSE.

Languages

C#

98.4%

HTML

1.6%