| """Simple CLI interface for the subtitle extractor.""" | |
| import argparse | |
| import os | |
| import tempfile | |
| from .subtitle_extractor import ( | |
| extract_audio, | |
| transcribe_audio, | |
| save_srt, | |
| merge_subtitles, | |
| ) | |
| def main() -> None: | |
| parser = argparse.ArgumentParser(description="Generate subtitles from a video") | |
| parser.add_argument("video", help="Path to the video file") | |
| parser.add_argument("--library", choices=["faster_whisper", "OpenAI Whisper"], default="faster_whisper") | |
| parser.add_argument("--api-key", help="OpenAI API key if using OpenAI Whisper") | |
| parser.add_argument("--output", help="Output directory", default="output") | |
| parser.add_argument("--merge", action="store_true", help="Merge subtitles with video") | |
| args = parser.parse_args() | |
| audio_path = extract_audio(args.video, args.output) | |
| srt_content = transcribe_audio(audio_path, library=args.library, api_key=args.api_key) | |
| srt_path = save_srt(srt_content, os.path.join(args.output, "subtitles.srt")) | |
| print(f"Generated subtitles: {srt_path}") | |
| if args.merge: | |
| merged = merge_subtitles(args.video, srt_path, os.path.join(args.output, "merged.mp4")) | |
| print(f"Merged video saved to: {merged}") | |
| if __name__ == "__main__": | |
| main() | |