# Introduction - Call Progress Analysis

The Epicode IraCPA allows users to do call progress analysis for their dialer applications. With these API one can:

- Determine if a call is answered by an answering machine, live voice or fax machine.
- Listen to specific frequency tones like beeps from an answering machine.
- Stop the analysis upon receiving one of these events.

Each API is a json body request over a websocket connection. The following sections describe the json request and response, and how to send the RTP data.

:::note
IraCPA supports both standalone and load-distributed deployments. It can be deployed as a Kubernetes workload or as a native Linux service, with compatibility across most popular Linux distributions.
:::

## Detection Mechanism

![](/docs/iracpa.png)

Epicode **IraCPA** uses advanced speech pattern analysis to distinguish between a live human voice, an answering machine, fax, or other non-human sources. Since there is no definitive method to differentiate a live greeting from a recorded greeting based solely on speech, IraCPA combines multiple detection techniques. Each technique contributes to the overall decision, and the first conclusive result within the analysis window determines the final classification.

### <span style={{"color":"#b85cfa"}}> 1. Fast Call Progress Analysis </span>

IraCPA delivers an Answering Machine Detection (AMD) result within **1,750 milliseconds**, enabling applications to meet stringent compliance requirements such as TCPA and PECR. Unlike conventional AMD solutions that require customers to manually tune detection timeouts and sensitivity parameters, IraCPA is pre-optimized to provide the best possible detection accuracy within the fixed **1.75-second** analysis window.

### <span style={{"color":"#b85cfa"}}> 2. Speech Pattern Analysis </span>

IraCPA is **language agnostic** and does not rely on spoken words or phrases such as "Hello." Instead, it analyzes speech characteristics, including speech cadence, energy distribution, and timing patterns, to determine whether the audio resembles a live speaker or a prerecorded greeting.

The detection engine uses proprietary stochastic pattern recognition algorithms rather than deterministic rules, allowing it to perform consistently across different languages, accents, and speaking styles. Typical detection accuracy exceeds **80%**, with many deployments reporting accuracy levels above **95%** under production conditions.

### <span style={{"color":"#b85cfa"}}> 3. Pure Tone Detection </span>

In addition to speech analysis, IraCPA detects **pure frequency tones**, which are commonly generated by voicemail systems, fax machines, and other automated devices.

Human speech consists of multiple harmonic frequencies with relatively distributed energy, whereas pure tones exhibit concentrated energy at a single frequency. When such a tone is detected, IraCPA can confidently rule out a live human voice.

The engine can be configured to recognize known voicemail and fax tone frequencies. Tone detection is effective when the tone occurs within the initial **1,750-millisecond** analysis period.

### <span style={{"color":"#b85cfa"}}> 4. Silence Detection </span>

IraCPA continuously monitors silence as part of the detection process.

- Configurable parameters allow the engine to ignore expected silence immediately after call connection.
- Ambient silence occurring after the initial analysis period can be reported through dedicated silence detection events.
- If the called party remains silent throughout the entire **1,750-millisecond** detection window, IraCPA classifies the call as **Live Voice**, since answering machines typically begin playing their greeting within this period.