Desert Ant Labs

Uhm.

Filler-word detectionAvailable

On-device filler detection that marks every um, uh and hmm to within 20ms, an hour of audio in 12s.

Find and remove every filler word.

An hour-long episode is analyzed in 12s on an iPhone 17 Pro. A back catalog is a batch job you run locally, not a cloud invoice.

Uhm gets there by skipping the transcript step. The usual way to find an "um" is to transcribe the whole file and search the text. A transcript would not help anyway: models like Whisper leave fillers out of their output, so the ums never appear in the text to find.

Uhm reads the waveform instead and marks every filler it hears, so an editor can cut them or a one-click cleanup can tighten the whole take. Open an audio or video file and every filler word is listed with its time, so you click one and land on it.

Apple runs the 45MB Core ML build. The browser demo and a Python backend run the same model as 51MB of ONNX, so a web editor and a batch job behave identically.

10 minutes of audio in 2s.

296x realtime on an iPhone 17 Pro, 279x on an iPad Pro M4 and 169x on an iPhone 15 Pro, with predictions every 20ms.

296x
Realtime factor
iPhone 17 Pro
20ms
Frame resolution
45MB
On-device
Core ML fp16; 51MB ONNX for browser and server

Realtime factor (audio duration over analyze time), fp16 Core ML, warm (internal)

DeviceRealtime factor
iPhone 17 Pro296x
iPad Pro (M4)279x
iPhone 15 Pro169x

Internal benchmarks. Trained on English; transfer to Spanish, French, German, and Dutch is acoustic and has not been separately measured.

Cut every filler on the timeline.

Clean a back catalog overnight

At 296x realtime a hundred hours of archive is 20 minutes of local compute on an iPhone. Batch the whole library instead of paying a cloud speech service per minute for audio you already own.

A filler timeline in the browser

In a web editor, every filler in an audio or video file is listed with a click-to-seek time, computed client-side, with no upload and no worker queue behind it.

Drop the ums before they reach the text

Flag disfluencies in the audio and leave them out of the words that reach your transcript, so the finished text reads the way the speaker meant to say the line.

Speaking practice and coaching

Count how often a speaker reaches for a filler across a recorded talk and show them the pattern, in a practice app that never uploads their voice.

Inspiration

Ideas to build with Uhm. Copy a prompt into your coding agent and go.

Uhm

Add a 'remove ums' button to a podcast or video editor.

Uhm

Build a speaking coach that counts and marks your filler words.

Uhm

Show a filler-word timeline for any recording.

ClearVozUhm

A clean, filler-free transcript from a raw, noisy recording.

Uhm

Trim every filler from a talking-head take automatically.

What the model does

  • Frame-precise: accurate to 20ms.
  • Acoustic detection: works directly on the waveform, no transcript required.
  • Bias preset: precision, balanced, or recall.
  • Trained on English, transfers to Spanish, French, German, and Dutch without retraining.

Getting started

Add filler-word detection to your iOS or macOS app in a few lines of code. Uhm docs.

iOS, macOS
Install
// Swift Package Manager
.package(url: "https://github.com/Desert-Ant-Labs/desert-ant-core", from: "3.1.0")
// target dependency
.product(name: "Uhm", package: "desert-ant-core")
Example - Swift
import Uhm

let result = try await Uhm().analyze(audioURL: url)
for f in result.fillers { print(f.start, f.end, f.type ?? .other) }
Build with a prompt
Add Uhm from Desert Ant Labs to this Swift project (iOS, macOS).

What it does: On-device Filler-Word Detection for Audio and Video.

SDK:

Swift (iOS, macOS)
Repo: https://github.com/Desert-Ant-Labs/desert-ant-core#readme
// Swift Package Manager
.package(url: "https://github.com/Desert-Ant-Labs/desert-ant-core", from: "3.1.0")
// target dependency
.product(name: "Uhm", package: "desert-ant-core")

Reference:
- Model page: https://desertant.com/models/uhm/
- Full catalog and other models: https://desertant.com/llms.txt

Add the SDK, then follow its README for the exact API and current version. Do not invent API names or method signatures; confirm them against the README.
AndroidComing soon
Web, Node.jsComing soon

Specs

Resolution
20ms frame resolution
Model
Acoustic, transcript-free
On-device size
45MB Core ML (Apple); 51MB ONNX (browser, server)
Languages
English; transfers to Spanish, French, German, and Dutch
Speed
296x realtime on an iPhone 17 Pro

Uhm was trained on English, and the four languages it transfers to have not been measured against per-language ground truth. Uhm works best on podcast, meeting, and talking-head audio.

Heavy background music, laughter, or several people talking over each other cost accuracy. Trust the filler-or-not answer more than the label: whether a filler was an "uh", an "um", or a "hmm" is the less reliable half of the result.

FAQ

What is Uhm?

On-device filler detection that marks every um, uh and hmm to within 20ms, an hour of audio in 12s.

Does Uhm run on device?

Yes. Uhm runs on the device, with no server call, so the data stays with the user.

Which platforms does Uhm support?

Uhm ships as a native on-device SDK for Swift.

How much does Uhm cost?

Every model is free up to 100k monthly active devices per SDK. Unlimited inference per user. Contact us for custom licenses.

How accurate or fast is Uhm?

296x realtime on an iPhone 17 Pro, 279x on an iPad Pro M4 and 169x on an iPhone 15 Pro, with predictions every 20ms.

Resources