Spaces:
Sleeping
Sleeping
ShebMichel
Add professional README with animated SVG banner, features table, and architecture diagram
8dcd60e | title: GeoTalk | |
| emoji: π | |
| colorFrom: green | |
| colorTo: yellow | |
| sdk: gradio | |
| sdk_version: 6.19.0 | |
| python_version: '3.13' | |
| app_file: app.py | |
| pinned: false | |
| <div align="center"> | |
| <!-- Animated SVG Banner --> | |
| <svg width="800" height="200" xmlns="http://www.w3.org/2000/svg"> | |
| <defs> | |
| <linearGradient id="bg" x1="0%" y1="0%" x2="100%" y2="100%"> | |
| <stop offset="0%" style="stop-color:#1a1a2e"/> | |
| <stop offset="50%" style="stop-color:#16213e"/> | |
| <stop offset="100%" style="stop-color:#0f3460"/> | |
| </linearGradient> | |
| <linearGradient id="text-grad" x1="0%" y1="0%" x2="100%" y2="0%"> | |
| <stop offset="0%" style="stop-color:#4caf50"/> | |
| <stop offset="50%" style="stop-color:#4fc3f7"/> | |
| <stop offset="100%" style="stop-color:#9c27b0"/> | |
| </linearGradient> | |
| </defs> | |
| <rect width="800" height="200" rx="16" fill="url(#bg)"/> | |
| <text x="400" y="85" text-anchor="middle" font-family="Arial, sans-serif" font-size="48" font-weight="bold" fill="url(#text-grad)">πποΈ GeoTalk</text> | |
| <text x="400" y="130" text-anchor="middle" font-family="Arial, sans-serif" font-size="18" fill="#e0e0e0">AI-Generated Geoscience Debate Podcast</text> | |
| <text x="400" y="165" text-anchor="middle" font-family="Arial, sans-serif" font-size="14" fill="#888">Powered by LLMs β’ Edge-TTS β’ Three.js Robot Avatars</text> | |
| <!-- Animated dots --> | |
| <circle cx="300" cy="180" r="3" fill="#4caf50"> | |
| <animate attributeName="opacity" values="1;0.3;1" dur="2s" repeatCount="indefinite"/> | |
| </circle> | |
| <circle cx="400" cy="180" r="3" fill="#4fc3f7"> | |
| <animate attributeName="opacity" values="0.3;1;0.3" dur="2s" repeatCount="indefinite"/> | |
| </circle> | |
| <circle cx="500" cy="180" r="3" fill="#9c27b0"> | |
| <animate attributeName="opacity" values="1;0.3;1" dur="2s" repeatCount="indefinite" begin="0.5s"/> | |
| </circle> | |
| </svg> | |
| **Watch AI geoscientists debate your geological data β live, with animated robot avatars!** | |
| [](https://huggingface.co/spaces/ShebMichel/GeoTalk) | |
| [](https://python.org) | |
| [](https://gradio.app) | |
| </div> | |
| --- | |
| ## π¬ What is GeoTalk? | |
| GeoTalk is an AI-powered geoscience podcast generator that turns your geological data into an engaging debate between AI scientists β complete with **animated 3D robot avatars**, **text-to-speech voices**, and **live captions**. | |
| Upload a core photo, well log, or outcrop image, and watch two AI geoscientists (plus a moderator) debate the interpretation in real-time. | |
| <div align="center"> | |
| ``` | |
| βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| β ποΈ GeoTalk Live β LIVE β | |
| βββββββββββββββ¬βββββββββββ¬βββββββββββββββββββββββββββββββββ€ | |
| β β β β | |
| β π€ Robot A β ποΈ Chair β π€ Robot B β | |
| β (Speaker 1) β(Moderator)β (Speaker 2) β | |
| β β β β | |
| βββββββββββββββ΄βββββββββββ΄βββββββββββββββββββββββββββββββββ€ | |
| β Dr. Vasquez: "The laminations suggest a tidal flat..." β | |
| βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€ | |
| β βΈ ββββββββββββββββββββββββ 2:34 / 5:12 β | |
| βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| ``` | |
| </div> | |
| ## β¨ Features | |
| | Feature | Description | | |
| |---------|-------------| | |
| | π¬ **Core Talk** | Two petrographers debate your core/thin section photo | | |
| | π©Ί **Log Doctor** | Two analysts diagnose your well log data (LAS files) like doctors diagnosing a patient | | |
| | ποΈ **Field Trip FM** | A professor and student narrate a virtual field trip to your outcrop | | |
| | ποΈ **Chair/Moderator** | A professional host introduces the topic, speakers, and guides the debate | | |
| | π€ **3D Robot Avatars** | Reachy Mini-inspired robots animate per speaker turn (Three.js) | | |
| | π£οΈ **Multi-voice TTS** | Each character has a distinct voice (Edge-TTS) | | |
| | π **Live Captions** | Real-time subtitles synced to audio playback | | |
| | βΆοΈ **Auto-play** | Episode starts automatically when ready | | |
| ## ποΈ Architecture | |
| ``` | |
| ββββββββββββββββ ββββββββββββββββββββ βββββββββββββββ | |
| β User Input ββββββΆβ Vision Model ββββββΆβ LLM Script β | |
| β (Image/LAS) β β (Qwen2.5-VL) β β Generator β | |
| ββββββββββββββββ ββββββββββββββββββββ ββββββββ¬βββββββ | |
| β | |
| ββββββββββββββββββββ β | |
| β Edge-TTS βββββββββββββββ | |
| β (Multi-voice) β | |
| ββββββββββ¬ββββββββββ | |
| β | |
| ββββββββββΌββββββββββ | |
| β Robot Viewer β | |
| β (Three.js + β | |
| β Audio Sync) β | |
| βββββββββββββββββββ | |
| ``` | |
| **Pipeline:** | |
| 1. **Vision Analysis** β Qwen2.5-VL-72B describes the uploaded geological image | |
| 2. **Script Generation** β Qwen2.5-72B writes a multi-character debate script (with Chair) | |
| 3. **Text-to-Speech** β Edge-TTS generates distinct voices for each character | |
| 4. **Live Viewer** β Three.js renders animated robots synced to audio playback | |
| ## π Quick Start | |
| ### Run locally | |
| ```bash | |
| git clone https://github.com/ShebMichel/GeoTalk.git | |
| cd GeoTalk | |
| pip install -r requirements.txt | |
| export HF_TOKEN="your_huggingface_token" | |
| python app.py | |
| ``` | |
| ### Try the live demo | |
| π **[Launch GeoTalk on Hugging Face Spaces](https://huggingface.co/spaces/ShebMichel/GeoTalk)** | |
| ## π Project Structure | |
| ``` | |
| GeoTalk/ | |
| βββ app.py # Gradio UI + tab functions | |
| βββ backend.py # LLM client, TTS generation, script parsing | |
| βββ robot_viewer.html # Three.js robot viewer (self-contained) | |
| βββ requirements.txt # Python dependencies | |
| βββ README.md # This file | |
| ``` | |
| ## π€ Robot Avatars | |
| The 3D robot avatars are inspired by [Reachy Mini](https://huggingface.co/spaces/build-small-hackathon/small-talk) from the Small Talk project. They feature: | |
| - **Procedural Three.js geometry** β no external model files needed | |
| - **Per-speaker animations** β talking (head bob, antenna wiggle), listening (head tilt), idle (gentle sway) | |
| - **Visual feedback** β active speaker panel highlighted with colored border | |
| - **Chair indicator** β center panel with pulsing microphone icon | |
| ## π οΈ Tech Stack | |
| - **Frontend:** Three.js, Gradio, HTML5 Audio | |
| - **LLM:** Qwen2.5-72B-Instruct (script generation) | |
| - **Vision:** Qwen2.5-VL-72B-Instruct (image analysis) | |
| - **TTS:** Edge-TTS (Microsoft Neural voices) | |
| - **Hosting:** Hugging Face Spaces | |
| ## π License | |
| MIT | |
| --- | |
| <div align="center"> | |
| <sub>Built with β€οΈ for the geoscience community</sub> | |
| </div> | |