一个人搞了两个月,聊聊用 AI 做短视频自动生成的技术方案和踩坑

一个人搞了两个月,聊聊用 AI 做短视频自动生成的技术方案和踩坑
一个人搞了两个月,聊聊用 AI 做短视频自动生成的技术方案和踩坑

最近半年一直在折腾一个项目——用 AI 自动生成短视频。起因是身边做小生意的朋友总问我能不能帮忙剪视频发抖音,我想这事儿应该能自动化,就开始做了。

分享一下技术方案和踩过的坑,希望对有类似想法的朋友有参考价值。


整体架构

用户上传素材 + 输入文案
    ↓
TTS 语音合成(MiniMax / 火山引擎)
    ↓
根据语音时长自动分配素材时间轴
    ↓
云端渲染(转场、字幕、BGM)
    ↓
成品视频

后端 FastAPI + MySQL,前端 Vue 3,视频渲染走云端 API,手机端用 Capacitor 套了个壳。一个人全栈,没有团队。


几个有意思的技术点

1. TTS 选型

试了一圈,最后主力用 MiniMax speech-2.8-hd,中文多音字准确率目前最好。火山引擎作为补充,主要是剪映生态的独有音色(奶气萌娃、广告解说这种)。Azure 的中文效果一般,Fish Audio 没深入测。

踩坑:TTS 返回的音频时长和文字长度不是线性关系,语气词、停顿都会影响。批量生成时如果对时长有严格要求,需要做重试机制。

2. 素材自动分配

这块逻辑最复杂。用户上传 N 个素材(视频+图片混合),系统要自动决定每个素材展示多久、从视频的哪个位置截取。

几个关键决策:

  • 视频从中间 70% 区域截取(跳过开头 20% 和结尾 10%),因为大部分手机拍的视频开头都是晃动的
  • 图片展示时长根据总时长动态计算,保证每张都出现,最少 1 秒/张
  • 批量生成时用发牌算法分配素材,保证每条视频的封面帧不同

3. 批量生成去重

做矩阵号的核心需求是"一组素材生成几十条不重复的视频"。去重策略:

  • AI 扩写多组文案时分配不同的切入角度(预定义了 30 个角度)
  • 每条视频的素材起始偏移不同
  • 视频截取位置随机化
  • 第一个 clip 强制用不同素材保证封面不同

4. 浮点精度问题

这个坑最隐蔽。视频时间轴用浮点数计算,多个 clip 拼接时 accumulated 会漂移,导致素材重叠或出现缝隙。解决方案是每次用 round 后的值更新 accumulated:

cs = round(clip_start, 1)
ce = round(clip_end, 1)
accumulated += (ce - cs)  # 不是 accumulated += clip_dur

5. 实时语音输入

加了个语音输入功能,用户对着手机说文案直接转文字。技术上是浏览器 AudioContext 采集 PCM → WebSocket 传到后端 → 转发到阿里云 paraformer-realtime-v2。

踩坑:中间结果和最终结果的拼接如果处理不好会闪烁,最后用了"快照 + 增量"的方案解决。


技术栈汇总

层 技术 前端 Vue 3 + Vite + Capacitor 后端 Python 3.13 + FastAPI + SQLAlchemy 数据库 MySQL 8 存储 阿里云 OSS + CDN AI 文案 通义千问 TTS 火山引擎 语音识别 阿里云 paraformer-realtime-v2

目前自己和几个朋友在用,做餐饮和服装的,反馈还行。有兴趣的可以体验一下:https://zj.xinghepay.com ,Android 也有 APK https://media.xinghepay.com/xinghe/app/xhzj.apk

技术上有什么想聊的欢迎评论区交流,特别是视频处理和 TTS 这块,踩的坑比较多,能聊的也多

6 个帖子 - 5 位参与者

阅读完整话题

来源: linux.do查看原文