Skip to content

Instantly share code, notes, and snippets.

@ikanez
Forked from rasbt/video-subtitles-via-whisper.py
Created September 27, 2022 09:29
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ikanez/87ee4ffa9357c78d66ef7287c37fedf1 to your computer and use it in GitHub Desktop.
Save ikanez/87ee4ffa9357c78d66ef7287c37fedf1 to your computer and use it in GitHub Desktop.
Script that creates subtitles (closed captions) for all MP4 video files in your current directory
# Sebastian Raschka 09/24/2022
# Create a new conda environment and packages
# conda create -n whisper python=3.9
# conda activate whisper
# conda install mlxtend -c conda-forge
# Install ffmpeg
# macOS & homebrew
# brew install ffmpeg
# Ubuntu
# sudo apt-get ffmpeg
# Install whisper
# from repo https://github.com/openai/whisper
# pip install git+https://github.com/openai/whisper.git
import os
import os.path as osp
from mlxtend.file_io import find_files
from mlxtend.utils import Counter
all_videos = find_files(substring=".mp4", path="./", recursive=True)
print("Example path:", all_videos[0])
print("Number of videos to process:", len(all_videos))
audio_outdir = "./extracted_audio"
subtitle_outdir = "./generated_subtitles"
for this_dir in (audio_outdir, subtitle_outdir):
if not osp.exists(this_dir):
os.mkdir(this_dir)
cnt = Counter()
for v in all_videos:
base, ext = osp.splitext(v)
aac_file_out = osp.join(audio_outdir, osp.basename(base)) + ".aac"
# exctract audio file from video
os.system(f"ffmpeg -i {v} -vn -acodec copy {aac_file_out} ")
os.system(
f"whisper {aac_file_out} --model medium --language English --output_dir {subtitle_outdir} --verbose False"
)
cnt.update()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment