Skip to main content
Tyto predicts whether your call audio will cause failures in downstream Voice AI models, and why. In this tutorial you build a single Python script that analyzes every recording in a folder with the SDK, writes one JSON file, and lets you explore the results visually in the call-analysis dashboard. The script extends the official analyze_file.py example from the Python SDK. To score a live stream instead of recordings, see Real-Time Analysis.
1

Get an SDK License

Self-service SDK Keys can be generated on the developer platform.
These keys are configured to authorize with our backend and collect telemetry.
You also need uv installed — the script declares its own dependencies, so there is nothing else to set up.
2

Create the script

Save the following as analyze_calls.py. It downloads the tyto-l-16khz model on first run, analyzes every recording in a folder with Tyto’s 5-second window sliding in 1-second steps, and writes a single dashboard-ready JSON file.
analyze_calls.py
Supported formats are WAV, FLAC, MP3 and OGG. Multi-channel recordings are mixed down to mono, and any sample rate works — the analyzer resamples internally.
3

Run it on your recordings

Point the script at a folder of recordings:
Output
The first run downloads the model (≈19 MB) into ./models; subsequent runs reuse it.
Tyto operates on fixed 5-second windows and emits one score set per window. The script slides that window in 1-second steps so the dashboard timeline stays smooth. Recordings shorter than 5 seconds carry too little context for a meaningful score and are skipped with a warning.
4

Upload to the dashboard

Open call-analysis.ai-coustics.com, click Load data and drop analysis.json on the Analysis JSON zone.Optionally add the folder of recordings as the Audio folder — they are matched to calls by filename so you can listen while reviewing scores. Without audio, the player uses an animated playhead instead.
5

Read the results

Each row is one recording. The table shows the average of each score array, plus p95 and % degraded (the fraction of windows in the Warn band or above) for triage, and the Driver — the dimension that contributed most to the risk.The Tyto Risk Score is bucketed into indicative bands:Keep in mind that speaker_loudness is a neutral level meter, not a degradation score, i.e. high values are usually fine.A simple triage workflow: sort by risk score descending, review the top N, and group flagged calls by their worst dimension. See aggregating over calls for more strategies.
6

Find out more

Tyto: Audio Insight

What Tyto measures, how to interpret each dimension, and real-time usage.

SDK Quickstart

Real-time speech enhancement with the SDK in your preferred language.

Developer Platform

Generate SDK license keys and explore the SDK playground.

Python SDK Examples

More examples, including real-time analysis on live streams.