faster_whisper使用moviepy 2.0.0版本添加字幕示例


最近在学习faster_whisper,费老大劲才把环境搭建好,准备做一个视频字幕翻译的demo时发现大部分都是基于moviepy1.0版本的,和环境中默认的不匹配,于是各种搜索、AI问,最后没办法只能老老实实去翻moviepy的文档,终于调通了一个demo,发出来希望能对大家有所帮助!

演示环境

faster_whisper 1.1.0
moviepy 2.0.0
在这里插入图片描述

示例代码

重点是在concatenate_videoclips(tmpclips)那里

# -*- coding: utf-8 -*- 
from faster_whisper import WhisperModel
from moviepy import *
 
# 加载视频文件 
video  = VideoFileClip("test.mp4")

#加载本地模型 
model_path="/home/faster-whisper-model/faster-whisper-small"
#model_path="/home/faster-whisper-model/faster-whisper-large-v3"
#model = WhisperModel("tiny", device="cuda")
#采用cpu模式
model = WhisperModel(model_path, device="cpu", compute_type="float32")

 
# 使用 Faster-Whisper 进行转录,示例:将中文翻译成英语
segments,info = model.transcribe("test.mp4",  language="uk", task="translate")
 
#存储处理后的每一帧的剪辑
tmpclips=[]
for segment in segments:
    start = segment.start
    end = segment.end
    text = segment.text
    #按照帧截取
    subclip = video.with_subclip(start,  end)
    #设置每帧的字幕字体、内容、字号、颜色
    txt_clip = TextClip(font="simhei.ttf",text=text, font_size=50, color='white')
    #设置每帧字幕位置,每帧的显示时间
    txt_clip = txt_clip.with_position('top').with_duration(end-start)
    print(text,end-start)
    
    #制作剪辑
    subclip = (CompositeVideoClip([subclip, txt_clip]))
    tmpclips.append(subclip)


#参考moviepy官方文档中的示例
## 合并所有剪辑
final_clip = concatenate_videoclips(tmpclips)
## 输出到文件
final_clip.write_videofile("output_video.mp4") 

结束语

最后看一下效果,最上面的英文字幕是faster_whisper生成的,中文那些不是哈!!!

moviepy2.0.0生成的效果

要想学好ai,python和docker必不可少啊!!!

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐