How korenkrita/simul-subtitle works
Simul Subtitle is a cross-platform live-captioning app for Android, macOS, and Windows. Users configure source and target languages and an optional translation service, grant audio/overlay permissions as needed, then start captions: platform audio capture feeds shared speech segmentation and offline recognition, followed by optional online translation and floating-caption rendering. The product also supports scene and glossary settings, optional Jev assistance, session logs and transcripts, and Android update checks. Several platform internals are unsampled; documented capabilities are shown without asserting unverified implementation links.
Main entry points: MainActivity.kt Android App · CaptionSession.kt Caption Session · App.kt Desktop App · Pipeline.kt Caption Pipeline
Components 24
Platform Apps
- Android App
app/src/main/java/io/github/korenkrita/simulsub/MainActivity.kt - Desktop App
desktop/src/main/java/io/github/korenkrita/simulsub/App.kt - Desktop Entry
desktop/src/main/java/io/github/korenkrita/simulsub/Main.kt - App Updater
app/src/main/java/io/github/korenkrita/simulsub/AppUpdater.kt
Audio and Captions
- Android Capture
app/src/main/java/io/github/korenkrita/simulsub/CaptionService.kt - Android Overlay
app/src/main/java/io/github/korenkrita/simulsub/CaptionOverlayView.kt - Desktop Session
desktop/src/main/java/io/github/korenkrita/simulsub/Session.kt - Desktop Overlay
desktop/src/main/java/io/github/korenkrita/simulsub/Overlay.kt - Caption Session
core/src/main/java/io/github/korenkrita/simulsub/CaptionSession.kt
Speech and Translation
- Speech Segmenter
core/src/main/java/io/github/korenkrita/simulsub/Segmenter.kt - Caption Pipeline
core/src/main/java/io/github/korenkrita/simulsub/Pipeline.kt - Offline Engines
app/src/main/java/io/github/korenkrita/simulsub/Engines.kt - BYOK Translation
core/src/main/java/io/github/korenkrita/simulsub/Translation.kt
Settings and Services
- Android Preferences
app/src/main/java/io/github/korenkrita/simulsub/Prefs.kt - Desktop Preferences
desktop/src/main/java/io/github/korenkrita/simulsub/Prefs.kt - Jev Assistance
core/src/main/java/io/github/korenkrita/simulsub/Jev.kt - Service Status
core/src/main/java/io/github/korenkrita/simulsub/ServiceStatus.kt - Setup Ordering
core/src/main/java/io/github/korenkrita/simulsub/SetupOrder.kt
Session Records
- Session Logs
core/src/main/java/io/github/korenkrita/simulsub/SessionLog.kt
Other components
- Viewer
- System Audio
- LLM Endpoint
- Jev Service
- Release Service
Connections 26
- Viewer → Android App: configures and starts
README.md - Viewer → Desktop App: configures and starts
README.md - Android App → Android Capture: starts service
app/src/main/java/io/github/korenkrita/simulsub/MainActivity.kt - Android App → App Updater: checks updates
app/src/main/java/io/github/korenkrita/simulsub/MainActivity.kt - Desktop Entry → Desktop App: launches
desktop/src/main/java/io/github/korenkrita/simulsub/Main.kt - Desktop App → Desktop Session: controls session
desktop/src/main/java/io/github/korenkrita/simulsub/App.kt - System Audio → Android Capture: provides playback audio
app/src/main/java/io/github/korenkrita/simulsub/CaptionService.kt - System Audio → Desktop Session: provides system audio
README.md - Android Capture → Caption Session: runs session
app/src/main/java/io/github/korenkrita/simulsub/CaptionService.kt - Desktop Session → Caption Session: uses shared session
desktop/src/main/java/io/github/korenkrita/simulsub/Session.kt - Caption Session → Speech Segmenter: feeds audio frames
core/src/main/java/io/github/korenkrita/simulsub/CaptionSession.kt - Caption Session → Caption Pipeline: submits speech jobs
core/src/main/java/io/github/korenkrita/simulsub/CaptionSession.kt - Caption Pipeline → Offline Engines: uses offline recognition
- Caption Pipeline → BYOK Translation: requests translation
README.md - BYOK Translation → LLM Endpoint: sends text
README.md - Caption Pipeline → Jev Assistance: requests optional judgment
core/src/main/java/io/github/korenkrita/simulsub/Pipeline.kt - Jev Assistance → Jev Service: sends optional requests
core/src/main/java/io/github/korenkrita/simulsub/Jev.kt - Android Capture → Android Overlay: renders captions
app/src/main/java/io/github/korenkrita/simulsub/CaptionService.kt - Desktop Session → Desktop Overlay: shows captions
README.md - Caption Session → Session Logs: records session
core/src/main/java/io/github/korenkrita/simulsub/CaptionSession.kt - Android App → Android Preferences: edits settings
README.md - Desktop App → Desktop Preferences: edits settings
README.md - Caption Session → Setup Ordering: orders setup
core/src/main/java/io/github/korenkrita/simulsub/CaptionSession.kt - Android App → Session Logs: views and shares logs
app/src/main/java/io/github/korenkrita/simulsub/MainActivity.kt - Desktop App → Session Logs: manages transcripts
desktop/src/main/java/io/github/korenkrita/simulsub/App.kt - Android App → Release Service: checks releases