Dual API system: OpenAI Whisper + DeepSeek/OpenAI Summarization for maximum cost efficiency
- π Direct English Transcription - Speak Tamil, get accurate English transcripts
- π§Ή Post-processing Cleanup - Removes artifacts, repetitions, and trailing dots
- π Dual API Support - OpenAI for transcription, DeepSeek/OpenAI for summaries
- π° Cost Optimization - DeepSeek is 90-95% cheaper than OpenAI for summaries
- π API Switching - Switch between providers dynamically
- π» Web App - Upload audio files via browser
- π Mac App - Menu bar recording with manual summary generation
- π₯ Download History - Access all transcriptions and summaries
- π― Real-time Processing - Fast transcription with OpenAI Whisper
| Provider | Input Cost | Output Cost | Summaries per $2 | Savings |
|---|---|---|---|---|
| DeepSeek | $0.14/1M tokens | $0.28/1M tokens | ~3,600 | 95% cheaper |
| OpenAI GPT-3.5 | $0.50/1M tokens | $1.50/1M tokens | ~1,300 | Baseline |
| OpenAI GPT-4o | $2.50/1M tokens | $10.00/1M tokens | ~200 | Most expensive |
π DeepSeek gives you 18x more summaries for the same budget!
# Check Python version (3.8+ required)
python --version
# Check if git is installed
git --version# Clone the repository
git clone <your-repo-url>
cd Summary
# Create virtual environment
python -m venv venv
# Activate virtual environment
source venv/bin/activate # On macOS/Linux
# or
venv\Scripts\activate # On Windows
# Install dependencies
pip install -r requirements.txt# Run the interactive setup script
python setup_dual_api.py
# Or manually configure your .env file:
# OPENAI_API_KEY=sk-proj-your-openai-key-here
# DEEPSEEK_API_KEY=sk-your-deepseek-key-here
# API_PROVIDER=autoWhat each option means:
auto- Uses DeepSeek if available (cheapest), falls back to OpenAIdeepseek- Forces DeepSeek for summaries (maximum savings)openai- Forces OpenAI for summaries (more expensive but familiar)
# Start the dual API server
python app.pyExpected Output:
ποΈ Meeting Recorder - DUAL API SYSTEM
π Features: Audio Upload β OpenAI Whisper β DeepSeek/OpenAI Summary
π€ API Status:
- OpenAI: β
Configured
- DeepSeek: β
Configured
- Active Provider: deepseek
π° COST SAVINGS: Using DeepSeek for summaries (90-95% cheaper than OpenAI)
π Budget Estimate: $2 = ~3,600 summaries with DeepSeek vs ~200 with OpenAI
π Server starting at: http://localhost:9000
# Switch to DeepSeek (cheapest)
curl -X POST -H "Content-Type: application/json" \
-d '{"provider":"deepseek"}' \
http://localhost:9000/api/switch-provider
# Switch to OpenAI
curl -X POST -H "Content-Type: application/json" \
-d '{"provider":"openai"}' \
http://localhost:9000/api/switch-provider
# Use auto-selection (recommended)
curl -X POST -H "Content-Type: application/json" \
-d '{"provider":"auto"}' \
http://localhost:9000/api/switch-provider# Set provider for current session
export API_PROVIDER=deepseek
python app.py
# Or update .env file
echo "API_PROVIDER=deepseek" >> .env# Check if server is running with dual API info
curl -s http://localhost:9000/health | python -m json.toolExpected Response:
{
"status": "healthy",
"openai_configured": true,
"deepseek_configured": true,
"active_provider": "deepseek",
"service": "Dual API Meeting Recorder - OpenAI Whisper + OpenAI/DeepSeek Summarization",
"total_transcriptions": 46,
"features": [
"dual_api_support",
"openai_whisper_transcription",
"deepseek_openai_summarization",
"cost_optimization",
"api_switching"
],
"cost_savings": {
"deepseek_vs_openai": "90-95% cheaper for summarization",
"recommendation": "Use DeepSeek for summaries to maximize your $2 budget"
}
}# Test both API connections
python setup_dual_api.py test
# Expected output:
# π§ͺ Testing API Connections...
# β
OpenAI connection successful
# β
DeepSeek connection successful# Verify database includes API provider tracking
sqlite3 transcriptions.db "SELECT id, filename, api_provider, summary_provider, created_at FROM transcriptions ORDER BY created_at DESC LIMIT 5;"- Open Browser: Navigate to
http://localhost:9000 - Upload Audio: Choose your audio file (supports .m4a, .wav, .mp3)
- Get Transcription: Automatic transcription with OpenAI Whisper
- Generate Summary:
- Uses DeepSeek by default (if configured) - 18x cheaper!
- Falls back to OpenAI if DeepSeek unavailable
- Download: Access transcription and summary files with provider info
- Install:
cd MeetingRecorderApp ./build.sh cp -R release/MeetingRecorder.app /Applications/
2. **Launch**:
```bash
open /Applications/MeetingRecorder.app
- Use: Look for π€ icon in menu bar β Start Recording β Stop Recording β View History
# Check which APIs are configured
python setup_dual_api.py test
# Reconfigure APIs
python setup_dual_api.py
# Check current provider
curl -s http://localhost:9000/health | grep active_provider# Force DeepSeek for maximum savings
export API_PROVIDER=deepseek
python app.py
# Check summary provider in history
curl -s http://localhost:9000/history | grep summary_provider# Check if port 9000 is in use
lsof -ti:9000
# Kill existing processes
pkill -f "python.*app.py"
lsof -ti:9000 | xargs kill -9
# Restart server
python app.py# Verify API key is set
echo $OPENAI_API_KEY
# Test API key
curl -H "Authorization: Bearer $OPENAI_API_KEY" \
-H "Content-Type: application/json" \
https://api.openai.com/v1/models | head -20# Verify DeepSeek API key
echo $DEEPSEEK_API_KEY
# Test DeepSeek API
curl -H "Authorization: Bearer $DEEPSEEK_API_KEY" \
-H "Content-Type: application/json" \
https://api.deepseek.com/v1/models | head -20# Essential commands
python setup_dual_api.py # Configure dual APIs
python app.py # Start server
curl -s http://localhost:9000/health # Check health + API status
pkill -f "python.*app.py" # Stop server
# API switching
curl -X POST -H "Content-Type: application/json" -d '{"provider":"deepseek"}' http://localhost:9000/api/switch-provider
curl -X POST -H "Content-Type: application/json" -d '{"provider":"openai"}' http://localhost:9000/api/switch-provider
# Database with provider tracking
sqlite3 transcriptions.db "SELECT COUNT(*) FROM transcriptions WHERE summary_provider='deepseek';"
# Cost monitoring
sqlite3 transcriptions.db "SELECT summary_provider, COUNT(*) as count FROM transcriptions WHERE summary IS NOT NULL GROUP BY summary_provider;"- Use DeepSeek for summaries: Set
API_PROVIDER=autoordeepseek - Monitor usage: Check
/historyendpoint to see which provider was used - Batch processing: Upload multiple audio files and summarize them all with DeepSeek
- Test both providers: Compare quality and pick your preference
π With DeepSeek, your $2 budget will last months instead of days, giving you 18x more meeting summaries!
π You're all set! Your Meeting Recorder now supports both APIs with massive cost savings through DeepSeek integration.