answering machine detection

Replacing FreeSWITCH audio detection with AMDY stream sockets

Upgrade FreeSWITCH call routing by replacing mod_amd and avmd with real-time WebSocket audio analysis and Event Socket Library controls.

By Ayesha Kazi·September 10, 2026·3 min read
What matters here
  1. Stock FreeSWITCH audio detection misses carrier false-answers and misclassifies live human answers.
  2. AMDY streams outbound media over WebSocket API to evaluate calls in 1/8 second with 99% accuracy.
  3. Managing dialplan execution via ESL prevents ghost calls and bridges live leads to agents immediately.

Stock FreeSWITCH answering machine modules like avmd and mod_amd rely heavily on tone frequencies and silence timers. They measure acoustic energy over fixed time windows. When a live lead says a quick initial hello or answers in a noisy room, standard silence algorithms often classify the call as an answering machine. That misclassification generates ghost calls and drops valid leads before an agent ever hears them.

Furthermore, native modules fail when facing Carrier False Answer Supervision (FAS). When a carrier returns a premature 200 OK signal before the target phone actually rings, legacy engines treat the resulting silence or network noise as an answered call. In our earlier breakdown comparing outbound answering machine detection in ViciDial and Asterisk, we noted how basic detection tools misread network-level anomalies. FreeSWITCH setups running native modules suffer from the exact same failure mode. Replacing in-process detection with AMDY audio stream analysis fixes both issues.

Architectural shift: From local modules to stream sockets

Default dialplan configurations execute avmd or mod_amd as blocking or background applications inside the FreeSWITCH process. This consumes local processor cycles and keeps call routing bound to rigid frequency thresholds.

Replacing local modules with AMDY shifts media analysis out of the core call thread. AMDY integrates natively with FreeSWITCH or via a WebSocket API. When an outbound channel receives an answer signal, FreeSWITCH streams the inbound media track to AMDY over a WebSocket connection. AMDY analyzes the incoming audio fingerprint in real time, starting detection within 1/8 of a second.

Meanwhile, an external application manages channel routing using the Event Socket Library (ESL). When AMDY determines whether the caller is a live human, a voicemail machine, or FAS, it returns the verdict over the API. Your ESL controller then executes the next dialplan step without holding up the core media engine.

Step-by-step FreeSWITCH ESL and WebSocket implementation

Setting up AMDY to handle outbound call detection in FreeSWITCH requires three straightforward configuration steps.

1. Configure media streaming in the dialplan

When an outbound call receives an answer signal, route the channel to a dialplan section that initiates media streaming. Disable native avmd and mod_amd executions to prevent competing media analysis. Use FreeSWITCH media streaming capabilities to send the inbound channel audio directly to the AMDY WebSocket endpoint.

AMDY offers 50,000 free call detections upon signing up and charges zero setup fees. Telephony admins can test stream connections against live outbound traffic without making upfront financial commitments.

2. Connect the Event Socket Library controller

Run an ESL socket application to handle call event management. Your ESL service listens for the CHANNEL_ANSWER event on outbound dialer legs. As soon as the call connects, the ESL controller commands FreeSWITCH to attach the WebSocket audio stream to AMDY.

AMDY processes the initial audio stream instantly. Its detection engine distinguishes ragged human speech from recorded machine greetings and silent carrier answer signals. Because detection begins within 1/8 of a second and operates at 99% accuracy, the verdict returns before the called party finishes speaking.

3. Route channels using real-time detection verdicts

Your ESL application receives the detection payload from AMDY and acts on one of three specific verdicts:

  • Human: Bridge the channel immediately to an agent or predictive dialer queue. Because evaluation completes in milliseconds, the lead experiences no dead air or awkward delays.
  • Machine: Trigger an automated voicemail drop or terminate the call according to your campaign rules.
  • Carrier FAS: Flag the call record as carrier false-answer supervision and drop the line. This stops your dialer from paying for uncompleted calls or routing dead air to agents.

For more details on handling network anomalies across outbound platforms, read our outbound AMD digest on silence detection limits and FAS traps.

Production impact on call center operation

Replacing standard FreeSWITCH modules with audio stream detection directly improves dialer efficiency. Legacy silence timers drop up to 20% of live human calls by misidentifying brief initial responses. Eliminating those false positives recovers live conversations without increasing your outbound call volume.

At the same time, fast detection prevents ghost calls. When prospects answer and encounter silence while an legacy algorithm analyzes their voice, they hang up and often report the calling number. AMDY completes detection in 1/8 of a second, connecting live humans to agents instantly, eliminating ghost calls, and preserving caller ID reputation.

More from AMDY.IO News