How the pluggable provider registries work.
Source: screencastgen/providers/
screencastgen uses registry/factory patterns for TTS, alignment, lip-sync, and visualization providers. ML-heavy backends are lazily imported, so provider modules are only loaded when the backend is actually created.
flowchart TB
CLI[CLI and server arguments] --> Registries
Pipelines --> Registries
subgraph Registries[Lazy provider selection]
TTS[TTS registry]
Align[Alignment registry]
Lip[Lip-sync registry]
Visual[Visualization factory]
end
TTS --> Qwen[Qwen3-TTS]
TTS --> Remote[Remote TTS]
Align --> WhisperX
Lip --> LatentSync
Visual --> ManimGL
Visual --> ManimCE
name -> spec; visualization currently uses a direct factory with the same named-provider shape.create_backend(name) or the equivalent registry helper imports or instantiates the provider only when needed.This keeps screencastgen --help usable without requiring ML dependencies to be installed.
Implement the TTSBackend protocol and are registered in TTS Registry.
| Backend | Class | Contexts | Key Capability |
|---|---|---|---|
| Qwen Backend | QwenTTS |
cli, server |
Multi-language TTS and batched server synthesis |
| Remote TTS | RemoteTTS |
cli |
HTTP proxy to GPU server |
Registered in Alignment Registry.
| Provider | Function | Description |
|---|---|---|
| WhisperX Provider | align_with_whisperx() |
Word-level alignment via WhisperX |
Registered in Lipsync Registry.
| Provider | Function | Description |
|---|---|---|
| LatentSync Provider | run_latentsync() |
High-quality lip-sync |
Registered in Visualization Registry.
| Renderer | Class | Description |
|---|---|---|
| ManimGL Renderer | ManimGLRenderer |
Primary ManimGL subprocess adapter |
| ManimCE Renderer | ManimCERenderer |
Command builder placeholder; rendering intentionally disabled |