How root1v/prosodia-media-platform works
Prosodia is a self-hosted AI media platform: users create and manage projects in a web dashboard, which submits work through a REST API and background queue; workers run media-processing workflows and store results for later download. The product also offers standalone CLI workflows. The README documents dubbing’s transcription, diarization, contextual translation, voice synthesis, and rendering stages, plus subtitles, transcription, TTS, and micro-video capabilities. Web wiring and several feature implementations are represented at the documented subsystem level because their source was not sampled.
Main entry points: run_project.py Project worker · translate_video.py Video translation · storage.py Media storage · synthesize_text.py Speech synthesis
Components 25
Web dashboard
- Dashboard app
frontend/src/App.tsx - Project pages
frontend/src/pages - API client
frontend/src/api/client.ts
Web services
- Authentication
src/video_translator/web/routers/auth.py - Project API
src/video_translator/web/routers/projects.py - Feature APIs
src/video_translator/web/routers - Job queue
src/video_translator/web/tasks/celery_app.py - Project worker
src/video_translator/web/tasks/run_project.py - Project database
src/video_translator/web/db - Media storage
src/video_translator/web/services/storage.py
Media workflows
- CLI entry
src/video_translator/cli.py - Transcription
src/video_translator/application/use_cases/transcribe_media.py - Video translation
src/video_translator/application/use_cases/translate_video.py - Speech synthesis
src/video_translator/application/use_cases/synthesize_text.py - Micro-video generation
src/video_translator/application/use_cases/generate_micro_video.py
Processing engines
- Media processing
src/video_translator/infrastructure/media/ffmpeg_processor.py - Whisper engines
src/video_translator/infrastructure/transcription - Diarization
src/video_translator/infrastructure/diarization - TTS engines
src/video_translator/infrastructure/synthesis
Other components
- User
- Local LLM
- Postgres
- Redis
- Source media
- Project artifacts
Connections 35
- User → Dashboard app: uses
- Dashboard app → Project pages: routes to
- Project pages → API client: requests
- API client → Authentication: authenticates
- API client → Project API: submits projects
- API client → Feature APIs: calls features
- Project API → Project database: reads and writes
- Authentication → Project database: reads and writes
- Feature APIs → Project database: uses project data
- Project API → Job queue: dispatches jobs
- Job queue → Redis: queues tasks
- Project worker → Job queue: consumes tasks
- Project worker → Transcription: runs workflow
- Project worker → Video translation: runs workflow
- Project worker → Speech synthesis: runs workflow
- Project worker → Micro-video generation: runs workflow
- Project worker → Media storage: reads inputs
- Media storage → Source media: stores uploads
- Project worker → Media storage: stores outputs
- Media storage → Project artifacts: writes files
- Project API → Media storage: serves downloads
- CLI entry → Transcription: runs workflow
- CLI entry → Video translation: runs workflow
- CLI entry → Speech synthesis: runs workflow
- Transcription → Whisper engines: transcribes audio
- Video translation → Diarization: detects speakers
- Video translation → Local LLM: translates contextually
- Video translation → Speech synthesis: requests dubbed speech
- Speech synthesis → TTS engines: synthesizes speech
- Transcription → Media processing: extracts media
- Video translation → Media processing: renders video
- Micro-video generation → Media processing: processes media
- Speech synthesis → Media processing: mixes audio
- Project database → Postgres: persists data
- User → CLI entry: runs locally