前两天想做个十几秒的AI视频试试水,打开某工具一看价格——按秒计费,生成一条一分钟的视频够我吃顿外卖了。

算了,自己搞一个吧。

于是就有了 Agnes Video Generator。说白了就是一个免费的AI视频生成器,不是那种”免费试用3次”的套路,是从写文案到出片、配音、上字幕,全程不花一分钱。只需要去 Agnes AI 注册个免费API Key就行。

三种玩法

给它一句话描述,它还你一条视频。但根据你想偷懒的程度,分了三个档:

最省事的——简单视频。 写句话,选个分辨率(竖屏横屏方形都有),时长5到20秒随便选,点生成,等一会就出来了。支持文生视频、图生视频和关键帧模式。适合快速验证”这玩意儿到底能不能用”。

最好玩的——创意视频。 这个是我觉得最有意思的部分。你写一个故事创意,比如”暗黑版青蛙王子”,剩下的事情AI全包了:先把你的脑洞扩展成一个完整故事,然后提取角色描述、生成角色参考图,把故事拆成多个场景,给每个场景写详细的分镜提示(就是那种”低角度仰拍、暖色调逆光、浅景深”的玩意儿),接着生成每段视频、写旁白、配音、上字幕、最后拼成一条完整视频。全程10个步骤自动跑完,你只需要等着看成片。

我第一次跑通这个流程的时候还挺惊喜的,虽然AI写的分镜偶尔会有些迷惑操作,但整体完成度比预期高不少。

最实用的——文稿视频。 你贴一篇长文章或者讲稿进去,它自动按语音时长帮你分段(大约每秒4个汉字),每段生成对应的画面,再用一条完整的TTS旁白和字幕串起来。我拿自己之前写的一篇博客试了一下,出来就是一条像模像样的解说视频。做知识区内容的可以试试这个。

凭啥免费

有人会问:免费的东西能有啥好货?

说实话,能免费主要是 Agnes AI 这个平台提供了免费的模型API,不是我做了什么黑魔法:

干嘛用的 用的什么模型 收钱吗
写文案、写脚本 agnes-2.0-flash 不收
生成图片 agnes-image-2.1-flash 不收
生成视频 agnes-video-v2.0 不收
语音旁白 Microsoft Edge TTS 不收(也不需要Key)

前三个是 Agnes AI 的免费模型,最后那个配音走的是微软 Edge TTS,这个本来就不要钱。四样凑一起,就实现了一条完整的零成本视频生产线。

模型质量嘛,我用下来的感受是:够用,而且某些地方超出预期。视频生成的画面细节还行,虽然偶尔人物会抽风但大部分时候挺能看的。LLM写的分镜脚本说实话比我写的好(当然这门槛也不高)。Edge TTS 的中文语音自然度是最让我意外的,不像以前那些机器味很重的合成音,尤其是”晓晓”那个音色,闭眼听还真有点像真人在念。

跟顶级付费工具比当然有差距,但你要想想这是免费的啊。

配音和字幕这块我想多聊两句

做视频最怕的就是配音和字幕对不上,观众看着嘴型跟声音打架。

这个项目的字幕不是那种把旁白文本切几段直接糊屏幕上的粗暴做法。Edge TTS 有个叫 SubMaker 的功能,能拿到每个词甚至每个字的精确时间戳。所以字幕是逐词对齐的,大概每2到3个字切一条字幕,跟语音的同步相当精准。

还有个细节我觉得挺满意的:长字幕会自动换行,而且换行点会找标点符号的位置,不会出现”的”字被挤到下一行这种让人强迫症发作的情况。字体、颜色、大小、位置、描边这些也都能调,不过我一般就保持默认,够用了。

配音有4个中文音色可选。我个人推荐”晓晓”(温柔女声)和”云扬”(沉稳男声),做解说视频很合适。语速可以调,我一般调到+10%,正常语速稍微有点慢。

场景衔接这个问题

做过视频的都知道,单个场景生成出来还行,但5个场景拼在一起如果各管各的,观感就很割裂。

我试了几种方案,最后做了三个模式:

关键帧模式是我觉得效果最好的。原理很简单:给每个场景指定第一帧和最后一帧是什么画面,然后场景1的最后一帧自动变成场景2的第一帧,场景2的最后一帧又变成场景3的第一帧……这样相邻场景之间就有了视觉上的连续性。看demo里那个青蛙王子的视频,场景之间的过渡就是用的这个模式,还算顺滑。

过渡帧模式(ti2vid) 思路不太一样:提取上一个场景的最后一帧,用 img2img 做一张过渡图,当下一个场景的开头。效果嘛,有连续性但没有关键帧那么可控,偶尔会出现过渡画面有点迷的情况。

独立模式 最简单——所有场景用同一张参考图各自生成,互相不管。适合那种场景之间本来就不需要强关联的内容,比如一段解说配不同画面,这种就完全够用。

聊聊技术实现

后端 Python + FastAPI,前端是个单文件HTML页面用 Tailwind CSS 写的,零构建步骤,整个项目大概5000多行Python + 1500行前端。代码量不算大,但该有的都有了。

说几个写的时候花了不少心思的地方:

断点续传。 生成一个创意视频要跑10个步骤,中间万一网络断了或者你手滑把服务关了怎么办?我的做法是每完成一步就把状态原子写入一个 JSON 文件(先写临时文件再 os.replace,这样就算进程被强杀也不会写坏文件)。重启服务后在任务列表里点”继续”,它就会从上次断的地方接着跑,已经完成的步骤不会重复调API,省钱也省时间。

音频轨道的处理。 一开始我是给每个场景单独配音再拼接的,结果发现一个问题:每段音频前后都有一点点空白,拼在一起这些空白会累积,听起来就一顿一顿的。后来改成了先把所有场景视频拼好,再在整条时间轴上铺一整条旁白,效果好了很多。如果旁白比视频长(这事经常发生),就把最后一帧冻结住延长到旁白结束。

中文字体。 这个坑我踩了好久。moviepy 渲染字幕的时候如果选了一个不支持中文的字体,中文字符就会变成方框。所以我加了个检测逻辑,发现你选的字体不支持CJK字符的话,自动切到内置的黑体。丑是丑了点,但至少能看。

跑起来很简单

1
2
3
git clone https://github.com/easyeye163/agnes-video-generator.git
cd agnes-video-generator
./start.sh

就这三步。start.sh 会自动帮你建虚拟环境、装依赖、启动服务。唯一的前置要求是 Python 3.10+ 和 ffmpeg。

启动后打开 http://localhost:8765,在页面顶部填上你的 Agnes AI API Key,选个模式,写你的创意,点生成,然后去泡杯咖啡等结果就行。

用 Cursor 或者 Claude 这些AI编程助手的话更方便,项目里有个 AGENTS.md,直接让你的Agent读这个文件,它自己就能把环境搞好、把服务跑起来。

看看效果

文字说再多也没用,直接看demo吧:

我个人最喜欢第二个,有配音和字幕之后真的像个正经视频了。

得说说不足之处

项目还在早期,有些地方确实不够完善,我不想吹得太过分:

网络不稳定的时候偶尔会有重试失败的情况,多跑几次一般就好了。单个场景超过20秒的话生成时间会比较长,急性子可能会着急。还有一个我暂时没处理的边界情况:如果你自定义的尾帧数量和场景数对不上,程序的行为是未定义的(大概率会报错,别问我怎么知道的)。另外同时跑多个视频生成任务的话可能会有点卡。

但基本的生成流程是靠谱的,日常用问题不大。

最后

做这个东西就是因为不想花钱。AI视频这东西挺有意思的,但按秒计费的方式让试错成本太高了,很多想法还没试就放弃了。既然有免费的模型可以用,我就搭了这么一套工具,让想玩的人都能试试。

MIT协议开源,代码都在 GitHub 上。有问题可以提issue,也欢迎PR。

反正免费的,试试呗。