Turns audio and video into clean, readable subtitles—automatically, end to end.
C#
0
86 commits
updated Sep 30, 2026
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.
# 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.
| Capability | Description |
|---|---|
| Speech recognition | Whisper.cpp and CrispASR, plus cloud ASR (OpenAI / Groq / DashScope / Deepgram) |
| OCR | GLM-OCR (cloud), RapidOCR (local ONNX), Ollama, llama.cpp — burned-in subtitles, signs and game dialogue |
| Speaker diarization | Speaker labels flow into the ASS output |
| Dubbing | Qwen3-TTS / QORA-TTS / IndexTTS voice cloning, time-aligned and mixed in |
| Translation | 11+ LLM providers, glossary and target-script alignment, karaoke timestamps |
| IR pipeline | One versioned intermediate file (*.centurion.json) chains every command |
| REST API | Centurion serve exposes the pipeline over HTTP (in-process ASP.NET Core) |
| Quality reports | Every command writes a .quality.json with coverage, drift, CPS and warnings |
The full command reference lives in the Commands documentation. Short overview:
| Command | Purpose |
|---|---|
init | Interactive setup wizard |
convert | Subtitle file to intermediate |
asr / ocr / from-script | Media to intermediate |
correct | Timeline and text calibration |
translate / dub | Translation and dubbing |
build | Intermediate to ASS / SRT / TXT |
quality / validate / migrate / pipeline-graph | QA and IR tooling |
models / providers | Model and provider registry |
serve | REST API |
doctor | Environment 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.
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.
| Project | Role |
|---|---|
src/Centurion.Models | Data models, metadata registry, console facade |
src/Centurion.Abstractions | Interfaces, abstract bases, DTOs |
src/Centurion.Core | Engine: DAG executor, operators, strategies, providers, DI |
src/Centurion.Cli | Spectre.Console CLI front-end (incl. serve HTTP mode) |
src/Centurion.Tests | xUnit test suite |
generator.version) show build-N, where N is the git commit count.master is automatically published by GitHub Actions as a
pre-release tagged build-N, with asset centurion-win64.zip.tools/.-p:BuildDate=yyyy-MM-ddTHH:mm:ssZ.See CHANGELOG.md for the full history.
Issues, pull requests and feedback are welcome. Familiarize yourself with the pipeline/operator structure first, and keep CLI options backward-compatible where possible.
MIT — see LICENSE.
C#
98.4%
HTML
1.6%
Turns audio and video into clean, readable subtitles—automatically, end to end.
C#
0
86 commits
updated Sep 30, 2026
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.
# 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.
| Capability | Description |
|---|---|
| Speech recognition | Whisper.cpp and CrispASR, plus cloud ASR (OpenAI / Groq / DashScope / Deepgram) |
| OCR | GLM-OCR (cloud), RapidOCR (local ONNX), Ollama, llama.cpp — burned-in subtitles, signs and game dialogue |
| Speaker diarization | Speaker labels flow into the ASS output |
| Dubbing | Qwen3-TTS / QORA-TTS / IndexTTS voice cloning, time-aligned and mixed in |
| Translation | 11+ LLM providers, glossary and target-script alignment, karaoke timestamps |
| IR pipeline | One versioned intermediate file (*.centurion.json) chains every command |
| REST API | Centurion serve exposes the pipeline over HTTP (in-process ASP.NET Core) |
| Quality reports | Every command writes a .quality.json with coverage, drift, CPS and warnings |
The full command reference lives in the Commands documentation. Short overview:
| Command | Purpose |
|---|---|
init | Interactive setup wizard |
convert | Subtitle file to intermediate |
asr / ocr / from-script | Media to intermediate |
correct | Timeline and text calibration |
translate / dub | Translation and dubbing |
build | Intermediate to ASS / SRT / TXT |
quality / validate / migrate / pipeline-graph | QA and IR tooling |
models / providers | Model and provider registry |
serve | REST API |
doctor | Environment 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.
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.
| Project | Role |
|---|---|
src/Centurion.Models | Data models, metadata registry, console facade |
src/Centurion.Abstractions | Interfaces, abstract bases, DTOs |
src/Centurion.Core | Engine: DAG executor, operators, strategies, providers, DI |
src/Centurion.Cli | Spectre.Console CLI front-end (incl. serve HTTP mode) |
src/Centurion.Tests | xUnit test suite |
generator.version) show build-N, where N is the git commit count.master is automatically published by GitHub Actions as a
pre-release tagged build-N, with asset centurion-win64.zip.tools/.-p:BuildDate=yyyy-MM-ddTHH:mm:ssZ.See CHANGELOG.md for the full history.
Issues, pull requests and feedback are welcome. Familiarize yourself with the pipeline/operator structure first, and keep CLI options backward-compatible where possible.
MIT — see LICENSE.
C#
98.4%
HTML
1.6%