-
Moving Our Voice AI to Pipecat: The Parts Nobody Warns You About
Notes from migrating a phone-based voice assistant from a managed platform to Pipecat. Asyncio traps, rebuilding call logs with observers, turn-taking tuning, voicemail detection, and why long-lived WebSockets fight every hosting default.
-
DeepFilterNet vs RNNoise: Choosing a Noise Suppressor for a Real-Time Voice AI Pipeline
The two best free, CPU-only noise suppressors for a pipecat voice pipeline. RNNoise is one line to enable but hurts speech signal quality. DeepFilterNet3 is better at everything except integration and STT risk.
-
Profiling Python Memory in Production on Heroku (and What We Found)
We profiled two FastAPI services hitting Heroku memory limits. memray showed a HuggingFace tokenizer loading 152MB per worker — three times over. The fix was switching from uvicorn's spawn to gunicorn's fork with --preload.
-
Making a Voice AI Reliably Follow a Checklist
Getting a real-time voice agent to walk a caller through a structured checklist — and the delivery bug that wasted weeks of prompt-tuning.
-
How Does Gemini Handle It When You Talk Over It?
I evaluated Gemini 3.1 Flash Live on four overlap scenarios from Full-Duplex-Bench v1.5 — user interruption, backchanneling, side conversation, and background speech — and found systematic prosodic adaptation after overlap events.