import { z } from "zod"; import type { AgentTool } from "@kenkaiiii/gg-agent"; import type { Transcript } from "../core/whisper.js"; /** * bleep_words — compliance / brand-safety tool. Scan a word-timestamped * transcript for any occurrence of `wordList`, then either mute (silence) * or bleep-overlay each range in the source audio. Outputs a re-encoded * mp4 with the same video stream copied through. * * Two modes: * - "mute" — `volume=enable='between(t,a,b)':volume=0` per range. Cleanest; * lands as silence under the speaker's mouth movements. * - "bleep" — same mute applied AND a bleep tone (sine wave at 1kHz by * default) amix'd over the muted region. The classic broadcast censor. */ declare const BleepWordsParams: z.ZodObject<{ transcript: z.ZodString; input: z.ZodString; output: z.ZodString; wordList: z.ZodArray; mode: z.ZodOptional>; toneFreqHz: z.ZodOptional; paddingMs: z.ZodOptional; }, z.core.$strip>; interface MatchRange { startSec: number; endSec: number; text: string; } export declare function createBleepWordsTool(cwd: string): AgentTool; /** * Find every word-list match in the transcript. Multi-word phrases are * matched against contiguous word sequences. Case-insensitive, ignores * surrounding punctuation. */ export declare function findRanges(transcript: Transcript, wordList: string[], paddingSec: number): MatchRange[]; /** Merge overlapping or touching ranges. */ export declare function mergeRanges(ranges: MatchRange[]): MatchRange[]; /** * Build a filter_complex that mutes (and optionally beeps over) the audio * in every range. Output label: `[aout]`. * * mute mode: * [0:a]volume=enable='between(t,a1,b1)':volume=0,volume=enable='between(t,a2,b2)':volume=0[aout] * bleep mode: * muted = same as mute * tones = sine sources, one per range, gated by adelay + atrim * [muted][tones...]amix=inputs=N+1:duration=first:dropout_transition=0[aout] * then sidechained back through volume… * * Simpler bleep: chain a sine source per range, mix all in. Below is the * implementation: */ export declare function buildBleepFilter(ranges: MatchRange[], mode: "mute" | "bleep", toneHz: number): string; export {}; //# sourceMappingURL=bleep-words.d.ts.map