In this tutorial, you’ll learn how to enable noise suppression for the Voice API and TeXML calls.
Noise suppression works for both AI-powered calls (like AI Assistants and Gather Using AI) and regular voice calls. While it improves audio quality across all call types by reducing background noise, the biggest value comes from enhanced AI performance—cleaner audio leads to more accurate speech recognition and better AI responses. This makes noise suppression especially valuable for AI use cases where audio quality directly impacts user experience.
Voice API
The noise suppression can be enabled for the Voice API calls in the following way:
Don’t forget to update YOUR_API_KEY here.
The only parameter required for the request is direction which can have one of the following options: inbound | outbound | both.
Please be aware that the charge is applied for each direction separately.
curl --request POST \
--url https://api.telnyx.com/v2/calls/${call_control_id}/actions/suppression_start \
--header 'Accept: application/json' \
--header 'Authorization: Bearer ***' \
--header 'Content-Type: application/json' \
--data '{
"direction": "inbound"
}'
The noise suppression can be stopped at any time in the following way:
curl --request POST \
--url https://api.telnyx.com/v2/calls/${call_control_id}/actions/suppression_stop \
--header 'Accept: application/json' \
--header 'Authorization: Bearer ***' \
--header 'Content-Type: application/json' \
--data '{}'
Supported engines
Telnyx offers four noise suppression engines, each optimized for different use cases:
| Engine | Value | Description | Best for |
|---|
| Denoiser | Denoiser | Built-in, general-purpose noise reduction | Default option for most calls |
| DeepFilterNet | DeepFilterNet | Open-source, full-band 48 kHz processing | Telephony and WebRTC |
| Krisp | Krisp | Telephony noise suppression with speaker isolation; supports multiple sub-models via noise_suppression_engine_config.model | Telephony with speaker isolation |
| AiCoustics | AiCoustics | STT-optimized noise suppression | AI and speech recognition workloads |
Choosing an engine
- For standard telephony, use
Denoiser (default) or Krisp for speaker isolation.
- For WebRTC calls, use
DeepFilterNet for full-band processing.
- For AI-powered calls (AI Assistants, Gather Using AI), consider
AiCoustics for the best speech recognition accuracy.
Set the engine using the noise_suppression_engine parameter:
curl --request POST \
--url https://api.telnyx.com/v2/calls/${call_control_id}/actions/suppression_start \
--header 'Accept: application/json' \
--header 'Authorization: Bearer ***' \
--header 'Content-Type: application/json' \
--data '{
"direction": "inbound",
"noise_suppression_engine": "AiCoustics"
}'
Engine configuration
Some engines support additional tuning via noise_suppression_engine_config. Parameters are engine-specific and ignored by other engines.
Krisp models
The Krisp engine supports three sub-models optimized for different telephony scenarios. Select a model using noise_suppression_engine_config.model:
| Model value | Best for |
|---|
krisp-nlsv-f4t-v2.4ef | General telephony (default-quality model) |
krisp-nlsv-f4t-12k-v1.ef | Narrowband telephony (12 kHz) |
krisp-nlsv-b1-v1.4ef | Lightweight model for constrained environments |
You can also set the suppression intensity with suppression_lev (0–100):
curl --request POST \
--url https://api.telnyx.com/v2/calls/${call_control_id}/actions/suppression_start \
--header 'Accept: application/json' \
--header 'Authorization: Bearer ***' \
--header 'Content-Type: application/json' \
--data '{
"direction": "inbound",
"noise_suppression_engine": "Krisp",
"noise_suppression_engine_config": {
"model": "krisp-nlsv-f4t-12k-v1.ef",
"suppression_lev": 80
}
}'
DeepFilterNet configuration
The DeepFilterNet engine supports two tuning parameters:
| Parameter | Type | Default | Description |
|---|
attenuation_lim | integer (0–100) | 100 | Maximum attenuation applied to noise |
mode | standard | advanced | — | Processing mode |
AiCoustics configuration
The AiCoustics engine exposes enhancement and gain controls:
| Parameter | Type | Range | Description |
|---|
enhancement_lev | number | 0–1 | Enhancement intensity |
voice_gain | number | 0.1–4 | Voice gain multiplier |
TeXML
In TeXML there is a dedicated verb for enabling the noise suppression on the call.
<Response>
<Start>
<Suppression direction="inbound" noise_suppression_engine="Krisp"/>
</Start>
...
<Stop>
<Suppression/>
</Stop>
</Response>