Architecture Overview: From Weather Charts to AI-Generated Video Reports
NimbusNews automates weather reporting by converting meteorological charts into engaging video summaries. Designed for researchers, meteorologists, and weather stations, it combines cutting-edge AI technologies to deliver professional weather reports in minutes.
Key Technologies:
- GPT-4o / Gemini 2.5 Pro (via TAMU AI Chat) for advanced chart analysis
- Llama 3.2 Vision (11B) for alternative vision processing
- Deepgram AI for natural text-to-speech conversion
- Wav2Lip for realistic lip-syncing
- Cloudflare R2 for scalable cloud storage
🏆 Winner of TamuHack 2025
| Component | Technology | Purpose |
|---|---|---|
| Vision Analysis | TAMU AI Chat (Gemini 2.5 Pro / Llama 3.2) | Analyze weather charts |
| Text Processing | NLP models | Generate concise summaries |
| Audio Generation | Deepgram AI (Aura Asteria voice) | Convert text to speech |
| Video Synthesis | Wav2Lip neural network | Create lip-synced videos |
| Cloud Storage | Cloudflare R2 | Store inputs and outputs |
| Web Interface | Streamlit | User-friendly dashboard |

GFS Forecast 4-Panel Chart (500 hPa heights, 250 hPa winds, 700 hPa thicknesses)
Before starting, ensure you have:
- Python 3.10+ installed
- ffmpeg installed (Download here)
- 8GB RAM minimum
- API Keys from:
- TAMU AI Chat (Texas A&M affiliation required)
- Deepgram (Free tier available)
- Cloudflare R2 (R2 Object Storage)
# 1. Clone the repository
git clone https://github.com/Maitreya123/Weatherman_upd.git
cd Weatherman_upd
# 2. Run automated setup (installs everything)
chmod +x setup.sh
./setup.sh
# 3. Configure your API keys
nano .env
# Add your TAMU_CHAT_API_KEY, DEEPGRAM_API_KEY, and R2 credentials
# 4. Start the system
./start.sh
# 5. Open your browser
# Navigate to: http://localhost:8501REM 1. Clone the repository
git clone https://github.com/Maitreya123/Weatherman_upd.git
cd Weatherman_upd
REM 2. Run automated setup (installs everything)
setup.bat
REM 3. Configure your API keys
notepad .env
REM Add your TAMU_CHAT_API_KEY, DEEPGRAM_API_KEY, and R2 credentials
REM 4. Start the system
start.bat
REM 5. Open your browser
REM Navigate to: http://localhost:8501The automated setup script:
- ✅ Checks Python 3.10+ and ffmpeg installation
- ✅ Creates two virtual environments (
weatherman_env,wav2lipmodern_env) - ✅ Installs all Python dependencies
- ✅ Creates necessary directories (
images/,audio/,video/,logs/) - ✅ Generates startup scripts (
start.sh,stop.sh,status.sh) - ✅ Creates
.envfile from template
Time: 5-10 minutes (depending on internet speed)
Edit the .env file with your API credentials:
# TAMU AI Chat API Key (get from https://chat.tamu.ai/)
TAMU_CHAT_API_KEY=sk-your-actual-key-here
TAMU_CHAT_BASE_URL=https://chat-api.tamu.ai/openai
# Deepgram API Key (get from https://console.deepgram.com/)
DEEPGRAM_API_KEY=your-deepgram-key-here
# Cloudflare R2 Storage Credentials
R2_ACCESS_KEY_ID=your-r2-access-key-here
R2_SECRET_ACCESS_KEY=your-r2-secret-key-here
R2_ENDPOINT_URL=https://your-account-id.r2.cloudflarestorage.com
BUCKET_NAME=weather-man
# Optional: Model preference
MODEL_NAME=protected.gemini-2.5-pro- Replace all placeholder values with your actual API keys
- Never commit
.envto version control - Keep your API keys secure
TAMU AI Chat:
- Visit https://chat.tamu.ai/
- Sign in with Texas A&M credentials
- Navigate to API settings
- Generate new API key
Deepgram:
- Visit https://console.deepgram.com/
- Create free account
- Go to API Keys section
- Create new API key
Cloudflare R2:
- Visit https://dash.cloudflare.com/
- Navigate to R2 Object Storage
- Create a bucket (e.g., "weather-man")
- Generate API tokens with R2 read/write permissions
- Note your account ID for the endpoint URL
# macOS/Linux
./start.sh
# Windows
start.batThis starts:
- Wav2Lip Server on
http://127.0.0.1:5001 - Streamlit App on
http://localhost:8501
# macOS/Linux
./status.sh
# Windows
status.bat# macOS/Linux
./stop.sh
# Windows
stop.bat-
Open browser to
http://localhost:8501 -
Upload or Select Image:
- Upload a weather chart (PNG/JPG)
- Or select from previously uploaded images in R2 storage
-
Select AI Model:
protected.gemini-2.5-pro(Recommended - most accurate)llama-3.2-11b-vision-instruct(Faster alternative)
-
Click "Analyze image":
- Vision AI analyzes the weather chart
- Text is cleaned and summarized
- Audio is generated with natural voice
- Video is created with lip-sync
-
View Results:
- Read detailed analysis and summary
- Listen to audio report
- Watch generated video report
- Download or save to R2 storage
Generate Report Tab:
- Upload weather charts
- Select AI models
- Generate analysis, audio, and video
- Save reports to cloud storage
Video Reports Tab:
- Browse previously generated videos
- View saved reports from R2 storage
- Download or share reports
Weather Forecast Tab:
- Search weather by location
- View current conditions
- See daily forecasts
About Tab:
- System information
- Technology stack details
┌─────────────┐
│ Weather │
│ Chart │
│ (PNG/JPG) │
└──────┬──────┘
│
▼
┌─────────────────────────────────┐
│ Vision Analysis │
│ • Gemini 2.5 Pro │
│ • Llama 3.2 11B Vision │
└──────┬──────────────────────────┘
│
▼
┌─────────────────────────────────┐
│ Text Processing │
│ • Clean raw analysis │
│ • Generate summary │
└──────┬──────────────────────────┘
│
▼
┌─────────────────────────────────┐
│ Audio Generation │
│ • Deepgram TTS │
│ • Aura Asteria voice │
└──────┬──────────────────────────┘
│
▼
┌─────────────────────────────────┐
│ Video Synthesis │
│ • Wav2Lip lip-sync │
│ • Base video + audio │
└──────┬──────────────────────────┘
│
▼
┌─────────────────────────────────┐
│ Cloud Storage │
│ • Upload to R2 │
│ • Available for viewing │
└─────────────────────────────────┘
Typical Processing Time: 40-120 seconds per report
If you prefer manual setup or the automated script fails:
# Main application environment
python3 -m venv weatherman_env
source weatherman_env/bin/activate # macOS/Linux
# or: weatherman_env\Scripts\activate # Windows
pip install -r requirements.txt
deactivate
# Wav2Lip environment
python3 -m venv wav2lipmodern_env
source wav2lipmodern_env/bin/activate # macOS/Linux
# or: wav2lipmodern_env\Scripts\activate # Windows
cd Wav2LipModern
pip install -r requirements.txt
cd ..
deactivatemkdir -p Wav2LipModern/checkpoints
cd Wav2LipModern/checkpoints
# Download Wav2Lip model weights (~150MB)
wget https://github.com/Rudrabha/Wav2Lip/releases/download/v1.0/Wav2Lip.pth
cd ../..mkdir -p images audio video logs promptscp .env.example .env
nano .env # Add your API keysTerminal 1 - Wav2Lip Server:
source wav2lipmodern_env/bin/activate
python wav2lip_server.pyTerminal 2 - Streamlit App:
source weatherman_env/bin/activate
streamlit run app.py --server.port 85011. Python Version Error
Error: Python 3.10+ required
Solution: Install Python 3.10 or higher from python.org
2. ffmpeg Not Found
Error: ffmpeg not found
Solution:
- macOS:
brew install ffmpeg - Linux:
sudo apt-get install ffmpeg - Windows: Download from ffmpeg.org and add to PATH
3. API Key Invalid
Error: Invalid API key or authentication failed
Solution:
- Verify API key in
.envfile - Get new key from respective service
- Restart the system after updating
4. Port Already in Use
Error: Address already in use: Port 8501
Solution:
# macOS/Linux
lsof -ti:8501 | xargs kill -9
lsof -ti:5001 | xargs kill -9
# Windows
netstat -ano | findstr :8501
taskkill /PID <PID> /F5. Face Detection Failed
Error: Face detection failed
Solution:
- Verify
video/weather_woman_base.mp4exists - Check Wav2Lip checkpoints are downloaded
- Ensure video has clear, visible face
Check logs for detailed error information:
# macOS/Linux
tail -f logs/streamlit.log
tail -f logs/wav2lip_server.log
tail -f logs/app.log
# Windows
type logs\streamlit.log
type logs\wav2lip_server.log
type logs\app.logIf issues persist:
- Check logs in
logs/directory - Review ARCHITECTURE.md for technical details
- Verify all prerequisites are installed
- Ensure API keys are valid
- Open GitHub issue with error details
Weatherman_upd/
├── app.py # Main Streamlit application
├── wav2lip_server.py # Video processing server
├── config.py # Configuration management
├── logger.py # Logging system
├── deepgram_audio.py # Audio generation
├── weather_data.py # Weather API integration
│
├── Agents/
│ ├── vision_agent.py # Vision analysis
│ └── reform_agent.py # Text processing
│
├── TamuAI/
│ └── tamu_ai_client.py # TAMU API client
│
├── Wav2LipModern/ # Lip-sync engine
│ ├── run.py
│ ├── inference.py
│ └── checkpoints/ # Model weights
│
├── images/ # Input weather charts
├── audio/ # Generated audio files
├── video/ # Base & output videos
├── prompts/ # AI prompts
├── logs/ # Application logs
│
├── setup.sh / setup.bat # Automated setup
├── start.sh / start.bat # Start system
├── stop.sh / stop.bat # Stop system
├── status.sh / status.bat # Check status
│
├── .env # API keys (create from .env.example)
├── .env.example # Environment template
├── requirements.txt # Python dependencies
└── README.md # This file
For detailed technical documentation, see ARCHITECTURE.md
Key Components:
- Frontend: Streamlit web interface (Port 8501)
- Vision Layer: VisionAgent + TAMUAIClient
- Text Layer: ReformAgent for summarization
- Audio Layer: Deepgram integration
- Video Layer: Wav2Lip server (Port 5001)
- Storage Layer: Cloudflare R2 integration
Two Virtual Environments:
weatherman_env: Main applicationwav2lipmodern_env: Video processing
- Never commit
.envfile to version control - Rotate API keys regularly
- Use environment variables for all secrets
- Restrict R2 bucket permissions to necessary operations only
- Keep dependencies updated for security patches
- Use HTTPS in production deployments
- Implement rate limiting for API endpoints
For production use:
-
Use production WSGI server for Flask:
pip install gunicorn gunicorn -w 4 -b 127.0.0.1:5001 wav2lip_server:app
-
Set up reverse proxy (nginx) for Streamlit
-
Configure firewall rules to restrict access
-
Set up monitoring and alerting
-
Use systemd services (Linux) for auto-restart
-
Implement backup strategy for R2 storage
See ARCHITECTURE.md for detailed deployment instructions.
Typical Processing Times:
- Image Analysis: 5-15 seconds
- Text Summarization: 3-8 seconds
- Audio Generation: 2-5 seconds
- Video Processing: 30-90 seconds
- Total: ~40-120 seconds per report
System Requirements:
- Minimum: 4 cores, 8GB RAM, 10GB storage
- Recommended: 8+ cores, 16GB RAM, 50GB SSD, GPU (optional)
Contributions are welcome! Please:
- Fork the repository
- Create a feature branch
- Make your changes with tests
- Submit a pull request
- Follow PEP 8 style guidelines
MIT License - See LICENSE file for details
Dheeraj Mudireddy
- GitHub: github.com/reddheeraj
- LinkedIn: linkedin.com/in/dheeraj2002reddy
Praneet Surabhi
- LinkedIn: linkedin.com/in/praneet-surabhi
- TamuHack 2025 - Winner 🏆
- Texas A&M University - TAMU AI Chat API access
- Deepgram - Text-to-speech technology
- Cloudflare - R2 storage infrastructure
- Wav2Lip Team - Lip-sync technology
Repository: github.com/Maitreya123/Weatherman_upd
Issues: Open a GitHub issue with:
- Error message
- Log excerpts
- System information
- Steps to reproduce
Last Updated: February 2026