VSIP

04 / Offline

What actually happened on that call.

Upload a recording and get a structured conversation timeline back — turns, talk-time, silences, interruptions. The same engine that runs live, pointed at your archive.

01

Submit, poll, collect

Analysis is asynchronous: a submit returns a job_id immediately, and you collect the result when it is ready. The SDK wraps the polling loop.

analyze.py
from vsip import AnalyzeClient

analyze = AnalyzeClient(api_key="vsip_...")

job = await analyze.submit(open("call.wav", "rb").read(), "call.wav")
result = await analyze.wait(job["job_id"])      # polls until done

print(result["summary"]["talk_time_ratio"])     # {"speaker_0": 0.62, ...}
print(result["summary"]["longest_monologue_ms"])
for turn in result["turns"]:
    print(turn["speaker"], turn["start_ms"], turn["end_ms"])

02

Measured in audio-time, not wall-time

The pipeline is driven by an audio-position clock, so a two-hour recording is measured against its own timeline rather than against how long the server took to chew through it. Timestamps line up with the file, every time, regardless of load.

03

What comes back

Turns

Every turn with a start, an end, and who took it — the same endpointing model the live API uses, applied to the recording.

Talk-time ratio

Who dominated. Per-speaker talk time and its share of the conversation — the single most requested coaching metric.

Interruptions

Where one speaker cut across another, with timestamps. The difference between an engaged rep and a rude one.

Silences

Dead air, located and measured — the hold gaps and awkward pauses that a transcript alone will never show you.

Longest monologue

The longest uninterrupted stretch by a single speaker. A blunt but reliable signal for QA review.

Noise events

Classified non-speech audio in the recording — useful for flagging bad line conditions and unusable calls.

04

Where teams point it

Call-center QA — score every call instead of the 2% a human has time to listen to. Talk-time ratio and interruption counts are the metrics coaches already use; this produces them without a transcript.

Meeting analytics — who spoke, for how long, and who never got a word in.

Compliance review — locate the moments that matter in a long archive, and prove a disclosure was actually read out rather than talked over.

05

Specs

EndpointPOST /v1/analyze (multipart) → GET /v1/analyze/{job_id}
Max upload100 MB per job
Formatswav, mp3, and μ-law 8k telephony recordings
BillingBy audio-minute analyzed, against a monthly tier allowance
Job retentionJobs and results are kept for 30 days, then purged
Speaker identityAttribute turns to enrolled voices by pairing with the Speaker Profile API