# tayyabsiddique77/ai-dubbing-studio architecture

> Architecture diagram of the GitHub repository tayyabsiddique77/ai-dubbing-studio, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-30). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/tayyabsiddique77/ai-dubbing-studio
- Repository: https://github.com/tayyabsiddique77/ai-dubbing-studio

## Overview

AI Dubbing Studio accepts a video and target language, then returns a dubbed video. The documented workflow is implemented by a FastAPI entry point and a pipeline that extracts audio, transcribes and optionally diarizes speech, builds a speaker-labeled timeline, then translates, analyzes, synthesizes, synchronizes, and remuxes the result. The graph follows calls shown in the excerpts; optional diarization is explicit. The README documents the studio UI, while its implementation was not sampled.

Main entry points: [`pipeline.py`](https://github.com/tayyabsiddique77/ai-dubbing-studio/blob/main/pipeline.py) (Master Pipeline), [`utils/audio_ops.py`](https://github.com/tayyabsiddique77/ai-dubbing-studio/blob/main/utils/audio_ops.py) (Audio Processing), [`main.py`](https://github.com/tayyabsiddique77/ai-dubbing-studio/blob/main/main.py) (Upload API), [`index.html`](https://github.com/tayyabsiddique77/ai-dubbing-studio/blob/main/index.html) (Studio UI)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_interface["Studio Interface"]
  node_ui["Studio UI<br/>[index.html]"]
  node_api["Upload API<br/>[main.py]"]
end

subgraph group_orchestration["Pipeline Orchestration"]
  node_pipeline["Master Pipeline<br/>[pipeline.py]"]
  node_audio["Audio Processing<br/>[audio_ops.py]"]
end

subgraph group_speech["Speech Analysis"]
  node_asr["Transcription<br/>[asr.py]"]
  node_diarization["Speaker Diarization<br/>[diarization.py]"]
  node_timeline["Speaker Timeline<br/>[segment_utils.py]"]
  node_prosody["Prosody Analysis<br/>[emotion_prosody.py]"]
end

subgraph group_production["Dub Production"]
  node_translation["Translation<br/>[translation.py]"]
  node_emotion_transfer["Voice Synthesis"]
  node_voice_cloning["Voice Cloning<br/>[voice_cloning.py]"]
  node_tts["Standard TTS<br/>[tts.py]"]
  node_sync["Audio Synchronization<br/>[sync_engine.py]"]
end

node_user(("Video Producer"))
node_ffmpeg["FFmpeg"]
node_dubbed_video["Dubbed Video"]

node_user -->|"opens studio"| node_ui
node_ui -.->|"uploads video"| node_api
node_api -->|"processes video"| node_pipeline
node_pipeline -->|"extracts audio"| node_audio
node_pipeline -->|"transcribes audio"| node_asr
node_pipeline -.->|"optionally diarizes"| node_diarization
node_pipeline -->|"merges segments"| node_timeline
node_pipeline -->|"translates dialogue"| node_translation
node_pipeline -->|"crops references"| node_audio
node_pipeline -->|"analyzes prosody"| node_prosody
node_pipeline -->|"generates speech"| node_emotion_transfer
node_pipeline -->|"fits segments"| node_sync
node_pipeline -->|"stitches timeline"| node_sync
node_pipeline -->|"merges dubbed audio"| node_audio
node_audio -->|"runs media commands"| node_ffmpeg
node_pipeline -->|"returns video path"| node_dubbed_video
node_api -->|"serves video"| node_dubbed_video

click node_ui "https://github.com/tayyabsiddique77/ai-dubbing-studio/blob/main/index.html"
click node_api "https://github.com/tayyabsiddique77/ai-dubbing-studio/blob/main/main.py"
click node_pipeline "https://github.com/tayyabsiddique77/ai-dubbing-studio/blob/main/pipeline.py"
click node_audio "https://github.com/tayyabsiddique77/ai-dubbing-studio/blob/main/utils/audio_ops.py"
click node_asr "https://github.com/tayyabsiddique77/ai-dubbing-studio/blob/main/models/asr.py"
click node_diarization "https://github.com/tayyabsiddique77/ai-dubbing-studio/blob/main/models/diarization.py"
click node_timeline "https://github.com/tayyabsiddique77/ai-dubbing-studio/blob/main/utils/segment_utils.py"
click node_translation "https://github.com/tayyabsiddique77/ai-dubbing-studio/blob/main/models/translation.py"
click node_prosody "https://github.com/tayyabsiddique77/ai-dubbing-studio/blob/main/models/emotion_prosody.py"
click node_emotion_transfer "https://github.com/tayyabsiddique77/ai-dubbing-studio/blob/main/models/emotion_transfer.py"
click node_voice_cloning "https://github.com/tayyabsiddique77/ai-dubbing-studio/blob/main/models/voice_cloning.py"
click node_tts "https://github.com/tayyabsiddique77/ai-dubbing-studio/blob/main/models/tts.py"
click node_sync "https://github.com/tayyabsiddique77/ai-dubbing-studio/blob/main/models/sync_engine.py"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_ui,node_api toneBlue
class node_pipeline,node_audio toneAmber
class node_asr,node_diarization,node_timeline,node_prosody toneMint
class node_translation,node_emotion_transfer,node_voice_cloning,node_tts,node_sync toneRose
class node_user,node_ffmpeg,node_dubbed_video toneIndigo
```

## Components

### Studio Interface

- [Studio UI](https://github.com/tayyabsiddique77/ai-dubbing-studio/blob/main/index.html): `index.html`
- [Upload API](https://github.com/tayyabsiddique77/ai-dubbing-studio/blob/main/main.py): `main.py`

### Pipeline Orchestration

- [Master Pipeline](https://github.com/tayyabsiddique77/ai-dubbing-studio/blob/main/pipeline.py): `pipeline.py`
- [Audio Processing](https://github.com/tayyabsiddique77/ai-dubbing-studio/blob/main/utils/audio_ops.py): `utils/audio_ops.py`

### Speech Analysis

- [Transcription](https://github.com/tayyabsiddique77/ai-dubbing-studio/blob/main/models/asr.py): `models/asr.py`
- [Speaker Diarization](https://github.com/tayyabsiddique77/ai-dubbing-studio/blob/main/models/diarization.py): `models/diarization.py`
- [Speaker Timeline](https://github.com/tayyabsiddique77/ai-dubbing-studio/blob/main/utils/segment_utils.py): `utils/segment_utils.py`
- [Prosody Analysis](https://github.com/tayyabsiddique77/ai-dubbing-studio/blob/main/models/emotion_prosody.py): `models/emotion_prosody.py`

### Dub Production

- [Translation](https://github.com/tayyabsiddique77/ai-dubbing-studio/blob/main/models/translation.py): `models/translation.py`
- [Voice Synthesis](https://github.com/tayyabsiddique77/ai-dubbing-studio/blob/main/models/emotion_transfer.py): `models/emotion_transfer.py`
- [Voice Cloning](https://github.com/tayyabsiddique77/ai-dubbing-studio/blob/main/models/voice_cloning.py): `models/voice_cloning.py`
- [Standard TTS](https://github.com/tayyabsiddique77/ai-dubbing-studio/blob/main/models/tts.py): `models/tts.py`
- [Audio Synchronization](https://github.com/tayyabsiddique77/ai-dubbing-studio/blob/main/models/sync_engine.py): `models/sync_engine.py`

### Other components

- **Video Producer**
- **FFmpeg**
- **Dubbed Video**

## Connections

- Video Producer → Studio UI: opens studio (evidence: `README.md`)
- Studio UI → Upload API: uploads video
- Upload API → Master Pipeline: processes video (evidence: `main.py`)
- Master Pipeline → Audio Processing: extracts audio (evidence: `pipeline.py`)
- Master Pipeline → Transcription: transcribes audio (evidence: `pipeline.py`)
- Master Pipeline → Speaker Diarization: optionally diarizes (evidence: `pipeline.py`)
- Master Pipeline → Speaker Timeline: merges segments (evidence: `pipeline.py`)
- Master Pipeline → Translation: translates dialogue (evidence: `pipeline.py`)
- Master Pipeline → Audio Processing: crops references (evidence: `pipeline.py`)
- Master Pipeline → Prosody Analysis: analyzes prosody (evidence: `pipeline.py`)
- Master Pipeline → Voice Synthesis: generates speech (evidence: `pipeline.py`)
- Master Pipeline → Audio Synchronization: fits segments (evidence: `pipeline.py`)
- Master Pipeline → Audio Synchronization: stitches timeline (evidence: `pipeline.py`)
- Master Pipeline → Audio Processing: merges dubbed audio (evidence: `pipeline.py`)
- Audio Processing → FFmpeg: runs media commands (evidence: `utils/audio_ops.py`)
- Master Pipeline → Dubbed Video: returns video path (evidence: `pipeline.py`)
- Upload API → Dubbed Video: serves video (evidence: `main.py`)
