Skip to content

Autocut: jump-cut silences, fillers, and stutters (inspired by CapCut) - #36

Open
felipebasurto wants to merge 15 commits into
diffusionstudio:mainfrom
felipebasurto:cursor/media-autocut-0760
Open

Autocut: jump-cut silences, fillers, and stutters (inspired by CapCut)#36
felipebasurto wants to merge 15 commits into
diffusionstudio:mainfrom
felipebasurto:cursor/media-autocut-0760

Conversation

@felipebasurto

@felipebasurto felipebasurto commented Aug 29, 2026

Copy link
Copy Markdown

Inspired by CapCut's Remove Silence and Remove filler words — the jump-cut cleanup, not the full transcript editor.

Drop a talking-head on the timeline, click Autocut, get one row of clips with silences, fillers (um / uh / eh, you know, o sea, …) and immediate stutters gone. No re-encode: sourceIn / sourceOut on a <sequence>.

Agents already had the same apply:

dapi media autocut interview.mp4 --jsx

UI

Select the clip on the timeline. Autocut sits on the floating ActionBar under the canvas (same pill as Auto-Captions / Add audio). One click, no dialog. Works on library assets and path-based <video src> / <audio src> clips. Defaults: silence ≥ 0.4s, 50ms pad, en + es fillers.

Autocut on the ActionBar

Select the clip → Autocut

Before / after

Same talking-head, keep-ranges applied as a sequence (what the button writes).

Before (one 50s clip) After (jump cuts on one A-roll row)
before after

Composer smoke on a messy first-vlog (50s source): 23 keep ranges, 32.5s, 20 silences + 1 um + 2 stutters. Runtime tests for computeAutocut / planAutocutTimeline: 6/6.

What it is not

Not Descript-style transcript editing. CapCut has that as a separate layout. This PR only does the cleanup pass: pauses, repeats, filler vocalizations.

How to try

  1. Open a project, drop a video on the timeline, select it, click Autocut.
  2. Or: dapi media autocut <path> --jsx (cloud STT when signed in; local whisper / whisper-cli when not).

cursoragent and others added 5 commits August 29, 2026 13:56
Compose waveform silence detection with transcript word timings to
propose keep-ranges for jump-cut edits. Drops silences, stutters, and
common filler words without re-encoding. Optional --jsx emits a
<sequence> of trimmed <video> clips.

Co-authored-by: Felipe Basurto <felipebasurto@users.noreply.github.com>
- Restrict filler drops to vocal pauses and safe phrases only
- Emit probe width/height in JSX; use <audio> for audio assets
- Continue with silence-only cuts when transcribe finds no speech
- Add node:test coverage for computeAutocut and formatAutocutJsx
- Document absolute source-second clock alignment with waveform

Co-authored-by: Felipe Basurto <felipebasurto@users.noreply.github.com>
When cloud STT fails without auth, resolveTranscript runs openai-whisper
or whisper-cli on local file paths. Adds --transcript escape hatch and
documents offline install paths without requiring sign-in.

Co-authored-by: Felipe Basurto <felipebasurto@users.noreply.github.com>
Move autocut analysis into @diffusionstudio/runtime so CLI and web share
the same keep-range logic. Wire a one-click Autocut pill on the canvas
ActionBar when a single video or audio clip is selected: compose waveform
silences and transcription in the renderer, then replace the clip with a
sequence row of trimmed copies. Desktop falls back to local whisper via
MEDIA_TRANSCRIBE_LOCAL when cloud STT is unavailable.

Co-authored-by: Felipe Basurto <felipebasurto@users.noreply.github.com>
Show Autocut when exactly one video or audio node is selected, matching
Add audio/Upscale tag detection instead of requiring a library AssetId.
Resolve media via src through AssetLibrary.resolve for waveform and STT.
Use asset.source for local whisper IPC so absolute paths work.

Co-authored-by: Felipe Basurto <felipebasurto@users.noreply.github.com>
@vercel

vercel Bot commented Aug 29, 2026

Copy link
Copy Markdown

@cursoragent is attempting to deploy a commit to the Diffusion Studio Team on Vercel.

A member of the Team first needs to authorize it.

cursoragent and others added 10 commits August 29, 2026 15:45
Co-authored-by: Felipe Basurto <felipebasurto@users.noreply.github.com>
Detect Autocut targets via findGeometryAsset (VIDEO/SEQUENCE/AUDIO) instead
of authored video/audio tags only, so library drops show the ActionBar pill.

Apply clones the authored Rect subtree with per-span timing for geometry
clips; direct video/audio JSX clips keep the existing path. Tests run via
tsx for Node 20 compatibility.

Co-authored-by: Felipe Basurto <felipebasurto@users.noreply.github.com>
Move jump-cut UI from ActionBar to Object menu → AI actions → Remove
silences. Keep shared computeAutocut in runtime, CLI command, reference
doc, and minimal web engine glue. Drop local whisper stack, ActionBar
pill, mock docs, and check-script churn.

Co-authored-by: Felipe Basurto <felipebasurto@users.noreply.github.com>
Co-authored-by: Felipe Basurto <felipebasurto@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants