FunClip: Clip Videos by Selecting Speech Segments or Speakers
Ever needed to clip a video based on what someone said, not just by timestamps? Maybe you’re editing a podcast, extracting a specific speaker’s lines from a meeting, or pulling a funny moment from a long vlog. Manually scrubbing through a timeline to find "the part where they say X" gets old fast.
That’s where FunClip comes in. It takes an audio transcript from your video, lets you pick a speaker or a specific text segment, and automatically clips the video to that part. No external ASR setup, no complex pipelines. Just pick, clip, done.
What It Does
FunClip uses speech recognition to transcribe your video’s audio, then lets you either:
- Select a specific text phrase from the transcript and clip the video around it.
- Select a speaker (if multiple) and clip all segments where that person speaks.
Under the hood, it uses a model from ModelScope for the ASR part, but you don't have to worry about that unless you want to tweak things. The output is a trimmed video file containing only the segment you care about.
Why It’s Cool
It’s surprisingly useful for things you wouldn’t first think of:
- Podcast editing – clip an interesting answer from a 45-minute interview by just finding the sentence.
- Meeting summaries – extract only what a specific person said from a Teams or Zoom recording.
- Language learning – pull a sentence from a foreign-language movie and loop it.
- Content creation – grab a soundbite from a longer clip without re-encoding the whole thing.
It also supports voice activity detection (VAD) so silence at the edges gets trimmed, and you can adjust the margin (extra seconds before/after the clip). The ASR model itself can be swapped with different ones from ModelScope, so you can run it in Chinese, English, or other languages depending on the model.
How to Try It
Clone the repo or run it in a notebook:
git clone https://github.com/modelscope/FunClip
cd FunClip
pip install -r requirements.txt
Then open funclip_gradio.py for the Gradio web UI, or use the Python API directly if you want to script it:
from funclip import FunClip
fc = FunClip()
result = fc.clip_by_text(
video_path="input.mp4",
text_to_match="the exact phrase",
margin_seconds=1.0
)
result.save("output.mp4")
There’s also a Colab demo linked in the repo if you want to test it without installing anything.
Final Thoughts
FunClip is one of those tools that solves a slightly niche problem but does it well. If you’ve ever had to clip a video based on speech content, you know how annoying it is to loop through audio waveforms. This just saves you that time.
It’s not trying to be a full video editor or a production tool. It’s a focused utility for developers and content creators who need to cut video by what was said, not by a timestamp on a timeline. If that’s your workflow, give it a shot.
Follow us on Twitter: @githubprojects