Cutting ums and long pauses out of a talking video is slow in a timeline editor. You find each one by ear, split, ripple delete, and repeat. Paid tools like Descript turned this into text editing, and I wanted the same thing on my own machine.
What it does
Spokecut transcribes a video with faster-whisper, shows the words, and lets you delete them. A deleted word is gone from the video. The editor has buttons to shorten pauses and remove repeats, a search that finds a phrase and cuts every match, and playback that skips what you cut. Captions come in five styles and can be burned in or exported as SRT, VTT and ASS. The edit can also be exported as EDL, FCPXML or OTIO. The source video is never modified. The edit is saved next to it as a small JSON file.
pip install "spokecut[cuda] @ git+https://github.com/Arthur031221/Spokecut"
spokecut talk.mp4
spokecut clean talk.mp4 --pauses 0.7 --captions highlight
How a cut stays clean
Each cut is moved to the quietest point between two words, so it lands in silence. The render is one ffmpeg filter graph with frame exact trims, and every join has a 15 ms fade. On a 300 second test video, 3 of 37 joins stepped above 10 times the typical sample change without the fade and none did with it. That counts steps in the signal. I did not run a listening test.
Speed
On an RTX 5090 a 5 minute video goes from file to a finished MP4 with burned in captions in 15.0 s, about 20 times realtime (4 runs, 14.7 to 15.1 s, large-v3-turbo and NVENC). On a Ryzen 5 7500F with 3 threads, the small model and x264, one run took 61.1 s. The method for every number is in docs/benchmarks.md.
What is rough
- Stock Whisper drops most ums, so the filler button finds little. A verbatim mode uses CrisperWhisper, which keeps them but is licensed for non-commercial use only.
- It handles one speaker per file.
- I read the EDL, FCPXML and OTIO files back through the OpenTimelineIO adapters in tests, but I have not imported them into Resolve or Premiere.
- I have only run it on Linux. The CI covers Linux.
- The hosted demo runs the editor on a sample clip. It cannot transcribe your own video or render an MP4.
Try it
The code is MIT licensed at https://github.com/Arthur031221/Spokecut and the browser demo is at https://arthur031221.github.io/Spokecut/. If you cut talking head video, tell me which export or edit action you miss first. The tool is built with AI assistance, and I checked each number in the README by running the command it names.

Top comments (2)
Moving each cut to the quietest point between words and adding a 15 ms fade is the part I'd trust most, and it's good that you measured the joins instead of just claiming they sound clean. Keeping the source untouched, with the edit saved as a small JSON file beside it, is also the right call, since it makes every cut easy to review and redo. To answer your question: the action I'd miss first is a way to protect a range from cutting. Screen tutorials often have a deliberate pause while something loads, and a pause shortener will happily remove it. A simple "keep this" marker on a few seconds would save a lot of manual fixing.
Moving each cut to the quietest point between words plus a 15 ms fade is the right call, because clicks at the joins are what usually give away transcript-cut edits. On the filler problem, one cheap thing to try before switching to CrisperWhisper: stock Whisper often folds an "um" into the neighbouring word's timing instead of leaving a gap, so an energy or VAD pass inside unusually long word spans can find a lot of them without a non-commercial model. And before claiming Resolve import, I'd test the FCPXML on a 29.97 fps source, since fractional frame rates are where timeline interchange tends to break first. Disclosure: I build Vidmoat, a hosted AI video editor where you describe cuts in chat and it edits a real timeline you can still open and adjust. Spokecut covers the local, private side of this really well, and keeping the edit as a small JSON next to an untouched source is the design I'd pick too.