MoneyPrinterTurbo:AI 短视频批量生成
Python AI 短视频批量生成工具,自动化生产营销类短视频内容。
MoneyPrinterTurbo:AI 短视频批量生成工具
项目背景
在短视频时代,内容创作者面临一个核心痛点:视频制作流程太长。从选题、写文案、配音、找素材、剪辑到导出,一个 60 秒的短视频往往需要 1-2 小时。如果每天需要出 10 条视频,光靠人工几乎不可能。
MoneyPrinterTurbo 就是为了解决这个问题而生的——它输入一段文案或主题,就能自动生成一条完整的短视频,包含配音、字幕、背景音乐和匹配的画面素材。
技术架构
项目基于 Python 构建,核心链路如下:
用户输入文案 -> 文本分段 -> TTS 语音合成 -> 素材检索 -> FFmpeg 视频合成 -> 导出成品
主要模块
| 模块 | 职责 | 技术选型 |
|---|---|---|
| 任务引擎 | 接收请求、编排流程 | Python asyncio |
| TTS 模块 | 将文本转语音 | edge-tts(免费)、Azure TTS(高质量) |
| 素材模块 | 搜索匹配画面 | 搜索引擎 API + 本地素材库 |
| 字幕模块 | 自动生成 SRT 字幕 | 基于语音时间戳 |
| 合成模块 | 最终视频合成 | FFmpeg |
| API 层 | 对外提供接口 | FastAPI |
核心实现
语音合成
使用 edge-tts 库免费调用微软 Edge 的在线语音合成服务:
核心流程:传入文本 -> 创建 Communicate 对象 -> 保存为音频文件 -> 返回音频时长
支持多种音色切换,中文推荐 XiaoxiaoNeural(自然)或 YunxiNeural(活力)。
视频合成
视频合成将语音、画面、字幕、背景音乐四层叠加。核心难点在于各层的时间轴对齐——每段语音时长不同,画面显示时间必须与语音严格匹配。
使用 FFmpeg 的 filter_complex 实现多层叠加,关键参数包括:
- 逐帧率控制:每张图片的显示时间由对应的语音时长决定
- 字幕渲染:指定中文字体确保不显示方框
- 编码参数:libx264 + 中等 preset,平衡速度和画质
业务流程
第一步:文案分段
长文案按句号、问号等标点分段。每段长度控制在 50-100 字,对应 8-15 秒语音。每段独立生成语音、匹配画面。
第二步:语音合成
为每段文本调用 edge-tts 生成语音文件。edge-tts 的优势在于免费、质量高、响应快(首次调用约 1s,后续缓存)。
第三步:画面匹配
从文案中提取关键词,通过搜索引擎检索图片。如果检索结果质量差,使用本地预设素材兜底。素材与文案的语义匹配度直接影响视频观感。
第四步:字幕生成
根据语音的时间戳自动生成 SRT 字幕文件。字幕与语音逐词对齐,需要 edge-tts 的 word-level timestamps 支持。
第五步:最终合成
将所有要素通过 FFmpeg 合成最终视频。支持添加转场效果、片头片尾、背景音乐。输出格式为 MP4,支持自定义分辨率(默认 1080x1920 竖屏)。
踩坑记录
1. 音画不同步
最初每段画面固定 5 秒,但每段语音的实际时长不同(长句 10 秒,短句 3 秒)。后半段音画严重错位。
解决方案:先合成语音,获取每段语音的准确时长,再按语音时长分配画面显示时间。
2. 字幕中文乱码
FFmpeg 的 subtitles filter 在 Windows 上默认字体不支持中文,生成的视频中字幕显示为方框。
解决方案:在 FFmpeg 命令中指定中文字体路径(如 SimHei、Microsoft YaHei)。
3. 素材检索质量波动
同样的关键词在不同时间搜索,返回的图片质量不一致,有时完全无关。
解决方案:建立本地素材缓存池,优先使用经过人工筛选的高质量素材,网络检索作为补充和扩量。
4. 长视频内存溢出
处理超过 3 分钟的视频时,FFmpeg 在内存中保持所有帧,8GB 机器 OOM。
解决方案:分段合成然后拼接,每段不超过 60 秒。
效果对比
| 指标 | 人工制作 | MoneyPrinterTurbo |
|---|---|---|
| 单条耗时 | 30-60 分钟 | 1-3 分钟 |
| 日产量 | 10-20 条 | 100+ 条 |
| 质量 | 高 | 中等(需审片) |
| 成本 | 高 | 低 |
总结
MoneyPrinterTurbo 验证了:视频生产可以流水线化。核心壁垒不在于单个 AI 模型的精度,而在于把多个 AI 能力编排成一条可靠的生产流水线——每个环节都要稳定、可监控、可兜底。