查看原文
其他

如何用人工智能帮你剪视频?

王树义老师 玉树芝兰 2023-01-24

痛点

制作视频已经好几年了,但是剪片子一直是让我比较头疼的事儿。

以前我一直搞不清楚,视频为什么需要剪辑。

曾经有一段儿,我是这么录视频的。如果讲的时候出现了磕绊,或者有些展示过程出现问题,我怎么办?

我干脆停下来,然后重新录制 。

别笑,这傻事儿我真干过。因为那时候我不懂得剪辑的意义,觉得所有视频都是「一条过」的产物。

但是后来我明白过来了这样好像太麻烦了。如果录一段视频成本太高,我也就懒得录制了。在经过若干轮次的迭代之后,我甚至已经用卡片法来录制视频 了,哈哈。

既然明白了剪辑的重要性,剪辑的工具也就引起了我的重视。毕竟它直接影响剪辑的效率。

提到视频剪辑,你会想到哪些应用呢?一般用户可能会想到剪映。苹果生态里面的专业用户往往会想起 Final Cut Pro 或者 LumaFusion 等。这些工具都很好,提供了很多功能。不过对于我来说,它们中的大部分功能,我其实都用不上。但是我真正需要的那些功能,它们提供得也不好。

举例来说,因为我主要录视频教程。所以剪辑的主要目标是这样的:

首先,剪掉其中错误的内容;中所周知,我是个懒人。自己录视频之前,一般只有一个提纲,甚至只有一个主题。所以讲的时候,很有可能中间进了一个死胡同,绕出来的时候前面的就都应该删掉。可是之前的问题在于整体录制完成,再去找这些比较麻烦;

其次,剪掉口癖(「这个」、「呃」之类)和过长的停顿(往往是我在思考下一句说啥),哈哈。

至于什么 B roll 之类的素材,想起来的时候加,没想起来就那样,哈哈。你看我最近这几期讲盗版历史的视频,基本上一条 B roll 都没有。

对我来说,Final Cut Pro 或者剪映在处理这些问题上,难以给我有效的帮助。

辅助

后来,我看到了立青推荐的 Recut ,试过之后,发现真的是剪视频的利器。它帮助我高效解决了第二个需求。

它的方法其实非常简单 —— 找到那些长时间声音低于某一阈值的片段,然后去掉它。这样句子之间更加连贯。

我一开始对「剪掉所有的无声片段」颇有些不以为然,因为我头疼的主要是处理口癖和中间去喝水的片段等。但是实际用起来,我发现这种情况出现的时候,前后一般也会有无声片段出现。所以我可以根据自动切分的片段长度,来找寻可能有问题的地方。很多时候,长时间流畅表达的部分中间一般都是没问题的。反之,反复出现无声片段,意味着这一部分在磕磕绊绊,点开一听,确实是可疑。这样一来,剪辑效率提高很多。

Recut 支持把剪掉无声片段之后的内容直接输出为视频文件,也可以把它输出为 Final Cut Pro 的 XML 项目文档。我还是觉得在 Final Cut Pro 里面进行精剪更为稳妥,这样如果切断的地方有需要的,还可以找补回来。

Recut 虽然好,但是还是没有解决我的另一个痛点 —— 剪掉不想呈现的那部分内容。

每次剪辑,我还是要在 Final Cut Pro 里面从头到尾听一遍。当然,我一般会用 L 快捷键,把播放开到二倍速,以显著提升效率。不过对于某些内容来说,可能听了半天,才发现前面的有问题,于是还得重新回过头去找出来剪掉。这样操作起来并不直观,效率明显还有提升空间。

看到这儿,你可能觉得我太贪心了 —— 工具都已经帮你到这份儿上了,还「要啥自行车儿」?

但是事实证明,工具确实还能进一步发挥作用。不过这次,就需要人工智能介入了。

我最近发现了一款有意思的视频剪辑工具,来自于李沐老师。李沐是亚马逊首席科学家,人工智能框架 Apache MXNet 作者之一。他在 B 站开设直播课程,教大家深度学习课程。

一个人工智能专家,按说应该很忙啊,哪儿有时间做做视频剪辑软件呢?其实也容易理解,因为他自己就要用。

在 B 站做视频,李沐老师也经常需要面临剪辑的问题。根据他自己的介绍,每段视频里需要剪掉的部分还不少。久而久之,对现在市面上的工具不满,所以干脆自己用人工智能做一个。

这个工具,叫做 Autocut ,对应的 Github 项目的地址在这里。

这种「一言不合就自己开发工具」的脾气,我特别欣赏。

智能

这里的人工智能,主要指的是 whisper ,它是 OpenAI 出的又一款模型。

它能干什么呢?就是听声音转写文字。

这里咱们聚焦在 Autocut ,所以关于 Whisper 的具体细节就不展开了。如果你感兴趣的话,少数派上面有一篇文章,对 whisper 做了比较详细的介绍。我觉得写得不错,推荐给你。

李沐老师创造的工具,是这样的工作原理:

  • 首先,调用 whisper ,来生成字幕;

  • 第二步,你可以在字幕里面,按照文字来挑选内容。只把有用的字幕保留下来,没用的删除;

  • 然后,autocut 这款工具会依照保留的字幕内容,把对应的视频或者音频剪出来,形成单独的视频文件。

机理并不复杂,下面咱们来看一个实际的例子。

例子

这是我 前几天录制的一段视频,讲盗版软件为什么会没落了下去。



我用 iPhone 录制视频,然后 Airdrop 到了电脑里面,视频的名字叫做 IMG_6764.mov。我把它存到了一个目录里,起名叫做 2022-11-14-software-pirate 。

然后我执行以下命令:

autocut -d /Users/wsy/Movies/2022-11-14-software-pirate/

解释一下,这里是让 autocut 监控指定的文件夹。如果里面有视频,就进行处理。如果相关的文件发生变动,也会激发 autocut 进行后续的操作。此处略过对视频的第一波处理,因为反正都是自动进行的。完成 whisper 的声音转录后,这个目录里就自动生成了 3 个文本文件。

一个是项目控制文件,autocut.md

这个文件,主要用来合并多个视频。所以如果你目前只录制一段视频的话,暂时不用管它。

一个是字幕文件,IMG_6764.srt

注意因为 autocut 默认使用的是 whisper 一个小型化模型(small)。这样处理的速度更快,但是识别率比起完整模型有妥协。你可以看到其中第一句「盗版」写成了「倒板」,第二句「莫韦」显然应该是「末尾」。不过这无伤大雅,不干扰咱们的后续识别就好。

另外一个文件,是与字幕对应的 Markdown 文件,IMG_6764.md。建议你使用 Visual Studio Code 打开。

左侧是 Markdown 原始信息,每一句字幕之前,都有一个选项框(checkbox)。一开始默认都是不勾选。如果你觉得哪一句的内容需要保留,只需要把 - [] 加上一个 x ,变成 - [x] 即可。

就像这样:

之后,你就可以快速在整个儿文本中游走,把需要的都摘取出来。剪片子从原本需要面对视频,就变成了面对文本。这样的好处是什么呢?我们从小接受语文的训练,看文本可以一目十行。这也是为什么有的人平时更喜欢看书而非教学视频,就是因为他们觉得这样的信息密度才足够高。

视频里面,你可能听了 3 分钟,才发现一部分内容讲错了,后面进行了重新讲述。但是这里,一眼就可以看出来。效率提高很多。

不过看到这里,你可能会觉得,一行行修改标记,太麻烦了啊!

这就是为什么我们要用到 Visual Studio Code 的原因。它有丰富的插件系统,可以帮助我们轻松批量给任务「调勾」。

插件

你需要安装这个插件(Markdown Checkbox):

安装完了之后,你需要进行一下简单设定。因为要调整下面页面里的好几处,所以我截了个图出来,只需要保证你的设置跟这里一致就行。

有了这个插件,你就不需要一行行勾选了。只需要选中若干行(只选一行当然也没问题),执行快捷键 Shift + cmd + Enter 即可。

怎么样,方便多了吧?

不过有的小伙伴儿可能依然觉得麻烦。毕竟大部分情况下,一个视频里还是保留的内容更多啊。把保留的句子都一一选出来,听起来有点儿反直觉。其实也好办,你可以把所有需要删除的句子先选定,然后选择整个儿文件,重新执行 Shift + cmd + Enter ,相当于一次反选。

注意修改完之后,一定不要忘了把 Markdown 文件开头的一个勾儿打上。

这个勾儿是干什么的呢?是用来提示 autocut 说你已经把需要保留的内容选完了,可以开动剪辑了。

然后你会看到 autocut 又开始忙活。进度条走完的时候,会生成一个 IMG_6764_cut.mov 文件。这个新视频文件里的内容,就是根据你的需求定制裁切出来的。

另外 autocut 还会自动生成对应的字幕文件,叫做 IMG_6764_cut.srt。打开这个新的字幕看看,原先不需要的语句是不是已经都剪掉了?

剪辑好的视频和对应的字幕,一下就都有了。这个新的字幕很有必要。前面说了 whisper —— 尤其是它的 small 模型 —— 对于中文识别的准确率还是有待提升的,因此你可能有必要在这里直接修改 srt 内容保证字幕更加精准。

不过,我一般做视频都不加字幕,也就无所谓了,哈哈。

效果

Autocut 用人工智能做视频剪辑,效果怎么样呢?

我觉得不错。至少里面大段讲废了的内容,可以非常容易识别出来,并且批量去除掉,比人工看、听和剪的过程,要高效许多。

但是现在 autocut 还存在几个小问题:

首先是刚才已经提到的,有些语句识别不准确。如果只看文本,可能无法知晓原始的意义。这跟 whisper 选择的模型有关系。如果选择更大的模型最好有 GPU 支持。我使用 Macbook M1 只能调用 CPU 的功能,所以无法选择更大模型。我处理的办法是不知道是否保留的,先保留下来,后续再进行精剪;

其次是调用 ffmpeg 剪辑的时候耗费时间长度是个问题。如果内容较长,ffmpeg 剪辑起来需要用到比较长的时间。我觉得这个是可以改进的。之前我用过另一款轻量级剪辑工具叫做 losslesscut ,后台的支撑也是 ffmpeg ,不过它完全可以做到瞬间剪辑完毕。我觉得 ffmpeg 里的参数设定可能有问题,通过调整参数选项,也许也可以做到更快的剪辑;

第三是直接剪出来的视频,有时候会出现莫名其妙的吞字。虽然这种情况不普遍,不过万一出现的时候,也让人很不舒服。毕竟剪辑这个事情是剪下去容易,但是已经剪多了输出后就不好办了。

我觉得最好的解决办法,是让 autocut 可以像 recut 一样,直接选择生成 XML 项目文件,以便在 Final Cut Pro 或者其他视频剪辑工具里面再做精修。这样一来,无需 ffmpeg 实际剪辑,节省时间。而且即便错误吞字的地方,也可以在 Final Cut Pro 里面简单拖拽找回来。

这一点上,已经有人给李沐老师提了建议。

我在后面表示了自己对这个提议的支持。

希望这个功能可以早日实现。

小结

本文我给你介绍了李沐老师的人工智能剪辑工具 autocut 。通过 whisper 声音到文本转换,实现依照文字的高效剪辑。希望这款工具对于你剪视频能起到帮助。

你有没有其他好用的视频剪辑工具可以分享?欢迎留言,咱们共同进步。

祝剪辑愉快!

点赞 +「在看」,转发给你身边有需要的朋友。收不到推送?那是因为你只订阅,却没有加星标

如果有问题咨询,加入知识星球吧。之前已经积累下的帖子和问答,就有数百篇。足够你好好翻一阵子。

若文中部分链接可能无法正常显示与跳转,可能是因为微信公众平台的外链限制。如需访问,请点击文末「阅读原文」链接,查看链接齐备的版本。 

(注:本文首发于少数派网站,对应链接请点击文末「阅读原文」查看。)

延伸阅读


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存