Skip to content
Audio

Filler Removal 1.0

zilapi/filler-1.0 · by InverseAI

Available

Finds filled pauses (um, uh, er) in speech and cuts them out. Returns the edited audio as MP3 and the removed segments as JSON.

Filler word removal API

POST /v1/audio/remove-fillers finds filled pauses such as um, uh and er in recorded speech and cuts them out. You get the edited audio as an MP3 and a JSON list of every removed segment with its start, end and confidence, or only the report if you want to review the edits yourself.

What developers use it for

  • Tighten podcast and interview edits automatically
  • Clean up voice-overs, presentations and course recordings
  • Mark filler words for an editor to review, with timestamps only
  • Measure filler words in speaking-practice or coaching apps

What it does

Find filled pauses such as um, uh and er in recorded speech and cut them out. Use it for interviews, podcasts and voice-overs, or request timestamps to review the edits yourself.

Limitation: Works best on single-speaker speech; with overlapping speakers short words can occasionally be cut.

Create a job

POST /v1/audio/remove-fillers accepts an input_url, a ready file id, or a multipart file. Send the optional webhook_url to receive a signed completion event, or poll GET /v1/jobs/{id}.

curl -s https://api.zilapi.com/v1/audio/remove-fillers \
  -H "Authorization: Bearer $ZILAPI_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{"input_url": "https://example.com/episode-142.wav",
       "model": "zilapi/filler-1.0",
       "webhook_url": "https://your-app.example.com/hooks/zilapi"}' \
  > job.json
JOB_ID=$(jq -r .id job.json)

Set options: {"timestamps_only": true} to return only the filler report. No edited audio is produced, and output_duration_seconds is null.

Outputs

Outputs of zilapi/filler-1.0
NameContains
audioAudio without filled pauses, delivered as MP3, up to 320 kbps. Omitted with timestamps_only.
fillersJSON with segments, count, removed_seconds, input_duration_seconds and output_duration_seconds.

Segments use the input timeline, in order. Each segment has start_s, end_s, duration_s, label and confidence (0–1). The label is filled_pause; this model does not return a transcript. The same report is available as result.fillers on the job and its webhook.

JSON
{
  "object": "filler_removal",
  "count": 1,
  "removed_seconds": 0.4,
  "input_duration_seconds": 61,
  "output_duration_seconds": 60.6,
  "segments": [
    {
      "start_s": 1,
      "end_s": 1.4,
      "duration_s": 0.4,
      "label": "filled_pause",
      "confidence": 0.9
    }
  ]
}

After the job succeeds, call GET /v1/jobs/{id}/output?name=audio for a signed download URL. Use name=fillers for the other output. Outputs are kept for 7 days.

Read the jobs guide

Inputs, limits and formats

ProviderInverseAI
Input formatsCommon audio: WAV, MP3, M4A/AAC, FLAC and OGG
Max durationUp to 30 minutes per job
Max file size5 GB by URL or staged upload; 50 MB directly in the job request
OutputAudio → MP3, up to 320 kbps; fillers JSON

Filler word removal API: questions

How much does the filler word removal API cost?

$0.020 per audio minute, billed per second of input. Failed jobs are free.

Can I get only the timestamps?

Yes. Set options.timestamps_only to true and the job returns the filler report as JSON without producing edited audio.

Are there limits?

Up to 30 minutes of audio per job. It works best on single-speaker speech; with overlapping speakers short words can occasionally be cut.

Compare every model on the pricing page, read the step-by-step guide, or start with the quickstart.