lazyshorts-py
lazyshorts-py copied to clipboard
Create short videos, like a lazy person.
See lazysys for the revamped version.
LazyShorts
A command-line tool to convert long-form videos into multiple short-form videos, with burned-in text and subtitles. It also cuts out unwanted silence.
Preview
Original video
https://user-images.githubusercontent.com/29675001/210073372-f2a3fa63-29c2-4bc0-ab03-31188a772021.mp4
Result (with manual subtitle correction)
https://user-images.githubusercontent.com/29675001/210073848-09bcd7b7-6a86-4114-ab0b-72ddf674e298.mp4
Result (without manual subtitle correction)
As you can see, in Hungarian the medium
model works quite well: considering the bad quality of my input.
The large
model could be even better: if you have the hardware. :)
https://user-images.githubusercontent.com/29675001/210073868-f650cef7-093c-4260-9407-c6bc7de1b59e.mp4
Notes
Arguments
See lazyshorts -h
Subtitles
I use Whisper to transcribe audible voices to text.
Obviously with non-english languages the accuracy can be lower: you can help that by...
- ...using a different (for now, only Whisper) model (be wary, the
medium
model is hard to run even with 8GBs of RAM.) - ...editing subtitles manually from segment to segment. (
{lazyshorts-py} e1 2 45 78
...)
Not tested
- I don't know if running Whisper on GPU works, you could try CUDA. See
--whisper_device
and PyTorch/Whisper documentation. Also, get the CUDA enabled PyTorch as I define the CPU one in therequirements.txt
.
Known issues
- 'subprocess.run' somehow blocks UI process.
- We could use
rich
to have nice progress bars, as currently you have to manually poll the status of the renders. - Cropping is just arbitrary: I wanted to use MediaPipe. It's not easy to even get it to run, but my resources were not enough. Maybe a less demanding model or cloud is needed?
- Don't combine segments that are less than
end_time
, you'll get an exception.