Skip to main content
Use Tyto to rank recordings by audio conditions and inspect their score dimensions. This tutorial uses Python SDK 3.2.0/core 0.24.0 and tyto-1.1-l-16khz. File analysis runs locally in the SDK. The script uses FileAnalyzer and adapts the released Python file-analysis example. For live input, use real-time analysis.

Set up

Use Python 3.12 or newer, an SDK key in AIC_SDK_LICENSE and a folder of WAV or FLAC recordings. Select the human/user channel before scoring. The example rejects multi-channel recordings so it cannot silently mix two sides of a conversation.
Set the SDK key through your normal secret mechanism. See authentication and telemetry for network requirements.

Create the script

Save as analyze_calls.py. The example analyzes full 5 s windows at 1 s steps for an overlapping review timeline. Each window requires a full model pass. Use larger steps for lower-cost batch triage when your viewer supports the changed cadence.

Run it on your recordings

Expect one progress line per analyzed file and a JSON file with seven equally sized score arrays per call. A 12 s recording with 1 s steps produces eight complete windows, starting at 0 s through 7 s. A partial trailing window is excluded. The first run downloads the model to ./models; provision it separately for controlled deployments. The decoder supplies mono float32 samples at their actual rate. The collector handles supported host rates internally, so Tyto’s native 16 kHz rate does not require external resampling.
In this release, FileAnalyzer.analyze() returns one silence-padded result for input at or below 5 s, including very short input. This tutorial explicitly skips recordings shorter than 5 s to keep its comparisons on complete windows. That is an example policy, not an SDK minimum-length error.
For longer files, the SDK resets between independent windows and evaluates complete windows on the requested step grid. Smaller steps add overlap and model passes, not independent evidence.

Review the results

Start with the JSON and the Tyto dimension reference. Inspect the highest-risk calls, listen to representative recordings and compare with actual downstream failures. speaker_loudness is a level indicator; high values are not automatically degradation. Use means, percentiles and the fraction of flagged windows for triage. Document your threshold and step size. The score is an audio indicator, not a guaranteed STT error rate or a diagnosis of the network component that caused an artifact.

Upload to the dashboard

The call-analysis dashboard provides a visual review path for analysis.json. Use Load data and the Analysis JSON input. Only provide recordings through its audio input if your organization’s data policy permits it, and check the dashboard’s current format/cadence requirements before interpreting its timeline. Keep the JSON, model ID, SDK version and STEP_SECONDS together. The JSON stores arrays rather than explicit per-window timestamps, so a viewer must use the same step size to place scores correctly. The local SDK script does not require a dashboard upload to complete analysis.

Troubleshooting

For a broader comparison of enhancement, speech-to-text and voice-agent behavior, use the evaluation guide.