# felipevbrito/transcribe_videos architecture

> Architecture diagram of the GitHub repository felipevbrito/transcribe_videos, 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/felipevbrito/transcribe_videos
- Repository: https://github.com/felipevbrito/transcribe_videos

## Overview

Program Transcribe is a command-line tool that turns a YouTube link into a saved text transcript. The user supplies a link; the program retrieves video information, downloads WAV audio, transcribes it with Whisper, and writes the text under output/. The README also describes Docker isolation, but the graph focuses on runtime product behavior. The workflow is visible in main.py; external-service edges reflect its yt-dlp and Whisper calls.

Main entry points: [`main.py`](https://github.com/felipevbrito/transcribe_videos/blob/main/main.py) (CLI coordinator)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_workflow["CLI workflow"]
  node_main["CLI coordinator<br/>[main.py]"]
  node_metadata["Video metadata<br/>[main.py]"]
end

subgraph group_audio["Audio processing"]
  node_downloader["Audio downloader<br/>[main.py]"]
  node_audiofile["WAV audio<br/>[main.py]"]
  node_transcriber["Whisper transcription<br/>[main.py]"]
end

subgraph group_results["Transcript output"]
  node_writer["Transcript writer<br/>[main.py]"]
  node_transcript["Text transcript<br/>[main.py]"]
end

node_user(("User"))
node_youtube["YouTube"]
node_whisper["Whisper runtime"]

node_user -->|"provides link"| node_main
node_main -->|"requests info"| node_metadata
node_metadata -->|"extracts info"| node_youtube
node_main -->|"downloads audio"| node_downloader
node_downloader -->|"downloads audio"| node_youtube
node_downloader -->|"writes WAV"| node_audiofile
node_main -->|"transcribes audio"| node_transcriber
node_transcriber -->|"reads audio"| node_audiofile
node_transcriber -->|"loads model"| node_whisper
node_main -->|"saves text"| node_writer
node_writer -->|"writes transcript"| node_transcript

click node_main "https://github.com/felipevbrito/transcribe_videos/blob/main/main.py"
click node_metadata "https://github.com/felipevbrito/transcribe_videos/blob/main/main.py"
click node_downloader "https://github.com/felipevbrito/transcribe_videos/blob/main/main.py"
click node_audiofile "https://github.com/felipevbrito/transcribe_videos/blob/main/main.py"
click node_transcriber "https://github.com/felipevbrito/transcribe_videos/blob/main/main.py"
click node_writer "https://github.com/felipevbrito/transcribe_videos/blob/main/main.py"
click node_transcript "https://github.com/felipevbrito/transcribe_videos/blob/main/main.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_main,node_metadata,node_user toneBlue
class node_downloader,node_audiofile,node_transcriber toneAmber
class node_writer,node_transcript toneMint
class node_youtube,node_whisper toneIndigo
```

## Components

### CLI workflow

- [CLI coordinator](https://github.com/felipevbrito/transcribe_videos/blob/main/main.py): `main.py`
- [Video metadata](https://github.com/felipevbrito/transcribe_videos/blob/main/main.py): `main.py`

### Audio processing

- [Audio downloader](https://github.com/felipevbrito/transcribe_videos/blob/main/main.py): `main.py`
- [WAV audio](https://github.com/felipevbrito/transcribe_videos/blob/main/main.py): `main.py`
- [Whisper transcription](https://github.com/felipevbrito/transcribe_videos/blob/main/main.py): `main.py`

### Transcript output

- [Transcript writer](https://github.com/felipevbrito/transcribe_videos/blob/main/main.py): `main.py`
- [Text transcript](https://github.com/felipevbrito/transcribe_videos/blob/main/main.py): `main.py`

### Other components

- **User**
- **YouTube**
- **Whisper runtime**

## Connections

- User → CLI coordinator: provides link (evidence: `main.py`)
- CLI coordinator → Video metadata: requests info (evidence: `main.py`)
- Video metadata → YouTube: extracts info (evidence: `main.py`)
- CLI coordinator → Audio downloader: downloads audio (evidence: `main.py`)
- Audio downloader → YouTube: downloads audio (evidence: `main.py`)
- Audio downloader → WAV audio: writes WAV (evidence: `main.py`)
- CLI coordinator → Whisper transcription: transcribes audio (evidence: `main.py`)
- Whisper transcription → WAV audio: reads audio (evidence: `main.py`)
- Whisper transcription → Whisper runtime: loads model (evidence: `main.py`)
- CLI coordinator → Transcript writer: saves text (evidence: `main.py`)
- Transcript writer → Text transcript: writes transcript (evidence: `main.py`)
