作者:可爱的小Cherry
链接:https://www.zhihu.com/question/265705464/answer/1961751808524399497
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

大家刷短视频的时候,肯定都看到过这些电视剧、电影的解说视频,比如 — “注意看,这个男人叫小帅….”。

这种解说视频,其实有2、3年的历史了,我就非常喜欢刷这种解说视频,可以快速过完剧情大纲,然后挑自己感兴趣的去慢慢看。

大家好,这里是Cherry,喜爱折腾、玩数码,热衷于分享数码玩耍经验~

这种类型的解说视频,除了一小部分精品是由创作者一点点剪辑出来的外,绝大多数都是通过自动化流水线完成的。

今天,为大家带来的就是这样一款自动化流水线影视剧 AI 解说剪辑工具 —— NarratoAI ,通过在 NAS 上部署后,可以基于 LLM 实现文案撰写、自动化视频剪辑、配音和字幕生成的一站式流程,然后我们再通过短视频平台去分发,多少赚一点流量钱。

NarratoAI 作者推荐是部署配置是 4核8G,并且主要通过 CPU 来调用 FFmpeg 进行视频合成。所以我们本次以成品 NAS 中性能佼佼者极空间Z423 旗舰版为例,介绍如何在 NAS 上正确配置 NarratoAI,并尝试一次自动化剪辑。

当然,极空间目前最流行的 极空间Z4 Pro性能版、Z4 Pro+等产品,也拥有足够的硬件资源来部署和运行 NarratoAI。


一、极空间部署NarratoAI

首先,大家需要下载官方代码包,解压后上传到极空间个人空间中。代码包下载指令为git clone https://github.com/linyqh/NarratoAI.git,不会的话用下面的网盘pan.quark.cn/s/4e546c1d

下载完成以后,双击exe包解压成文件夹,并且上传到极空间个人空间的任意位置备用。

进入项目根目录,将config.example.toml重命名为config.toml

接着打开 docker 应用,选择 Compose – 新建项目,将下面的yaml代码复制到代码黑框内。

由于该项目最新的官方镜像还是 4个月以前的版本(v0.6.2),所以cherry这里上传了一份我自己打包的镜像coracoo/narratoai:latest(v0.7.2),如果希望使用官方镜像的可以修改为linyq1/narratoai:latest

services:
  narratoai-webui:
    image: coracoo/narratoai:latest # 个人打包镜像,版本为0.7.2
    # image: linyq1/narratoai:latest 官方镜像,版本为0.6.2
    container_name: narratoai-webui
    user: '0:0' # 极空间必须添加
    ports:
      - "8501:8501"
    volumes:
      - 路径/storage:/NarratoAI/storage
      - 路径/config.toml:/NarratoAI/config.toml
      - 路径/resource:/NarratoAI/resource
    environment:
      - PYTHONUNBUFFERED=1
      - TZ=Asia/Shanghai
    restart: unless-stopped

接着,点击黑框上方的复制路径按钮,切换到刚才我们上传的文件目录夹下,点击复制路径。将复制下来的路径,替换代码中的【路径】中文,并启动容器 Compose。

如果遇到网络问题没办法下载镜像的,依次点击镜像-仓库-设置-加速器配置-添加URL来增加镜像加速地址,比如常见的1Panel和1ms镜像加速地址,之后我们就可以方便快速的下载容器镜像包了。

容器启动以后,点击日志,可以查看运行情况。这里需要注意的是,每次启动的时候,系统会从github拉取一个SourceHanSanSC-Regular.otf的字体包,如果是从官方直接拉git代码的,需要挂代理下载一下。如果是使用我提供的代码包,那么就不用有这个过程。


二、NarratoAI 初体验

1、基础配置

待容器完成启动以后,切换到 docker 的容器标签页,选择narratoai-webui容器,点击远程访问打开主页面。

主页面进入时,右上角会有一个运动的小人,如果长时间白屏,那就点击 STOP 按钮,然后点击 极空间远程访问的刷新,就可以进入主页面了。

在主页面,首先点击最上方的Basic Settings按钮,将语言切换为zh.简体中文。接着我们来配置视频分析模型、文案生成模型的 API。

这里先说一下narratoai这个项目中,视频解说的大致逻辑。它首先通过 LLM 理解影片的字幕文件,然后通过文案生成模型,视频分析模型来理解画面,自动生成符合字幕时间点的解说脚本,然后通过 TTS 将文本变为语音,再利用 FFMPEG 进行视频转码以及文本、音频、转码视频的合并。

当然,除了视频解说外,还包括逐帧解说、短剧混剪等脚本类型,本文还是以常规的短剧解说为例,剩下的大家可以部署后自行体验。

接着,我们来配置视频分析模型、文案生成模型的 API 接口,这里推荐大家尽量使用官方config.toml中配置好的模型。

以流动硅基为例,推荐的视频分析模型是Qwen/Qwen2.5-VL-32B-Instruct,推荐的文案生成模型是deepseek-ai/DeepSeek-R1,我们只需要在上方的 API 密钥里填入自己的密钥就能自动保存,然后记得进行测试连接,确保网络正常。

2、文件目录解析

以下是narratoai项目的源文件目录,在/resource目录下,分别有字体、字幕、视频、音频、脚本等文件夹,我们可以提前将字体、视频、音频这三个重要资料上传。

视频的话,主要就是减少上传占用的时候。我们直接丢在目录下,系统里就可以直接选择这些视频了,方便不少。

字体的话,注意只支持ttcttf两种格式,并且后缀必须是小写的,否则系统无法读取(踩坑点)。

3、视频解说实操

整个短剧解说,分为选择素材、生成脚本、选择TTS、选择字幕、生成视频几个步骤。

首先是视频脚本,选择了视频文件、字幕文件后,我们就可以点击最下面的生成短剧解说脚本,让 AI 根据字幕文件内容来自动生成提炼解说词,大致格式如下。

如果资深的解说佬,对影片了解的足够深,也可以手动维护脚本,让 AI 根据来切片。

 [{
        "_id": 序号,
        "timestamp": "切片时间",
        "picture": "画面描述",
        "narration": "播放原片或者解说词解读",
        "OST": 是否播放原片
    },
    ...]   

我这里选择了 AI 脚本,AI 会自动根据影片、字幕内容,生成长短不一的脚本内容,这个脚本支持导出保本,也可以自行修改。

接着第二步,我们来配置解说音频。默认使用的是免费的Edge TTS,声音相对中规中矩一些,另外也支持亚马逊、SoulVoice、腾讯云TTS。

选择好 TTS 类型后,就是根据影片需要,选择对应的音色、音量、语速等信息,选择完成以后可以生成一个试听片段。

如果解说视频还需要背景音乐的,可以在背景音乐里选择随机、指定背景音乐,增加节目效果。

最后在右侧选择视频输出格式(16:9或9:16,最高支持4K输出),字幕字体等信息。再提一嘴,所有的字体格式必须是ttf/ttc的,否则字幕设置里无法选择字体,不管启不启用字幕,视频生成都会失败。

自动视频解说开始工作,我制作了 22分钟 的一个动画解说,从开启切片到最终合成成品,总共花费了 40分钟左右。

在此期间,本项目的 CPU 的使用率一直在 52% 左右,还是比较吃硬件的,所以还是需要极空间这种高性能 NAS 才能吃得住。

最终视频完成后,就在我前面提到的/storage/tasks/id/目录下,combined.mp4就是我们最终稿的成品视频解说,其它的话还有过程资料,都保存着。

最终解说视频的效果,我使用极空间APP 进行播放,整个时间长度22分钟,包括原片时间和解说部分,解说内容会在视频下方有字幕展示,同时兼顾 AI 配音。而剩下的播放则是以播片为主。如果想要缩短讲解时间,那么就需要通过提示词,进一步优化视频脚本。


总结

以上,就是我们通过极空间私有云部署 NarratoAI 项目,并且从 0 开始创建一个 AI 自动化短视频解说的全流程。整个过程,我还是踩了不少坑的,比如镜像版本、文件权限、字体格式、模型选择等等,花费了不少时间才把整个流程理顺。

平时在用 NAS ,并且喜欢折腾副业、搞点小米米的用户,也可以尝试通过 NarratoAI 这个项目来做一些自动化短视频解说的尝试,看看有没有机会做大做强,奔驰宝马~~

好了,关注cherry,折腾 docker 不迷路,我们下期再见~