# Background Noise Remover: AI Audio & Video Cleanup (`jumblemog/background-noise-remover`) Actor

Remove background noise from voice recordings, podcasts, interviews, calls and videos with DeepFilterNet3 AI. Keeps the speech, removes fans, traffic, hum, wind and room noise. Optional loudness normalization. MP3, WAV, M4A, MP4 and more. No API key needed.

- **URL**: https://apify.com/jumblemog/background-noise-remover.md
- **Developed by:** [Jumble Mog](https://apify.com/jumblemog) (community)
- **Categories:** AI, Videos, For creators
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per event

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Background Noise Remover: AI Audio & Video Cleanup

**Remove background noise from speech** in podcasts, interviews, voice-overs, lectures, calls, voice memos and videos. This Actor runs [DeepFilterNet3](https://github.com/Rikorose/DeepFilterNet), a state-of-the-art AI speech enhancement model, to keep the voice and strip away fans, air conditioning, traffic, hum, wind, keyboard clatter, crowd murmur and room noise. Videos keep their picture and get clean sound. Everything runs inside the Actor: no API key, no GPU and no audio software needed.

![Spectrogram of Apollo 8 launch commentary before and after noise removal: the rocket roar disappears and the voice remains](https://api.apify.com/v2/key-value-stores/Km5b4PG3kYHdZSb1E/records/background-noise-remover-launch.jpg?signature=17IXsOXEvlLkbLZEfbiYn)

Listen for yourself: [before](https://api.apify.com/v2/key-value-stores/Km5b4PG3kYHdZSb1E/records/background-noise-remover-launch-before.mp3?signature=vY8fodGqzxBiRwnXgmZZ) and [after](https://api.apify.com/v2/key-value-stores/Km5b4PG3kYHdZSb1E/records/background-noise-remover-launch-after.mp3?signature=KGuBYgYJcz5wzvBSwLyq) (22 seconds, MP3).

![Spectrogram of Apollo 8 radio before and after: the radio static between words is gone](https://api.apify.com/v2/key-value-stores/Km5b4PG3kYHdZSb1E/records/background-noise-remover-radio.jpg?signature=B29wyzMiKtiCbGt1cR41)

Radio static: [before](https://api.apify.com/v2/key-value-stores/Km5b4PG3kYHdZSb1E/records/background-noise-remover-radio-before.mp3?signature=tcZPbfBs3cUAI1Tz5RUv) and [after](https://api.apify.com/v2/key-value-stores/Km5b4PG3kYHdZSb1E/records/background-noise-remover-radio-after.mp3?signature=YlNtR8FFzU8nZ9Gd4pNd).

*Samples: NASA Apollo 8 mission audio (public domain), cleaned with the default settings. The background between words dropped by 51 dB and 41 dB.*

### What it does

- **Removes background noise from speech** with DeepFilterNet3, trained on large collections of speech and noise. Steady noise (fans, hum, hiss) and changing noise (traffic, clatter, wind, chatter) both go.
- **Cleans videos too**: MP4, MOV, MKV and WebM come back as the same video with clean sound. The picture is copied as it is, without re-encoding.
- **Keeps your format**: MP3 stays MP3, WAV stays WAV, at the original sample rate. Or convert to MP3, WAV, FLAC, M4A, OGG or Opus, also to pull clean audio out of a video.
- **Three strengths**: full removal, natural (keeps a little room sound) or light.
- **Optional loudness normalization** to podcast (-16 LUFS), streaming (-14 LUFS) or broadcast (-23 LUFS) standards, measured in two passes like professional tools.
- **Handles long recordings**: files up to 6 hours, processed in chunks so memory never runs out.
- **Takes files from anywhere**: direct links, Google Drive and Dropbox share links, or uploads.
- **Shows the result in numbers**: every file reports how much quieter the background became.
- **Fair billing**: you pay per minute of audio. Files that fail cost nothing.

### Who it's for

- **Podcasters and YouTubers** cleaning episodes recorded at home or on the road.
- **Journalists and researchers** making interviews and field recordings easier to hear and to transcribe. Clean audio also gives speech-to-text tools fewer errors.
- **Course creators and teachers** fixing lecture and screen recordings.
- **Developers and AI agents** that need a noise removal step in a media pipeline, through the API or MCP.

### How to use it

1. Paste links to audio or video files, or upload them.
2. Keep the defaults or pick a strength, loudness target and output format.
3. Click **Start**. Each cleaned file appears in the **Output** tab with a download link.

You can also run it through the [Apify API](https://docs.apify.com/api/v2), on a schedule, or from Make, n8n, Zapier and other integrations.

### Input

| Field | What it does |
| --- | --- |
| `mediaUrls` | Links to audio or video files, or Google Drive and Dropbox share links. |
| `files` | Files uploaded from your computer or picked from an Apify key-value store. |
| `strength` | `full` (default) removes as much noise as possible; `natural` lowers it by up to 24 dB; `light` by up to 12 dB. |
| `normalizeLoudness` | `off` (default), `podcast` (-16 LUFS), `streaming` (-14 LUFS) or `broadcast` (-23 LUFS). |
| `outputFormat` | `same` (default) keeps the input's format; or `mp3`, `wav`, `flac`, `m4a`, `ogg`, `opus` for audio only. |
| `maxFiles` | Stop after this many files (default 100). |

Example:

```json
{
  "mediaUrls": [
    "https://example.com/podcast/episode-12.mp3",
    "https://drive.google.com/file/d/YOUR_FILE_ID/view?usp=sharing"
  ],
  "normalizeLoudness": "podcast"
}
```

### Output

Each file becomes one dataset item. The cleaned file is saved in the run's key-value store, and `outputUrl` is its download link:

```json
{
  "url": "https://example.com/podcast/episode-12.mp3",
  "status": "ok",
  "error": null,
  "outputUrl": "https://api.apify.com/v2/key-value-stores/<store>/records/001-episode-12-clean.mp3?signature=...",
  "fileName": "001-episode-12-clean.mp3",
  "format": "mp3",
  "isVideo": false,
  "durationSeconds": 1834.2,
  "minutesBilled": 31,
  "channels": 1,
  "sampleRate": 44100,
  "strength": "full",
  "backgroundLevelBeforeDb": -38.4,
  "backgroundLevelAfterDb": -79.8,
  "noiseReductionDb": 41.4,
  "loudnessBeforeLufs": -19.7,
  "loudnessAfterLufs": -16.0,
  "outputBytes": 29382011,
  "processingSeconds": 212.5
}
```

A file that couldn't be downloaded or read gets `status: "failed"` and an `error` that says why, and isn't billed. Download your files within your plan's data retention period, or copy them to your own storage, because run storage expires.

### Pricing

You pay per **started minute of audio**, at the price shown on this page: a 30-minute episode is 30 minutes, a 20-second clip is 1 minute. Loudness normalization and format conversion are included. Files that fail are never charged. If you set a maximum cost per run, the Actor stops before a file that wouldn't fit.

### Speed

With the default 4 GB of memory, the Actor cleans about 8 minutes of audio per minute of processing: a 22-second clip took 2 seconds and an 8.5-minute recording about a minute, including download, loudness normalization and encoding. Runs take about 10 more seconds to start. More memory makes long files faster; the price per minute stays the same.

### Tips and limits

- The model is made for **speech**. It treats music and sound effects as noise and removes them too, so don't use it on songs or on videos where the music should stay.
- Very loud noise that completely covers the voice can't be fully undone; the speech that comes out may sound thin.
- Stereo files stay stereo. Files with more than two channels (5.1) come back as stereo.
- Files can be up to 2 GB and 6 hours long.
- Links to YouTube, TikTok, Instagram, Facebook, X, Vimeo, SoundCloud and Spotify aren't supported, because those platforms' terms don't allow downloading. Use your own copy of the file.

### For AI agents and developers

This Actor works with the [Apify MCP server](https://mcp.apify.com), so AI agents can call it as a tool: pass `mediaUrls` and read `outputUrl` from each dataset item. Every item has the same documented fields, and `status` tells you whether a file succeeded. For a direct API call:

```bash
curl -X POST "https://api.apify.com/v2/acts/jumblemog~background-noise-remover/run-sync-get-dataset-items?token=YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"mediaUrls": ["https://example.com/interview.mp3"]}'
```

### Privacy

Files are downloaded into the run, processed there and saved only to your own Apify storage. Nothing is sent to an outside AI service.

### Credits and licenses

- Noise removal: [DeepFilterNet3](https://github.com/Rikorose/DeepFilterNet) by Hendrik Schröter et al., MIT / Apache-2.0.
- Audio and video processing: [FFmpeg](https://ffmpeg.org).

# Actor input Schema

## `mediaUrls` (type: `array`):

Direct links to audio or video files (MP3, WAV, M4A, FLAC, OGG, OPUS, AAC, MP4, MOV, MKV, WebM and more), or Google Drive and Dropbox share links. YouTube, TikTok, Instagram, Facebook, X, Vimeo, SoundCloud and Spotify links aren't supported because their terms don't allow downloading.

## `files` (type: `array`):

Upload audio or video files from your computer, or pick files you already stored in an Apify key-value store.

## `strength` (type: `string`):

full: remove as much background noise as possible (best for podcasts, interviews, voice-overs and calls). natural: lower the noise by up to 24 dB and keep a little room sound. light: lower it by up to 12 dB, for recordings that only need a touch.

## `normalizeLoudness` (type: `string`):

Optionally bring the cleaned audio to a standard loudness, measured in two passes (EBU R128): podcast -16 LUFS, streaming platforms -14 LUFS, broadcast -23 LUFS.

## `outputFormat` (type: `string`):

same: audio stays in its format (MP3 stays MP3, WAV stays WAV) and videos stay videos with the cleaned sound. Pick an audio format to get just the cleaned audio, also from videos.

## `maxFiles` (type: `integer`):

Stop after this many files, so the cost of a run stays predictable.

## Actor input object example

```json
{
  "mediaUrls": [
    "https://api.apify.com/v2/key-value-stores/Km5b4PG3kYHdZSb1E/records/background-noise-remover-launch-before.mp3?signature=vY8fodGqzxBiRwnXgmZZ"
  ],
  "strength": "full",
  "normalizeLoudness": "off",
  "outputFormat": "same",
  "maxFiles": 100
}
```

# Actor output Schema

## `cleanedFiles` (type: `string`):

One item per file: download link, duration, minutes billed and how much the background noise was reduced.

## `files` (type: `string`):

The cleaned audio and video files saved in the run's key-value store.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "mediaUrls": [
        "https://api.apify.com/v2/key-value-stores/Km5b4PG3kYHdZSb1E/records/background-noise-remover-launch-before.mp3?signature=vY8fodGqzxBiRwnXgmZZ"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("jumblemog/background-noise-remover").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "mediaUrls": ["https://api.apify.com/v2/key-value-stores/Km5b4PG3kYHdZSb1E/records/background-noise-remover-launch-before.mp3?signature=vY8fodGqzxBiRwnXgmZZ"] }

# Run the Actor and wait for it to finish
run = client.actor("jumblemog/background-noise-remover").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "mediaUrls": [
    "https://api.apify.com/v2/key-value-stores/Km5b4PG3kYHdZSb1E/records/background-noise-remover-launch-before.mp3?signature=vY8fodGqzxBiRwnXgmZZ"
  ]
}' |
apify call jumblemog/background-noise-remover --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,jumblemog/background-noise-remover"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/j8LNLFmWXOHFQ1uz8/builds/PdeI2fsGdhdzdfdWI/openapi.json
