add build_videos file
This commit is contained in:
+12
-6
@@ -8,15 +8,16 @@ from whisper.utils import get_writer
|
||||
|
||||
model = whisper.load_model("base")
|
||||
|
||||
def extract_audio(video_path: str, audio_temp_path: str):
|
||||
def extract_audio(video_path: str):
|
||||
# Create a temporary path for a sanitized copy of the video
|
||||
sanitized_video_path = video_path.replace(".mp4", "_clean.mp4")
|
||||
audio_temp_path = video_path.replace(".mp4", ".wav")
|
||||
|
||||
print("Sanitizing video metadata for MoviePy parser...")
|
||||
# -map_chapters -1 removes chapter layouts that break the parser.
|
||||
# -sn strips text/subtitle streams that crash MoviePy.
|
||||
# -c copy copies video and audio instantly without quality loss.
|
||||
linux.run_command(f"ffmpeg -y -i {video_path} -map_chapters -1 -sn -c copy {sanitized_video_path}")
|
||||
linux.run_command_ffmpeg(f"ffmpeg -y -i {video_path} -map_chapters -1 -sn -c copy {sanitized_video_path}")
|
||||
|
||||
print("Extracting uncompressed WAV audio...")
|
||||
try:
|
||||
@@ -34,15 +35,20 @@ def extract_audio(video_path: str, audio_temp_path: str):
|
||||
os.remove(sanitized_video_path)
|
||||
|
||||
|
||||
def transcribe_to_srt(audio_path: str, output_directory: str, output_filename: str):
|
||||
def transcribe_to_srt(video_path: str):
|
||||
|
||||
extract_audio(video_path)
|
||||
|
||||
transcribe_path = video_path.replace(".mp4", ".str")
|
||||
audio_path = video_path.replace(".mp4", ".wav")
|
||||
print("Transcribing audio...")
|
||||
result = model.transcribe(audio_path)
|
||||
|
||||
print("Creating SRT file...")
|
||||
srt_writer = get_writer("srt", output_directory)
|
||||
srt_writer(result, output_filename, {})
|
||||
srt_writer = get_writer("srt", transcribe_path)
|
||||
srt_writer(result, transcribe_path, {})
|
||||
|
||||
print(f"SRT subtitle file saved in: {output_directory}")
|
||||
print(f"SRT subtitle file saved in: {transcribe_path}")
|
||||
if os.path.exists(audio_path):
|
||||
os.remove(audio_path)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user