Audio-First Cut Craft Methodology in video-use: Technical Implementation Guide
The audio-first cut craft methodology treats speech transcripts as the primary editorial driver, forcing video cuts to align with word boundaries, silence gaps ≥ 400 ms, and distinct audio events while applying mandatory 30 ms fades to eliminate audible pops.
The browser-use/video-use repository implements a rigorous audio-first cut craft methodology that prioritizes natural speech patterns over visual convenience. This approach ensures every edit lands on clean audio boundaries derived from word-level timestamps, preserving conversational rhythm while eliminating technical artifacts. By deriving cut points from the packed transcript rather than arbitrary video frames, the system produces professional-grade edits that remain imperceptible to the listener.
Core Principles of Audio-First Editing
According to the video-use source code in SKILL.md, the methodology rests on a fundamental rule: never reason audio and video independently. Every cut must satisfy constraints on both tracks simultaneously, with the audio transcript serving as the authoritative source for timing decisions.
Word-Level Timestamps and Silence Gaps
Candidate cuts originate exclusively from word boundaries and silence gaps identified in the packed transcript. The system analyzes takes_packed.md—generated by helpers/pack_transcripts.py—to locate timestamps where speech pauses naturally. As documented in SKILL.md (lines 102‑105), these transcript-derived boundaries provide the foundation for the edit decision list (EDL), ensuring cuts align with semantic and acoustic breaks rather than visual keyframes.
Audio Events as Beat Signals
Distinct audio events—including laughs, applause, sighs, and emotional peaks—function as beat signals that inform editorial rhythm. According to SKILL.md (lines 106‑108), these peaks are usually preserved as whole units rather than sliced mid-event, maintaining the integrity of reactive moments and audience responses.
Speaker Hand-offs and Air
Transitions between speakers receive deliberate air (400‑600 ms of silence) to preserve natural dialog pacing. The methodology specifically notes that speaker handoffs benefit from this breathing room between utterances (SKILL.md, lines 107‑108), preventing the jarring cuts that occur when conversations are compressed without acoustic consideration.
Hard Rules for Clean Cuts
The audio-first methodology enforces strict quantitative thresholds to guarantee technical quality.
Silence Gap Thresholds
Not all silences qualify as viable cut points. The system categorizes gaps into three tiers (SKILL.md, lines 108‑110):
- ≥ 400 ms: Preferred as the cleanest cut points with minimal risk of mid-word truncation.
- 150‑400 ms: Usable only after visual sanity checks to confirm no lip movement or facial expressions are compromised.
- < 150 ms: Unsafe for cutting; the system avoids these gaps to prevent audible interruptions.
The 30‑200 ms Working Window
Hard Rule 7 mandates a padding window of 30‑200 ms around each cut point. This buffer absorbs transcription drift inherent in automatic speech recognition while ensuring sufficient headroom for the mandatory fade operations (SKILL.md, lines 109‑110).
Mandatory 30 ms Audio Fades
Hard Rule 3 requires 30 ms fade‑in/out filters at every segment boundary to eliminate pops and clicks. The implementation in helpers/render.py (lines 87‑93) automatically applies afade=t=in:st=0:d=0.03 and corresponding out-fades via FFmpeg during per-segment extraction. This occurs before lossless concatenation, ensuring the final output contains no transient artifacts at cut points.
The Video-Use Workflow
The repository implements the audio-first methodology through a five-stage pipeline:
- Transcribe:
helpers/transcribe.pyextracts mono 16 kHz audio and calls ElevenLabs Scribe to generate raw JSON transcripts. - Pack:
helpers/pack_transcripts.pyconverts raw JSON intotakes_packed.md, storing word-level start/end timestamps. - Analyze: The system scans the packed transcript for silence gaps, audio events, and speaker changes, generating an EDL containing only timestamps that satisfy audio-first rules.
- Render:
helpers/render.pyexecutes per-segment extraction (Hard Rule 2) with baked-in 30 ms fades and optional color grading, concatenating segments losslessly to avoid double-encoding. - Evaluate:
helpers/timeline_view.pygenerates waveform visualizations for self-evaluation, verifying that fades prevented pops and that visual sync remains intact.
Code Implementation Examples
Building an Audio-First EDL from Packed Transcripts
The following Python script parses takes_packed.md to identify viable cut points based on silence gaps ≥ 400 ms:
from pathlib import Path
import re
import json
PACKED = Path("edit/takes_packed.md")
EDL = Path("edit/edl.json")
def load_phrases():
with PACKED.open() as f:
for line in f:
# lines like: "[002.52-005.36] S0 Some spoken text"
m = re.match(r"\[(\d+\.\d+)-(\d+\.\d+)\] (\S+) (.+)", line)
if m:
start, end, speaker, text = map(str.strip, m.groups())
yield float(start), float(end), speaker, text
def is_silence_gap(prev_end, next_start, min_gap=0.4):
return (next_start - prev_end) >= min_gap
edl_entries = []
prev_end = None
for start, end, speaker, text in load_phrases():
if prev_end is not None and is_silence_gap(prev_end, start):
# cut at the silence gap (audio-first)
edl_entries.append({"source": "source.mp4", "start": prev_end, "end": start})
prev_end = end
EDL.write_text(json.dumps(edl_entries, indent=2))
print("EDL written →", EDL)
The script follows the audio-first principle by cutting only at silence gaps ≥ 0.4 s.
Rendering with Built-In Audio Fades
Execute the render pipeline to apply per-segment fades and lossless concatenation:
# Render the final video (audio-first cuts already baked in)
python helpers/render.py edit/edl.json -o edit/final.mp4
helpers/render.py (lines 5‑7) implements per-segment extraction with the 30 ms audio fades baked in before concatenation, adhering to Hard Rule 2 and preventing generation loss.
Verifying Cut Boundaries
Inspect a specific cut point to confirm the fade eliminated pops:
# Inspect a cut point ±1 s to see the waveform and catch any pop
python helpers/timeline_view.py edit/final.mp4 12.3 13.3
helpers/timeline_view.py produces a PNG visualization showing the audio envelope; a smooth dip at the cut boundary confirms the 30 ms fade executed correctly.
Summary
- Audio-first cutting derives all edit decisions from speech transcripts, forcing video to follow audio timing rather than inverse.
- Silence gaps ≥ 400 ms provide the cleanest cut points, while gaps < 150 ms are deemed unsafe for cutting.
- 30 ms fades are mandatory at every boundary in
helpers/render.pyto eliminate pops and clicks. - Per-segment extraction (Hard Rule 2) processes each cut individually with fades and grading before lossless concatenation.
- Speaker hand-offs receive 400‑600 ms of air to maintain natural dialog rhythm.
- The 30‑200 ms working window absorbs transcription drift and ensures sufficient padding for fade operations.
Frequently Asked Questions
What distinguishes audio-first cut craft from traditional frame-based editing?
Traditional editing often selects cuts based on visual keyframes or action, potentially slicing through words or breaths. The audio-first methodology, as implemented in browser-use/video-use, treats the speech transcript as the authoritative source, ensuring every cut lands on a natural acoustic boundary—such as a silence gap or word boundary—while the visual track is forced to conform to these audio-derived timestamps.
Why are 30 ms fades mandatory at every segment boundary?
According to helpers/render.py (lines 87‑93), the 30 ms fade duration (Hard Rule 3) represents the minimum time required to smooth the audio waveform transition and eliminate audible pops that occur when digital audio segments are joined abruptly. The system applies these fades via FFmpeg’s afade filter during per-segment extraction, baking them in before concatenation to ensure artifact-free output.
How does the methodology handle speaker transitions?
Speaker hand-offs receive dedicated air of 400‑600 ms between utterances (SKILL.md, lines 107‑108). This deliberate pause prevents the unnatural tightness that occurs when dialog is compressed, allowing the listener to process the speaker change while providing a clean audio gap for the editing system to place a cut without interrupting speech flow.
What happens if a silence gap is shorter than 400 ms but longer than 150 ms?
Gaps in the 150‑400 ms range are considered conditionally usable. The methodology requires a visual sanity check to confirm that no lip movement or facial expressions are occurring during the gap before authorizing the cut. Gaps shorter than 150 ms are classified as unsafe and are avoided entirely to prevent mid-word cuts or audible micro-interruptions.
Have a question about this repo?
These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:
curl -s "https://instagit.com/install.md" Maintain an open-source project? Get it listed too →