对于从事影视剪辑的同学来说,能快速通过一个画面找到原片中出现的位置,将大大提升视频剪辑的效率
本篇文章将聊聊常见可行的方案
1、以图搜索
我们对影视画面进行截图后,直接将图片上传到下面这些网站,网站会返回截图相关的结果(比如:片名、演员名、位于第几集等)
PS:针对国内影片,建议使用国内搜索引擎
百度识图:
https://graph.baidu.com/pcpage/index?tpl_from=pc
搜狗识图:
https://pic.sogou.com/
360 搜图:
https://image.so.com/
Google 搜图:
https://www.google.com/imghp?hl=zh-CN&authuser=0&ogbl
Yandex 搜图:
https://yandex.com/images
当然也可以直接安装 Chrome 插件 search-by-image,它支持图片右键直接搜索
https://chromewebstore.google.com/detail/search-by-image/cnojnbdhbhnkbcieeekonklommdnndci?hl=zh-CN&utm_source=ext_sidebar
2、台词
可以使用下面网站,通过台词或描述内容进行检索
33 搜帧:
https://fse.agilestudio.cn/
33 台词:
https://33.agilestudio.cn/
找台词:
https://zhaotaici.cn/
3、视频/音频转文字(Whisper)
Whisper 是用于自动语音识别的预训练模型,它同样出自于 OpenAI,支持中文,模型的准确性和稳健性接近人类
Whisper 可以通过在线和离线使用
在线可以参考下面链接
https://platform.openai.com/docs/guides/speech-to-text
下面介绍一下离线使用方案
PS:离线使用对本地显卡有一定要求,具体可以参考官网
首先,在本地安装 ffmpeg
https://ffmpeg.org/
然后安装依赖包
代码语言:javascript复制# 安装依赖
# 注意:python版本必须3.8以上
pip3 install openai-whisper
接着加载模型后,传入本地音频或视频文件后,一段时间后就能返回模型分析后的结果
PS:如果本地不包含模型,会在线下载对应模型
代码语言:javascript复制import whisper
import time
def get_content():
# 加载模型
whisper_model = whisper.load_model("large")
# result = whisper_model.transcribe(r"./temp.WAV")
# print(", ".join([i["text"] for i in result["segments"] if i is not None]))
result = whisper_model.transcribe(r"./01.mp4")
print(result)
if __name__ == '__main__':
get_content()
4、Whisper.cpp
Whisper 对硬件要求很高,拿一段长视频实际体验下来,发现效率极低
这里推荐 Whisper.cpp 这个项目,它提供了 GUI 和 CLI 两种使用方式
项目地址:
https://github.com/Const-me/Whisper
在 Releases 下载页面,我们下载最新版本 cli.zip 文件并解压到本地
然后,在下面链接下载一个模型到本地
https://huggingface.co/ggerganov/whisper.cpp/tree/main
这样我们通过命令就可以将视频或音频转为文字了
代码语言:javascript复制# 模型:ggml-medium.bin
# 音频转文字(中文)
main.exe -l zh -otxt -m ggml-medium.bin "temp.WAV" --prompt "简体中文
# 视频转文字(中文)
main.exe -l zh -otxt -m ggml-medium.bin "temp.mp4" --prompt "简体中文
当然为了提升效率,也可以编写脚本后,配置 alias 变量快速使用
注意:为了保证最后生成的文字为简体中文,这里通过参数 --prompt 指定为简体中文
代码语言:javascript复制import os
import fnmatch, shutil
# 使用whisper.cpp项目将当前目录下【所有视频语音】转为文字
# 获取当前目录下所有的视频文件
def find_video_files(path):
video_extensions = ['*.mp4', '*.mkv', '*.avi', '*.flv', '*.mov']
video_files = []
for root, dirs, files in os.walk(path):
for extension in video_extensions:
for filename in fnmatch.filter(files, extension):
video_files.append(os.path.join(root, filename))
return video_files
# 1、获取所有视频文件
current_directory = os.getcwd()
video_files = find_video_files(current_directory)
# 2、遍历,将视频语音使用whisper转为中文
for video_file in video_files:
# 转换命令
command = f'D:\ai\cli\main.exe -l zh -otxt -m D:\ai\ggml-medium.bin -f {video_file} --prompt "简体中文"'
os.system(command)
以 windows 添加 alias 为例
编辑 Microsoft.PowerShell_profile.ps1 文件,以函数的形式添加一个 alias,然后重启 PowerShell 即可
代码语言:javascript复制# SP文件目录:C:UserswnnDocumentsWindowsPowerShellMicrosoft.PowerShell_profile.ps1
Function zzm(){
python D:\ai\main.py
}
5、其他方案
除了上面这些方案,我们也可以将原片提前上传到飞书妙记或阿里的通义听悟,提前生成台词及关联关系;然后通过台词检索寻找对应画面
如果你觉得文章还不错,请大家 点赞、分享、留言 下,因为这将是我持续输出更多优质文章的最强动力!