Capture your calls
Separate channels: Hotato scores the WAV offline, whatever produced it.
The two-channel requirement
Per-channel energy: separation reveals who talked over whom.
- channel 0 = caller, channel 1 = agent (override:
--caller-channel/--agent-channel). - Dual-channel / stereo / separate-track recording: most support it.
- Mono-mixed sums both into one waveform: can’t attribute overlap, degrades every number.
Two ways in
A. Let Hotato pull the recording
Vapi/Twilio: capture auto-pulls it (only network call: that download) and scores offline. See Vapi and Twilio. LiveKit/Pipecat: setup prints a scaffold. Retell: setup explains the workaround.
# auto-pull a Vapi call and score it (needs VAPI_API_KEY) uvx hotato capture --stack vapi --call-id <id> # no key? prove the capture → score loop on a bundled call uvx hotato capture --stack vapi --demo
B. Score a recording you already have
Have the WAV? Caller on channel 0, agent on channel 1:
uvx hotato run --stereo call.wav --stack generic --expect yieldPer-stack guides
When mono is all you have
Caller-onset anchor, overlap becomes degraded:
uvx hotato run --caller mono.wav --onset 2.4 --expect yield