A modern web application for transcribing audio files and YouTube videos using AssemblyAI or OpenAI Whisper.
- Multiple Transcription Models: Support for AssemblyAI and OpenAI Whisper
- YouTube Integration: Direct transcription from YouTube URLs with automatic title extraction
- File Upload: Upload local audio files (MP3, WAV, M4A, OGG, FLAC, AAC)
- Smart Filenames: Downloads use original file/video names
- Modern UI: Clean, responsive card-based design
- Copy & Download: Copy to clipboard or download as TXT files
- Security: Input validation, file size limits, and security headers
-
Build the Docker image:
docker build -t transcriber . -
Run the container:
docker run -p 3000:3000 transcriber
-
Access the application:
http://localhost:3000
-
Install dependencies:
pip install -r requirements.txt
-
Install yt-dlp (for YouTube support):
pip install yt-dlp
-
Start the web server:
python3 app.py
-
Access the application:
http://localhost:3000
You'll need API keys for the transcription services:
- AssemblyAI: Sign up at assemblyai.com
- OpenAI: Sign up at openai.com
- MP3, WAV, M4A, OGG, FLAC, AAC
- Maximum file size: 100MB
- All YouTube URLs (youtube.com, youtu.be)
- Automatic audio extraction
- Video title used for download filename
- Minimal Design: Clean black and white theme
- Responsive Layout: Works on desktop and mobile
- Card-based UI: Modern card design with proper spacing
- Model Selection: Radio button interface for choosing transcription model
- Smart Filenames: Downloads use original file/video names
- Copy to Clipboard: One-click copy with visual feedback
- Download as TXT: Automatic download with original filename
- New Transcription: Start over with fresh transcription
- Form Auto-hide: Form disappears when transcript is shown
- Input Validation: API key format and length validation
- File Validation: Type and size restrictions
- URL Validation: YouTube URL format checking
- Security Headers: XSS protection, clickjacking prevention
- HTTPS Ready: Works with HTTPS proxy (as you mentioned)
docker build -t transcriber .docker run -p 3000:3000 transcriberdocker run -p 3000:3000 -v /host/path:/app/uploads transcriber- Python 3.11+
- yt-dlp (for YouTube support)
- Flask, requests, openai
- Port: 3000 (configurable in app.py)
- Host: 0.0.0.0 (accessible from any IP)
- Debug Mode: Enabled for development
- Temp Directory: /tmp (for file processing)
- Development Server: Uses Flask development server (not for production)
- Temporary Files: Automatically cleaned up after processing
- API Keys: Not stored - entered per session for security
- Rate Limiting: Removed for personal use
- "yt-dlp not found": Install with
pip install yt-dlp - "API key invalid": Ensure key is at least 20 characters
- "File too large": Maximum file size is 100MB
- "Invalid YouTube URL": Use standard YouTube URLs
- Port already in use: Change port with
-p 3001:3000 - Permission denied: Run with
sudoor check file permissions - Build fails: Ensure Dockerfile and requirements.txt are in the same directory