Single-container application for transcribing Microsoft Teams recordings using FFmpeg.js and OpenAI Whisper API.
- Upload Teams recordings (MP4, AVI, MOV, etc.)
- Client-side audio extraction using FFmpeg.js
- High-accuracy transcription via OpenAI Whisper API
- Single Docker container - easy deployment
- Clean web interface with drag-and-drop upload
- Copy/download results as text files
export OPENAI_API_KEY="your_openai_api_key_here"# Build image
docker build -t transcription-app .
# Run container
docker run -d \
-p 3000:3000 \
-e OPENAI_API_KEY=$OPENAI_API_KEY \
-v $(pwd)/uploads:/app/uploads \
--name transcription \
transcription-appOpen http://localhost:3000 in your browser
- Upload project folder to QNAP
- Container Station → Create → Build Image
- Set environment variable:
OPENAI_API_KEY - Map volume:
/share/transcriptions→/app/uploads - Expose port:
3000
- Upload Teams recording file (video or audio)
- Wait for FFmpeg to extract audio (if video)
- Transcription happens automatically via Whisper API
- Copy or download the result text
- Max upload: 100MB
- Recommended: Use MP3/M4A for faster processing
- Cost: ~$0.36 per hour of audio
Input: MP4, AVI, MOV, WMV, MKV, MP3, WAV, M4A, AAC Output: Compressed MP3 (128kbps) → Whisper API
Browser → FFmpeg.js (audio extraction) → Node.js API → OpenAI Whisper
OPENAI_API_KEY- Required for transcriptionPORT- Server port (default: 3000)
# Install dependencies
npm install
# Run locally
npm start
# Access at http://localhost:3000FFmpeg loading issues: Refresh browser, check console Transcription errors: Verify OpenAI API key and credits Large files: Consider pre-converting to MP3 for faster processing QNAP deployment: Ensure Container Station has sufficient RAM (4GB+)