用 NAS 赚电费,全自动 AI 影视剧解说,极空间NarratoAI保姆教程
大家刷短视频的时候,肯定都看到过这些电视剧、电影的解说视频,比如 — “注意看,这个男人叫小帅….”。
这种解说视频,其实有2、3年的历史了,我就非常喜欢刷这种解说视频,可以快速过完剧情大纲,然后挑自己感兴趣的去慢慢看。
这种类型的解说视频,除了一小部分精品是由创作者一点点剪辑出来的外,绝大多数都是通过自动化流水线完成的。
今天,为大家带来的就是这样一款自动化流水线影视剧 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,不会的话用下面的夸克网盘 /s/4e546c1d0ef4。
我也在网盘上备份了一份,地址是。下载完成以后,双击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目录下,分别有字体、字幕、视频、音频、脚本等文件夹,我们可以提前将字体、视频、音频这三个重要资料上传。

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

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

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 才能吃得住。
QQ_1758787949084.png最终视频完成后,就在我前面提到的/storage/tasks/id/目录下,combined.mp4就是我们最终稿的成品视频解说,其它的话还有过程资料,都保存着。

最终解说视频的效果,我使用极空间APP 进行播放,整个时间长度22分钟,包括原片时间和解说部分,解说内容会在视频下方有字幕展示,同时兼顾 AI 配音。而剩下的播放则是以播片为主。如果想要缩短讲解时间,那么就需要通过提示词,进一步优化视频脚本。
Picsew_20250925171626.JPEG总结
以上,就是我们通过极空间私有云部署 NarratoAI 项目,并且从 0 开始创建一个 AI 自动化短视频解说的全流程。整个过程,我还是踩了不少坑的,比如镜像版本、文件权限、字体格式、模型选择等等,花费了不少时间才把整个流程理顺。
平时在用 NAS ,并且喜欢折腾副业、搞点小米米的用户,也可以尝试通过 NarratoAI 这个项目来做一些自动化短视频解说的尝试,看看有没有机会做大做强,奔驰宝马~~
好了,关注cherry,折腾 docker 不迷路,我们下期再见~
作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~

可爱的小cherry
校验提示文案
taiyixiaozi
Traceback:
File "/NarratoAI/webui.py", line 245, in
main()
File "/NarratoAI/webui.py", line 241, in main
render_generate_button()
File "/NarratoAI/webui.py", line 173, in render_generate_button
result = tm.start_subclip_unified(
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/NarratoAI/app/services/task.py", line 305, in start_subclip_unified
raise ValueError("解说脚本不存在!请检查配置是否正确。")
校验提示文案
达尔文西
校验提示文案
大肠丶刺身
校验提示文案
天龙雪剑
校验提示文案
值友4593394272
校验提示文案
浮生行简
校验提示文案
你们跟我拼了
校验提示文案
markyao
校验提示文案
插曲
校验提示文案
redhat874
校验提示文案
只想捞薯条
这是加速器不行吗
校验提示文案
KevinSu
校验提示文案
值友5353866265
校验提示文案
raul0101
校验提示文案
值友5972343957
校验提示文案
大宝剑911
校验提示文案
longlylee
校验提示文案
longlylee
校验提示文案
每天不看不舒服
校验提示文案
值友9340815934
校验提示文案
猫小赞
校验提示文案
Lostedman
校验提示文案
willian181
校验提示文案
夺命香蕉皮i
校验提示文案
老魏头
校验提示文案
raul0101
校验提示文案
hongmao10
校验提示文案
值友5353866265
校验提示文案
大肠丶刺身
校验提示文案
KevinSu
校验提示文案
taiyixiaozi
Traceback:
File "/NarratoAI/webui.py", line 245, in
main()
File "/NarratoAI/webui.py", line 241, in main
render_generate_button()
File "/NarratoAI/webui.py", line 173, in render_generate_button
result = tm.start_subclip_unified(
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/NarratoAI/app/services/task.py", line 305, in start_subclip_unified
raise ValueError("解说脚本不存在!请检查配置是否正确。")
校验提示文案
每天不看不舒服
校验提示文案
只想捞薯条
这是加速器不行吗
校验提示文案
redhat874
校验提示文案
longlylee
校验提示文案
longlylee
校验提示文案
大宝剑911
校验提示文案
插曲
校验提示文案
markyao
校验提示文案