An interactive AI gossip installation created for Dutch Design Week 2025. This system transforms personal stories into anonymized gossip using AI, creating a chain of whispered secrets through an old telephone handset.
Spill The GPT is an interactive art installation that uses AI to collect, anonymize, and share gossip. Users pick up an old telephone, hear gossip from a previous participant, then share their own story. The system uses OpenAI's Whisper for speech recognition, GPT-4 for text transformation, and ElevenLabs for text-to-speech, creating an endless chain of anonymous stories.
- Web Interface (
app.py) - Browser-based gossip collection for development and testing - Phone System (
enhanced_phone_system.py) - Raspberry Pi installation with physical telephone handset
- π Phone Pickup - User lifts the handset
- π Welcome Message - "Welcome to the gossip system. First you will hear gossip from a previous user."
- π§ Previous Gossip - Plays a random gossip from the database
- π Transition Message - "Now it's your turn. Tell your gossip and hang up when you're done."
- ποΈ Recording - User speaks their gossip
- π Phone Hangup - Stops recording and begins processing
- π€ AI Processing Chain:
- Whisper transcribes the audio to text
- GPT-4 transforms it into anonymized gossip
- ElevenLabs converts it back to speech (Dutch voice)
- πΎ Storage - Saved in SQLite database for future playback
- π Loop - Next user hears this gossip
- Raspberry Pi (3B+ or newer recommended)
- Old telephone handset with hookswitch
- Magnetic reed switch or button sensor (hookswitch detection)
- USB microphone or Raspberry Pi audio HAT
- Speaker or amplified audio output
- Jumper wires and breadboard
- Power supply for Raspberry Pi
- Hookswitch Sensor: GPIO 18 (configurable)
- Ground: GND pin
- Power: 3.3V (if needed)
sudo apt update
sudo apt install -y portaudio19-dev python3-pyaudio alsa-utils pulseaudio# Create virtual environment
python3 -m venv env
# Activate environment
# On Linux/Mac:
source env/bin/activate
# On Windows:
env\Scripts\activate
# Install dependencies
pip install -r requirements_enhanced.txtCreate a .env file in the project root:
OPENAI_API_KEY=your_openai_api_key_here
ELEVENLABS_API_KEY=your_elevenlabs_api_key_hereOr export as environment variables:
export OPENAI_API_KEY="your_openai_api_key"
export ELEVENLABS_API_KEY="your_elevenlabs_api_key"python create_audio_messages.pyThis creates:
welcome.mp3- Initial greetingtransition.mp3- "Now it's your turn" message
python app.pyAccess at http://localhost:5000
Features:
- Record audio through browser
- Transcribe and process gossip
- View gossip loop of all collected audio
python enhanced_phone_system.pyThe system will wait for the phone to be picked up and automatically handle the interaction flow.
Spill_The_GPT/
βββ app.py # Flask web application
βββ enhanced_phone_system.py # Main phone system for Raspberry Pi
βββ gossip_database.py # SQLite database management
βββ el.py # ElevenLabs TTS integration
βββ create_audio_messages.py # Generate welcome/transition audio
βββ requirements.txt # Web app dependencies
βββ requirements_enhanced.txt # Enhanced system dependencies
βββ templates/ # HTML templates
β βββ index.html # Main web interface
β βββ gossip_loop.html # Continuous gossip playback
βββ Raspberry_Pi_setup/ # Raspberry Pi specific files
β βββ phone_system.py # Main phone system for Raspberry Pi
β βββ gossip_database.py # Database handler
β βββ el.py # ElevenLabs TTS handler
β βββ create_welcome.py # Welcome audio generator
β βββ requirements_phone.txt # Pi dependencies
β βββ PHONE_SETUP.md # Detailed setup guide
β βββ CLEAN_PI_SETUP.md # Clean installation guide
β βββ setup_clean_pi.sh # Automated installation script
β βββ setup_kiosk_mode.sh # Auto-start configuration script
β βββ test_audio_devices.py # Audio device diagnostics
β βββ test_microphone.py # Microphone testing utility
β βββ gpio_test.py # GPIO testing utility
βββ audio/ # Generated gossip audio files
βββ gossip.db # SQLite database (auto-created)
βββ welcome.mp3 # Welcome message audio
βββ transition.mp3 # Transition message audio
Edit enhanced_phone_system.py:
HORN_BUTTON_PIN = 18 # GPIO pin for hookswitch
AUDIO_RATE = 44100 # Recording sample rate
AUDIO_CHANNELS = 1 # Mono recording
AUDIO_CHUNK = 1024 # Audio buffer sizeTest and configure audio devices:
# List audio devices
aplay -l # Playback devices
arecord -l # Recording devices
# Test microphone
arecord -D plughw:1,0 -d 5 test.wav
aplay test.wav
# Adjust audio levels
alsamixerEdit el.py to change the ElevenLabs voice:
voice_id="ANHrhmaFeVN0QJaa0PhL" # Currently: Petra (Flemish)
model_id="eleven_turbo_v2_5" # Turbo model for low latencySQLite database (gossip.db) automatically created with:
CREATE TABLE gossip (
id INTEGER PRIMARY KEY AUTOINCREMENT,
file_path TEXT NOT NULL,
original_text TEXT, -- Raw transcription
gossip_text TEXT, -- GPT-4 anonymized version
timestamp DATETIME DEFAULT CURRENT_TIMESTAMP,
duration_seconds REAL,
file_size_bytes INTEGER,
is_active BOOLEAN DEFAULT 1
)- Automatic Creation: No manual setup required
- Random Selection: Fair distribution of previous gossip
- Persistent Storage: Survives system restarts
- File Cleanup: Automatically handles missing audio files
- Metadata Tracking: Records timestamps, file sizes, and durations
Run the automated script:
cd Raspberry_Pi_setup
chmod +x setup_kiosk_mode.sh
./setup_kiosk_mode.shCreate service file:
sudo nano /etc/systemd/system/phone-gossip.serviceAdd configuration:
[Unit]
Description=Phone Gossip System
After=network.target sound.service
[Service]
Type=simple
User=pi
WorkingDirectory=/home/pi/Spill_The_GPT
Environment=PATH=/home/pi/Spill_The_GPT/env/bin
ExecStart=/home/pi/Spill_The_GPT/env/bin/python enhanced_phone_system.py
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.targetEnable and start:
sudo systemctl daemon-reload
sudo systemctl enable phone-gossip.service
sudo systemctl start phone-gossip.servicecd Raspberry_Pi_setup
python test_audio_devices.py # List and test all audio devices
python test_microphone.py # Record and playback testcd Raspberry_Pi_setup
python gpio_test.py # Test hookswitch button- Check device permissions:
sudo usermod -a -G audio $USER - Verify audio devices with
aplay -landarecord -l - Test with
speaker-testandarecord - Adjust levels in
alsamixer
- Verify wiring connections
- Check pin permissions
- Test with
gpio readall(installwiringpi) - Ensure correct pin numbering (BCM vs BOARD)
- Check file permissions in project directory
- Verify database with:
sqlite3 gossip.db ".tables" - Database auto-creates on first run
- Use Whisper "tiny" model for faster transcription
- Monitor CPU temperature:
vcgencmd measure_temp - Consider using lighter weight models
- Reduce audio quality if needed
Access the web interface at http://localhost:5000
- Record audio directly in browser
- Live transcription
- GPT-4 anonymization
- Text-to-speech playback
- Continuous playback of all gossip
- Auto-advancing carousel
- Background installation mode
- Anonymization: GPT-4 removes personally identifiable information
- No User Tracking: System doesn't store user identities
- Local Storage: All data stored locally in SQLite
- Audio Cleanup: Temporary recordings automatically deleted
- API Keys: Store in
.envfile (not in version control)
- Art Installations: Interactive gallery pieces
- Events: Dutch Design Week, festivals, exhibitions
- Research: Social interaction and AI studies
- Education: Demonstrating AI pipeline (STT β LLM β TTS)
- When no previous gossip exists, system handles gracefully
- First gossip becomes available for second user
- Database grows organically with each interaction
tiny: Fastest, lowest accuracy (recommended for Pi)base: Good balancesmall: Better accuracy, slowermedium/large: Best accuracy, very slow on Pi
- Currently uses Dutch/Flemish voice (Petra)
- Turbo model for low latency
- Configurable speed, stability, and similarity
This project was created for Dutch Design Week 2025. Feel free to fork and adapt for your own installations.
Created for Dutch Design Week 2025
- OpenAI: Whisper and GPT-4 models
- ElevenLabs: Text-to-speech voice synthesis
- Dutch Design Week: Exhibition platform
For issues or questions, please refer to the setup guides:
Raspberry_Pi_setup/PHONE_SETUP.md- Phone system guideRaspberry_Pi_setup/CLEAN_PI_SETUP.md- Clean installation guideENHANCED_SYSTEM.md- Enhanced features documentation
Project: Spill The GPT
Event: Dutch Design Week 2025
Type: Interactive AI Art Installation