python使用moviepy+pysrt+whisper自动识别声音并为视频添加字幕生成新视频
代码语言:python
所属分类:其他
代码描述:python使用moviepy+pysrt+whisper自动识别声音并为视频添加字幕生成新视频,使用VideoFileClip提取视频的音频,然后利用whisper识别成字幕文件srt,最后合并到视频中,opencc主要解决繁体字转简体。
代码标签: python moviepy pysrt whisper 自动 识别 声音 视频 添加 字幕 生成
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
#pip install -U openai-whisper #pip install -U opencc #pip install moviepy #pip install pysrt from moviepy.editor import VideoFileClip, TextClip, CompositeVideoClip import pysrt import whisper from opencc import OpenCC # 用于繁体到简体转换 # 提取音频文件 def extract_audio_from_video(video_file, audio_file): video = VideoFileClip(video_file) audio = video.audio audio.write_audiofile(audio_file, codec='pcm_s16le') # 使用无损的音频编码 # 使用 Whisper 转录音频并生成 SRT 文件 def generate_srt_from_audio(audio_file, srt_file): # 加载 Whisper 模型 model = whisper.load_model("base") # 初始化 OpenCC 转换器 cc = OpenCC('t2s') # 从繁体转为简体 # 转录音频并获取时间戳 result = model.transcribe(audio_file, language="zh", task="transcribe") # 导出 SRT 字幕文件 def export_srt(result, filename): def srt_timestamp(seconds): h = int(seconds // 3600) m = int((seconds % 3600) // 60) s = int(seconds % 60) ms = int((seconds % 1) * 1000) return f"{h:02}:{m:02}:{s:02},{ms:03}" srt_content = [] for i, segment in enumerate(result["segments"]): start = srt_timestamp(segment["start"]) end = srt_timestamp(segment["end"]) text = segment["text"].strip() # 将繁体文本转换为简体 text = cc.convert(segment["text"].strip()) srt_content.append(f"{i+1}\n{start} --> {end}\n{text}\n\n") with open(filename, "w", encoding="utf-8") as f: f.writelines(srt_content) export_srt(result, srt_file) def time_to_seconds(time_obj): return time_obj.hours * 3600 + time_obj.minutes * 60 + time_.........完整代码请登录后点击上方下载按钮下载查看
网友评论0