How I cut my local voice agent's wait from 15 seconds to under 1
I talk to my AI agents out loud through Command Bridge, a tool I built that lets Claude Code and other agents use a voice that runs on my own laptop. When I talked for 30 seconds or more, I used to wait about 15 seconds after I stopped before I heard the first word back, and that’s without counting the time the agent spends thinking about its answer. All 15 of those seconds went to the voice, writing down what I’d said and turning the agent’s reply into speech, and now those two steps take 0.67 seconds.
Waiting that long is why I used to juggle agents, I’d talk to one and switch to another while the first was still working on its reply. I didn’t buy a faster machine to fix it, it’s the same laptop. I just needed to move the voice from the CPU to the GPU, and for my 8 GB GPU to handle that, I first needed to change its thermal paste.
| Voice stages on a long turn | Before | After |
|---|---|---|
| Speech to text | 7.74 s | 0.05 s |
| Voice: agent’s answer to first spoken word | 7.39 s | 0.62 s |
| Voice total | 15.1 s | 0.67 s |
| The agent thinking (unchanged) | 4.8 s | 4.8 s |
Switching agents to dodge the wait
I first started using two-way voice with my agents through Voice Tunnel, and that long wait made me realize I needed multiple lanes, so that’s why I created Command Bridge. Command Bridge gives each agent its own lane, one conversation per agent that I can switch between. I didn’t want to wait long for any one of them to respond, so while one agent worked on its reply I’d switch to another one.
Keeping that pace was hard, especially talking to six agents and cycling through all of them, one after another, for the whole day. I’ve written before that more than six terminal panes fries my brain, and about how tired I’d be by the end of the day.
Moving the voice to the GPU
When I launched Voice Tunnel in August, I wrote that speech on the CPU was now good enough, after measuring it on my 20-core desktop. That made sense when the alternative was not having voice at all, or using dictation tools and reading walls of text back. Then I got used to speaking and listening and wanted to push further.
In July I was at the AI Engineer World’s Fair and saw Thariq Shihipar from Anthropic, in a fireside chat, talk about being as ambitious as you can with these new models. So I figured there must be a way to make this fast, and I asked magnus to move both, the speech to text and the text to speech, to the GPU. Magnus is the agent I talk to most, the chief of staff from last week’s post that runs my other agents. I told it, “I want this whole thing to be fast. Don’t stop until you have a full root cause and a plan of action that you have tested.” And I asked to see it live.
The GPU was throttling
Before any of that could work, we found my laptop’s GPU overheating and slowing itself down to cool off. It’s an NVIDIA RTX A2000 with 8 GB, and it was sitting at 78 to 83 °C even near idle, with nvidia-smi showing SW Thermal Slowdown: Active. The clock was at 607 of its 2,100 MHz.

The cause was thermal paste, the thin layer between the chip and its heatsink that carries the heat away. I’d repasted this laptop last December, but only the CPU, so the GPU still had its original paste. I didn’t know that needed to be changed. The same day I replaced it with PTM7950. Under the same load the GPU now runs at 1,747 MHz and stays at or under 67.6 °C.

Those readings came from HWInfo64’s sensor log, and HWInfo-TUI, which I built last year, plots it right in the terminal. If you run models on a laptop GPU, check its clock and temperature first.
Transcribing while I talk (speech to text)
Command Bridge waited until I finished talking to start writing down what I’d said. We found the transcription model itself took only about 150 milliseconds of the wait. The rest came from transcribing the turn from the beginning after I stopped, so the longer I talked, the longer I waited. On turns where I’d talked for a full minute, that came to 11 to 20 seconds, more than the 7.7-second median across all my turns of 30 seconds or more.
Now Smart Turn, a small model from Pipecat, still decides when I’m done talking, but the turn gets transcribed in pieces while I talk, at every pause of 600 milliseconds or more. When I stop, only the last stretch is left.
Then I moved the transcription model, NVIDIA’s Parakeet, to the GPU too. The two smaller versions that are published didn’t work well there, one was barely faster and the other returned empty text on 20 of 21 test turns, so I converted it to the full-size version. Decoding a turn went from 515 ms on the CPU to 127 ms on the GPU, and together with transcribing in pieces, the wait on long turns went from 7.7 seconds to 0.05, 155 times faster.
Speaking back faster (text to speech)
Speaking back was the bigger wait on most turns, and it was slow for two reasons: the speech model ran on the CPU, and every reply waited on purpose. The first word I heard came 7.4 seconds after the agent had its answer, at the median, on short turns and long ones alike. Kokoro, the speech model that reads the replies aloud, ran on the CPU through kokoro-onnx, and 9.4 seconds of speech took 3.0 seconds to make. On the GPU the same speech took 0.83 seconds.
We also found a fixed 0.8 seconds before every reply, on purpose. I didn’t want a deliberate pause, so it went, and now a reply only waits if I’m still talking. Replies also stream phrase by phrase, so the first phrase plays while the rest is still being made. Put together, the time from the agent having its answer to the first spoken word went from 7.4 seconds to 0.6, 12 times faster. The animation below shows a typical turn, the median of all my turns.
One agent is enough now
The first time I heard a reply less than a second after the agent had it, it felt like having a real conversation. The long waits used to cost me my train of thought or send me off to something else, and the faster back and forth kept me focused.
I built lanes so I could switch agents instead of waiting. Now that replies come back fast and it feels more like a conversation with a lot of back and forth, I can just talk to one agent. I think that’s what enabled my chief of staff as well.
The model helped too. I moved every agent to Opus 5.5 at medium effort soon after it came out, and its median thinking time for me now is 4.8 seconds, the grey bar in both animations.
Try it on your own laptop
None of this needs a big machine. My laptop’s GPU has 8 GB, and the voice models on it are small, Parakeet has 0.6 billion parameters and Kokoro 82 million.
Command Bridge is open source, and I’d love for you to give it a try.