Score your Pipecat calls.
Drop a 2-channel recorder into your own pipeline. It writes caller and agent to separate channels; Hotato scores the turn-taking timing on the local file. Nothing calls out.
A recorder you drop in.
hotato setup --stack pipecat prints a drop-in AudioBufferProcessor(num_channels=2) recorder that writes [caller, agent] as a two-channel WAV inside your pipeline.
Pipecat exposes no recording list for Hotato to pull, so the recorder lives in your process and nothing calls out. Install the live-capture helpers with pip install 'hotato[pipecat]', then score the WAV it wrote.
- AudioBufferProcessornum_channels=2
- →
- captured.wavcaller + agent
- →
- capture--stereo
- →
- scorelocal file
- →
- scorecard5 dimensions
The scaffold writes caller on channel 0, agent on channel 1, so every overlap keeps its owner all the way to the scorecard.
$ hotato setup --stack pipecat$ hotato capture --stack pipecat --stereo captured.wav$ hotato run --stereo captured.wav --expect yieldNo pipeline wired yet? hotato capture --stack pipecat --demo runs the loop on a bundled call.
Setup, record, then score locally.
setup prints the recorder to paste into your pipeline. Point capture at the two-channel WAV it writes, or hand run any dual-channel file you already have.
--expect yield reads a caller who starts talking as an interruption the agent should yield to; --expect hold reads it as a backchannel.
Nothing calls out.
Pipecat capture runs entirely inside your pipeline, and there is no vendor origination API, so Hotato scores what your process writes and never places a call.
| Capability | Pipecat | Basis |
|---|---|---|
| Capture a recorded call | Yes | A drop-in 2-channel recorder in your pipeline; Hotato scores the local WAV |
| Drive a live call | Capture-only | No vendor origination API — Hotato never places Pipecat calls |
No key to hand over.
Stays in your infraThe recorder runs inside your own process, so no Pipecat credential ever reaches Hotato. When you connect a hosted stack elsewhere, hotato connect stores that key at file mode 0600 and sends it only to that vendor.
ScopeHotato reads turn-taking timing — did_yield, seconds_to_yield, talk_over_sec — from speech energy. No speaker identification, diarization scoring, transcription grading, emotion or intent. Energy is not intent.