Working with real-world audio
Build a small evaluation set that includes clean speech, quiet speech, noise, reverberation, overlapping speakers and silence. Include the microphones, languages and telephony codecs you expect in production. Keep a transcript of the speech your application should recognize. Run the original and enhanced recordings through the same STT version and settings. Compare word error rate (WER), insertions and deletions rather than assuming that stronger suppression produces better transcripts. Keep clean speech in the evaluation so an improvement on noisy calls does not hide a regression elsewhere.Tuning the enhancement_level
The SDK’s ProcessorParameter.EnhancementLevel accepts values from 0.0 to 1.0. Its behavior depends on the loaded model. Read the starting value from the processor context rather than assuming one default across all model families:
import aic_sdk as aic and the processor from the Python quickstart. Start your Quail comparison with the model default and 1.0, then test intermediate values if needed. 1.0 selects the strongest setting on the exposed parameter scale; it does not guarantee noise-free output or the lowest WER.
For an unprocessed comparison, retain the original recording. The SDK’s bypass control preserves processing delay, so bypass timing and a direct raw-audio path are different baselines. See latency.
Best practices
- Tune per STT provider. Hold the provider version and decoding settings fixed while changing one enhancement setting.
- Track both insertions and deletions. Check background-speech insertions, quiet-speech deletions and word substitutions separately. Their response to tuning depends on your audio.
- Preserve stream state. Process frames from one stream in order; do not reset between adjacent blocks. Reset at a discontinuity or use a new processor for a new call.
- Measure the complete path. Report model delay, compute time and end-to-end response latency separately. Compare downstream agent behavior as well as transcripts.