Projects > Vestaphone
Vestaphone: Ask an analog telephone anything; a concise AI answer appears on a split-flap board. Dial 0 for a live voice conversation.

Vestaphone

Ask an analog telephone anything; a concise AI answer appears on a split-flap board. Dial 0 for a live voice conversation.

Year
Jul 2026
Status
Live
Platforms
Raspberry Pi · Hardware
Type
Hardware, AI/ML, IoT
Role
Sole developer
Links
GitHub ↗Vestaphone: analog phone + Vestaboard (video) ↗Operator: Analog phone and a real-time AI (video) ↗Original concept: Karen X. Cheng ↗

Vestaphone turns an ordinary analog telephone into an AI interface with no buttons or app. Lift the handset and ask a question out loud: your speech is transcribed, an AI writes a short answer sized to fit a Vestaboard split-flap display, and that answer flips onto the board. The system confirms the board received exactly what it was sent before treating the answer as delivered.

Press 0 on the keypad and the experience changes: instead of writing to the board, the call becomes a live back-and-forth voice conversation with an AI operator heard through the handset. It answers right away with a spoken "Operator." greeting, then talks freely for up to ten minutes.

The preferred build leaves the original telephone completely stock: its carbon microphone, receiver, cradle switch, and line circuit are all untouched, and a network adapter bridges the unmodified phone to the system. The phone is a touch-tone model, not a rotary; a rotary version remains a future goal.

Features

  • Pick up the phone and ask a question out loud; no buttons, no app, no screen. A short, clear answer flips onto the split-flap board a few seconds later
  • Hang up when you're done; lift the handset again to start over
  • Dial 0 to talk to a live AI operator, a real back-and-forth voice conversation through the handset
  • Ask about current events and it looks things up on the web for you
  • It remembers what you asked earlier in the same call, so you can keep the conversation going
  • A few hidden spoken commands, like clearing the board or asking for a joke
  • Every call is recorded so you can listen back later (can be turned off)

Under the hood

114Files
6,426Lines of code
18Commits
Jul 2026Dev window
StackPython 3.11 · Asterisk · AudioSocket · OpenAI Realtime API · OpenAI Responses API · Vestaboard Local API · SIP/RTP · G.711 mu-law
InfraRaspberry Pi 3 Model B+ systemd service + Grandstream HT801 v2 FXS adapter
Notable
  • PCM passed as 8 kHz G.711 mu-law directly to OpenAI Realtime, avoiding resampling and eliminating a native audio dependency
  • DTMF 0 triggers an operator mode switch: transcription is retired, a new full-duplex Realtime session opens concurrently, and a canned greeting plays with no perceptible gap
  • Deterministic answer validation rejects clarification language and overflow before writing; an independent structured finality judgment catches semantically incomplete responses
  • Pickup and hangup transients suppressed by requiring deliberate speech before audio becomes a request; 450 ms silence gate triggers utterance submission
  • Speech-to-answer pipeline chains Asterisk AudioSocket, OpenAI Realtime transcription, a Responses model, and a Vestaboard write
  • Exact 6x22 matrix readback required before an answer is considered delivered
  • Canned "Operator." PCM greeting plays immediately on mode switch while the Realtime session establishes behind it
  • Mock mode runs the full pipeline without physical hardware for development
  • ALSA/GPIO Codec Zero alternative input path alongside the preferred HT801 build; replaces the carbon mic with an electret and uses GPIO27 for hook detection (untested)
  • Extension 700 wired to Asterisk Echo for end-to-end audio diagnostics