How jonathanjing/sermon-video-zh-subtitles works
Tongxing is a sermon-access product with prepared multilingual dubbing as its featured workflow, alongside separate Sunday live-caption and listening-app experiences. The README documents the four production stages and their release gates; sampled source confirms pieces of live processing, verified catalog loading, and playback/storage behavior. The graph preserves documented subsystems, but omits uncertain internal wiring where source was not sampled.
Main entry points: realtime.py Realtime pipeline · AppModel.swift App state · app.js Live caption interface · build_english_source_package.py English anchors
Components 24
Prepared Production
- English anchors
scripts/build_english_source_package.py - Target text
scripts/translate_playback_with_openai.py - Audio synchronization
scripts/render_formal_target_language_speech.py - Release packaging
scripts/build_formal_dev_release_assets.py - Multilingual hosting
scripts/deploy_multilingual_hosting.py - Dual-PDF workflow
scripts/sermon_end_to_end.py
Live Captions
- Live caption interface
web/app.js - Live session API
backend/app.py - Realtime pipeline
backend/realtime.py - Media worker
backend/worker.py
Listening Delivery
- iOS listening app
apps/tongxing-ios/App/ContentView.swift - App state
apps/tongxing-ios/App/AppModel.swift - Catalog repositories
apps/tongxing-ios/Infrastructure/MultilingualCatalogRepository.swift - Audio playback
apps/tongxing-ios/App/PlaybackController.swift - Offline library
apps/tongxing-ios/Infrastructure/OfflineLibrary.swift - Audio alignment
apps/tongxing-ios/Core/Sources/TongxingCore/FingerprintMatcher.swift - Web sermon player
experiments/sermon-dubbing-poc/web/app.mjs - Dev multilingual player
firebase/dev/public/app.js
Runtime Services
- Session progress
backend/progress.py - Artifact storage
backend/storage.py - Firebase hosting
Other components
- Production operator
- Sunday operator
- Listener
Connections 23
- Production operator → English anchors: prepare source
- English anchors → Target text: anchors text
- Target text → Audio synchronization: approved text
- Audio synchronization → Release packaging: audio and captions
- Release packaging → Multilingual hosting: publish assets
- Sunday operator → Live caption interface: prepare session
- Live caption interface → Live session API: session requests
- Live session API → Realtime pipeline: dispatch audio
- Realtime pipeline → Media worker: process stream
- Realtime pipeline → Session progress: record progress
- Media worker → Artifact storage: read artifacts
- Realtime pipeline → Live caption interface: caption events
- Listener → iOS listening app: choose sermon
- iOS listening app → App state: user actions
- App state → Catalog repositories: load catalog
- App state → Audio playback: control playback
- App state → Offline library: manage downloads
- Audio playback → Audio alignment: align audio
- Listener → Web sermon player: listen
- Listener → Dev multilingual player: preview content
- Dev multilingual player → Firebase hosting: fetch assets
- Multilingual hosting → Firebase hosting: deploy release
- Production operator → Dual-PDF workflow: produce PDFs