Skip to content

jev-audio-beeper

Proof of concept that uses Jev to detect Spanish profanity in word-timestamped audio and beeps it out with ffmpeg without changing duration.

Projectprototype

Overview

jev-audio-beeper is a TypeScript proof of concept for low-latency audio censorship. An ASR adapter supplies words with start and end times; each word is evaluated in its local context by Jev with two typed questions, a Boolean for whether it is an insult and a four-level Score for severity, run in parallel. Words above a threshold have their intervals padded and merged, and ffmpeg overlays a beep or mute without changing the audio duration, producing a censored WAV and a JSON audit report with each word's probability, score, confidence and the final beep intervals.

The checked-in demo uses a timestamp sidecar so the Jev and signal-processing path is reproducible without tying the POC to an ASR vendor, and an AsrProvider interface allows plugging in streaming ASR. It uses the official @ai-sdk/typesafe-ai provider with jev-latest. The default threshold of 0.72 is explicitly a starting point, not a calibrated value, and the README outlines how to move to live streaming with partial words every 100-250 ms. The AnotiaWang list reports about 466 ms to beep.

What the decision model decides

TypeQuestionAnswers
Yes / noIs this word an insult in its local context?true · false
ScoreHow severe is this word?—

How it works

  1. ASR provides words with timestamps
  2. Jev evaluates each word in context in parallel
  3. Threshold, pad and merge intervals
  4. ffmpeg overlays beeps
  5. Write censored WAV and JSON audit

Strengths

  • Duration-preserving censorship
  • Full per-word audit trail
  • Vendor-neutral ASR seam

Caveats

  • Private proof of concept
  • Default threshold not calibrated
  • Spanish profanity only in the demo

Getting started

With Node 22+ and ffmpeg: `npm install`, `export TYPESAFE_AI_API_KEY=...`, `npm run check && npm run demo`.

At a glance

Type
Project
Status
prototype
Language
TypeScript
Runtime
Node CLI with ffmpeg
Has code
yes

Use cases and integrations

How curated lists describe it

Frequently asked questions

What does Jev decide?

Whether each spoken word is an insult in context, and how severe it is.

Does the audio length change?

No, words are beeped or muted in place.

Is the 0.72 threshold tuned?

No, the README calls it a POC starting point to be calibrated on labelled audio.

Related projects

  • Chrome extension that uses your Jev key to hide high-confidence sexual and solicitation replies on X behind reversible placeholders.

    Browser extensionproductionTypeScript
  • One-file Mastra input processor that asks Jev whether a message must be blocked, failing open behind a deadline and circuit breaker.

    ProjectproductionTypeScript
  • Chrome and Firefox extension that hides AI-written posts on X, LinkedIn, Reddit and YouTube by asking Jev 30 narrow style questions.

    Browser extensionproductionJavaScript
  • Text-only pseudonymous Spanish forum where Jev approves clearly clean posts and everything else goes to Claude, then humans.

    ProjectproductionJavaScript
  • Node.js profanity and toxicity screener using Jev to catch leetspeak, spacing and romanised profanity in Indic and other languages.

    ProjectbetaTypeScript
  • Discord bot where Jev flags spam and scam links in real time, drives an escalating timeout ladder and profiles members.

    ProjectbetaPython