科普讲解、展厅宣讲、课程口播——这类内容最耗时间的不是创意,而是「写稿 + 录制 + 剪辑」的重复劳动。这个项目把这条链路做成了一个可运行的系统:写稿、审核、选形象、生成视频、沉淀问答,全在一个平台里完成。
这是做什么的?
简单说:输入一段讲解文案,选一个数字人形象和背景场景,平台就会调度第三方数字人服务,把这段文字合成成一条带口型、带语音的讲解视频。
围绕这条主线,平台补齐了真实项目必须有的东西——脚本库、审核流、任务队列、作品库、知识库问答、互动数据、后台看板,做成了一个能直接交付使用的系统。
前台首页:数据看板 + 精选脚本 + 热门榜 + 形象库
亮点一:脚本库与审核流打通
脚本不是散落在文档里的文本,而是平台的一等公民:分类管理、投稿审核、通过后进入公共脚本库,其他用户可以直接一键选用生成视频。
· 五态流转:草稿 → 待审核 → 已通过 / 已驳回 / 已下架
· 驳回必须填写原因,作者在「我的发布」能看到具体审核意见
· 全文检索基于 MySQL 的 ngram 分词,中文搜索不用额外装 ES
· 支持最新 / 最热 / 最多收藏三种排序,热度由浏览、有用、收藏加权计算
脚本广场:分类筛选 + 关键词检索 + 收藏
亮点二:四步创作,进度实时可见
创作页把「选形象 → 选场景 → 写文案 → 调参数」做成了四步引导,右侧常驻效果预览,改一个选项就能立刻看到合成后的画面构成。
提交后走的是异步任务模型:后端落库、提交第三方、定时轮询、完成自动入库;前端以 Step 步骤条 + 进度百分比展示,用户不需要守着页面等。
· 文案 20–3000 字校验,敏感词实时拦截
· 60 秒幂等键 + Redis 滑动窗口限流,避免重复提交与刷额度
· 语速 0.5–2.0 倍可调,三种播报风格对应不同断句节奏
· 失败任务自动返还额度,并支持一键重试
创作页:左侧配置,右侧实时预览
亮点三:作品库就是任务中心
所有提交过的任务都在作品库:生成中的显示实时进度,已完成的可直接播放与下载,失败的展示具体原因并可重试,不需要在聊天记录里翻任务号。
我的作品:状态筛选 + 进度 + 播放/下载/重试/删除
亮点四:问答用的是双层匹配
很多项目的「智能问答」只是把问题丢给大模型,答案不稳定还容易编。这里做成两层:先查本地 FAQ 知识库,命中就直接返回标准答案;没命中再走大模型兜底,并且把生成的答案自动送进待审核队列,人工确认后才进知识库。
· 第一层:问题包含 + 标签加权 + bigram 相似度打分,35 分以上判定命中
· 第二层:大模型兜底,可后台一键开关,未配置 Key 时自动降级为固定话术
· 每次问答都落库,记录命中类型、相关度、耗时,后台可直接分析
· 满意的答案可以「用数字人播报」,一键带入创作页
智能问答:命中来源明确标注,回答可转视频
亮点五:后台不是摆设
后台把运营真正要用的功能都做了:数据看板、用户管理、内容审核、FAQ 维护、举报处理、素材维护、系统配置、操作日志。
· 看板:近 30 天生成趋势、成功率仪表盘、形象使用占比、分类分布、热门脚本与高频提问 Top10
· 审核:脚本与 FAQ 双类型,支持快捷驳回理由,审核记录可追溯
· 配置:第三方 API、大模型开关、审核策略、站点公告、限流阈值,改完即时生效
· 日志:后台写操作通过 AOP 自动落库,谁在什么时候改了什么一目了然
数据看板:趋势、成功率、形象占比、分类分布
亮点六:手机也能用
前台做了三档响应式断点,导航在窄屏收起为抽屉,列表自动降列,详情页侧栏下沉,手机上提交任务、看进度、提问都不需要缩放页面。
移动端:导航抽屉 + 单列卡片 + 触控友好的按钮
几个值得说的技术细节
Redis 在这个项目里不是「为了用而用」,每一处都对应一个具体问题:
· ZSet 做热门脚本榜、高频提问榜、形象使用榜,天然支持分数累加与 Top N
· Hash 缓存字典与 FAQ,空值用占位符写入,避免缓存穿透
· Set 做收藏与点赞去重,数据库唯一索引作为最终事实
· String + TTL 做任务幂等键与登录令牌,登出即失效
· Lua 脚本实现 ZSet 滑动窗口限流,原子操作不存在并发漏洞
技术栈一览
后端SpringBoot 2.7 + JDK8 + MySQL8 + Redis + MyBatis-Plus + JWT
前端Vue2.7 + Element UI + ECharts + Vite(PC 与移动端自适应)
能力对接第三方数字人开放 API(含模拟通道,本地无 Key 也能跑通)
— 猿码技术库 · apecode.ltd —