Noise Removal & Audio Cleanup API
Clean up speech in audio and video files with one HTTP request. Audo provides two endpoints for speech clean-up and noise reduction:
| Endpoint | Tool ID | Web page | What it does | Price | Free tier |
|---|---|---|---|---|---|
POST /api/try/remove-noise | remove_noise | Remove noise | Filters out background noise, hiss, hum, wind, and music behind speech while keeping the speaker's natural voice as recorded; sets loudness to -16 LUFS | $0.03/min ($1.80/hr) | First minute free, 3x/day, no API key |
POST /api/try/enhance-voice | enhance_voice | Audio enhancer (enhance-audio) | Regenerates speech to remove room echo, reverb, background noise, and distortion while restoring muffled, phone, or distant microphones; sets loudness to -16 LUFS | $0.03/min ($1.80/hr) | First minute free, 3x/day, no API key |
One-call free API (no API key required)
Send a local file with multipart/form-data or a public HTTPS link as JSON. Without an Authorization header, Audo processes the first minute of each file for free (3 times a day per tool):
# Non-generative noise removal (keeps the speaker's exact voice):
curl -F file=@interview.wav https://audo.ai/api/try/remove-noise -D response.headers -o response.body
# Generative voice enhancement & echo removal (fixes muffled mics and room reverb):
curl -F file=@voice-note.m4a https://audo.ai/api/try/enhance-voice -D response.headers -o response.body
# Or pass a public HTTPS URL as JSON:
curl -X POST https://audo.ai/api/try/remove-noise \
-H "Content-Type: application/json" \
-d '{"url": "https://example.com/interview.wav", "noise_reduction": 100, "auto_volume": true}' \
-D response.headers -o response.bodyInspect response.headers for the HTTP status and Content-Type before naming response.body: a 200 media response is the cleaned audio or video file itself, whereas a 202 JSON response gives a statusUrl to poll for longer jobs (see Responses).
Options
noise_reduction: integer from10to100(default100). Onremove-noise, controls how far background noise is turned down (100removes all it can; lower values leave a natural bed of room tone). Onenhance-voice, sets the blend of the regenerated studio voice (100full studio voice; lower values mix back more of the original recording).auto_volume: boolean (defaulttrue). Normalizes the output to-16 LUFSwith a-1 dBTPtrue-peak ceiling.output_format:same(default),wav,mp3,m4a, orflac.
Whole files with an API key
Add an API key from the API page with free=false and an approved positive max_credits cap (1 credit = 1 US cent, so $0.03/min is 3 credits per minute). You are charged only when the job succeeds:
curl -H "Authorization: Bearer $AUDO_API_KEY" \
-H "Idempotency-Key: $(uuidgen)" \
-F file=@interview.wav \
-F noise_reduction=100 \
-F free=false \
-F max_credits="$APPROVED_MAX_CREDITS" \
https://audo.ai/api/try/remove-noise -D response.headers -o response.bodyVideo pass-through (picture copied untouched)
Both /api/try/remove-noise and /api/try/enhance-voice accept video files directly (MP4, MOV, MKV, WebM, and AVI, up to 10 GB and 10 hours). When output_format is same (the default), Audo cleans the audio track and copies the original video stream bit-for-bit without re-encoding the picture—so there is zero visual quality loss and no need to demux and remux audio in your own pipeline:
curl -F file=@lecture.mp4 -F noise_reduction=100 https://audo.ai/api/try/remove-noise -D response.headers -o response.bodyAuthenticated REST API (/api/v1/jobs)
For server backends and files up to 10 GB (uploaded in parts over 16 MB), use the REST API:
POST https://audo.ai/api/v1/fileswith{"filename": "episode.wav", "sizeBytes": 52428800}and upload the bytes toupload.url(ormultipart).GET https://audo.ai/api/v1/files/<file_id>?wait=30untilstatusisready.POST https://audo.ai/api/v1/jobsto startremove_noiseorenhance_voice:
curl -X POST https://audo.ai/api/v1/jobs \
-H "Authorization: Bearer $AUDO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"tool": "remove_noise",
"file_id": "file_8Kc2QmP4",
"noise_reduction": 100,
"auto_volume": true,
"output_format": "same",
"free": false,
"max_credits": 300,
"idempotency_key": "550e8400-e29b-41d4-a716-446655440000"
}'- Poll
GET https://audo.ai/api/v1/jobs/<job_id>untilstatusissucceeded, then fetch a signed download URL fromGET https://audo.ai/api/v1/files/<output_file_id>/download.
Batch-clean a folder of files
To clean a folder of recordings safely, download and inspect the Python client (free-api.py), which checks HTTP statuses, follows 202 job links on audo.ai, verifies downloaded media with ffprobe, and writes each result into a separate directory:
python3 free-api.py remove-noise interview.wav ./cleaned/interview '{"noise_reduction":100,"auto_volume":true}'
for file in ./raw-recordings/*.{wav,mp3,m4a,mp4}; do
[ -e "$file" ] || continue
name="$(basename "${file%.*}")"
python3 free-api.py remove-noise "$file" "./cleaned/$name" '{"noise_reduction":100,"auto_volume":true}'
doneWithout an API key, one address can stream 2 uploads at once (an account with an API key, 4 at once, and up to 3 running jobs in parallel).
Command-line afftdn and arnndn filters vs. Audo for speech
Developers building audio pipelines often start with local command-line filters such as afftdn (FFT spectral denoiser), arnndn (RNNoise recurrent network filter), or anlmdn (non-local means denoiser). Here is how they compare with Audo's speech endpoints:
| Capability | afftdn / anlmdn | arnndn (RNNoise) | Audo remove_noise | Audo enhance_voice |
|---|---|---|---|---|
| Steady hiss and fan hum | Good when noise floor (nf) is tuned or sampled | Good | Automatic, no manual profile | Automatic |
| Non-stationary noise (café chatter, traffic, keyboard clicks, music) | Leaves chatter behind or causes watery "musical noise" | Partial; can clip fast consonant onsets | Separates speech from complex background noise and music | Strips background noise, chatter, and music |
| Room echo and hollow reverb | None | None | Keeps room acoustics | Removes room echo and reverb |
| Muffled, distant, or phone microphones | Cannot restore missing frequencies | Cannot restore missing frequencies | Preserves original mic tone | Rebuilds close, studio-quality vocal presence |
EBU R 128 loudness (-16 LUFS, -1 dBTP) | Requires a separate two-pass ebur128 / loudnorm chain | Requires a separate pass | Built in (auto_volume=true) | Built in (auto_volume=true) |
- When `afftdn` or `arnndn` is enough: You have a clean close-mic recording with only light, steady preamp hiss and want zero external network calls.
- When to call `remove_noise`: You have variable background noise (air conditioning, street traffic, café clatter, or background music) and want the speaker's natural vocal timbre preserved without tuning filter thresholds per file.
- When to call `enhance_voice`: The speaker was recorded in an echoey conference room, on a laptop or phone mic, or across a table and needs both reverb removal and vocal restoration.