answering machine detection

FreeSWITCH mod_amd vs stream audio detection: production performance

Comparing native FreeSWITCH silence detection against WebSocket audio streams across latency, false positives, and media server CPU utilization.

By Ayesha Kazi·September 23, 2026·4 min read
What matters here
  1. Native mod_amd requires longer silence windows, while audio stream engines begin evaluation within 1/8 second.
  2. Legacy cadence detection drops up to 20% of live human answers as false positives on modern networks.
  3. Offloading audio analysis to external WebSockets removes DSP processing overhead from the FreeSWITCH host.

Native silence analysis versus real-time audio streams

FreeSWITCH outbound architectures rely heavily on fast call progression analysis. For years, the default method for detecting answering machines has been native modules like mod_amd or avmd. These modules inspect local RTP streams inside the media engine using silence thresholds, energy spikes, and temporal cadence rules. They require zero external network dependencies and keep media on-box. However, modern network behavior and smartphone call screening have exposed severe limits in pure silence-based logic.

When evaluating a freeswitch mod_amd benchmark against stream-based analysis, the differences appear instantly across three key operational metrics: latency, detection accuracy, and host CPU load. Outbound dialers must route calls instantly when a human answers. Waiting several seconds for a silence counter to expire degrades lead quality and triggers abandon rate violations. High-volume operations looking to optimize audio routing often evaluate replacing FreeSWITCH audio detection with AMDY stream sockets to move processing off the core media server.

Latency and detection speed in production

Native mod_amd works by waiting for an initial burst of energy, measuring its length, and then waiting for a trailing silence period. If the initial greeting exceeds a threshold (for example, 1,200 milliseconds), it flags the call as a machine. If the greeting is short and followed by silence, it flags the call as human. This logic forces a fundamental delay. The engine cannot return a verdict until the silence threshold expires, typically keeping the line open for 1.5 to 3 seconds before bridging the call to an agent.

This delay causes noticeable dead air. When a human answers with a quick "Hello?", they hear total silence while FreeSWITCH waits to confirm no more speech is coming. Prospects frequently hang up during this window. In contrast, modern stream detection connects via a WebSocket API and begins audio analysis within 1/8 of a second. By processing the underlying acoustic fingerprint rather than waiting for silence pauses, stream engines deliver immediate verdicts, connecting humans to agents without dead air pauses.

False positives and carrier FAS traps

In a direct comparison of mod_amd vs ai amd, detection accuracy dictates agent utilization and campaign cost. Legacy silence detection relies on ideal audio conditions. When a human answers with a long greeting, such as "Thank you for calling, this is Mark," mod_amd frequently misinterprets the long initial utterance as a voicemail greeting. Standard dialer AMD misclassifies an estimated 10% to 20% of live human callers as answering machines under standard field conditions.

When a dialer falsely identifies a human as a machine, it hangs up or routes the call to a voicemail drop. The prospect experiences a ghost call, damaging caller ID reputation and burning valuable leads. Furthermore, native modules struggle with False Answer Supervision (FAS). FAS occurs when intermediate carriers send a SIP 200 OK signal and stream network noise or dead air before the destination phone actually rings. Native modules hear audio and assume the call was answered, billing the center for dropped or dead lines.

Stream-based engines like AMDY.IO claim 99% accuracy in distinguishing live humans from automated systems. Because the audio classifier analyzes spectral features directly, it identifies carrier FAS traps, fax tones, and intercept messages instantly, preventing bad carrier billing and eliminating ghost calls.

Impact on VoIP media server CPU load

Processing digital signal processing (DSP) algorithms directly within FreeSWITCH impacts core server performance. Analyzing inbound RTP packets frame-by-frame for energy levels across hundreds of concurrent channels creates significant CPU overhead. Under peak traffic, voip media server cpu load amd spikes can degrade audio quality, introduce jitter, and cause dropped SIP packets across the entire platform.

Streaming raw PCM audio out via WebSockets offloads the heavy mathematical work to external compute nodes. FreeSWITCH simply duplicates audio frames to a lightweight WebSocket client. This shifts intensive pattern matching away from the primary PBX, preserving core CPU resources for SIP transaction handling and RTP bridge operations.

Choosing the right tool for your stack

Neither approach fits every use case. VoIP architects should choose based on scale, architecture, and network control:

  • Choose native mod_amd if: You run low-volume inbound or outbound campaigns, operate completely isolated networks without external internet access, or require zero external API dependencies.
  • Choose WebSocket stream analysis if: You run high-volume predictive dialers, face high lead costs, experience carrier FAS, or operate across FreeSWITCH, ViciDial, Asterisk, GoAutoDial, FreePBX, Issabel, or 3CX.

Understanding how latency affects your overall call center throughput is critical. For a deeper look at pacing algorithms, review our analysis on dialer pacing math: how AMD latency changes agent wait times. For teams looking to test stream classification, AMDY.IO provides native integration and 50,000 free detections upon sign-up.

More from AMDY.IO News