cvooc

人物语音视频合成项目设计

热门人物语音合成视频项目构想及设计

将热门人物名言视频切分多端视频,用户输入文本后,根据文本生成视频

构想

最近 B 站视频《张伟辩护,死刑起步》爆火,我蛮喜欢此类将人物视频语音剪切后重新拼接后的鬼畜视频的,于是突发想制作一个同类的鬼畜视频玩玩,不过我不是 UP 主,没有那么多素材也不会 Pr,只能通过自己熟悉的方式去做了:smirk:,经过一段时间的发散思考及调研后,于是有了本项目规划

进度日志

版本 进度 日期
0.0.1 初步构想,开始设计 2020 年 9 月 26 日

前期调研

本项目的重要难点在于如何知道视频内人物语言的内容,并获知具体发言时间.同时系统需要的语音来自于视频故无实时识别的需求,我首先想到的是目前各个云大厂商都有提供的语音转写功能.但初步调研了阿里云/百度云/腾讯云提供的语音转写功能后,我却发现他服务最终的返回是基于句子进行返回的,我们只能获知整条句子的开始及结束时间,无法更进一步获取具体分词所在时间轴,故无法实现目标功能.

不过语音识别嘛,怎么能少的了我们可爱的讯飞呢~~最终我们可爱的讯飞果然没有令我失望.讯飞提供的语音转写功能可以实现返回句子分词,并包含分词所在帧.

针不戳~ 唯一缺点就是有点小贵:dizzy_face:套餐一 88 元 10 小时/套餐二 980 元 200 小时,平均比友商同服务价格近贵了 2-8 倍,并且只支持套餐购买,无法按小时计费

好在新用户有 5 小时的试用时间:heart:(漏出了贫穷的微笑),初期开发验证我的构想够用了,先整再说!

呐~ 现在核心难题解决了,可以开始设计架构了

架构设计

相关需求 技术实现 备注
编程语言 Java8/node/electron 讯飞提供了 JavaSDK,故初步构想先以 Java 为骨架实现/考虑到前期服务器小水管上传下载撑不住,故改为 node+electron 实现,后期根据反应在移植为 web
识别语音分词及所在时间 讯飞语音转写服务腾讯云录音文件识别 选型条件仅一条:可以识别文字并返回词级别的时间帧即可,暂未找到合适的开源库,先用付费的顶着
视频相关提取音频/截段/合成新视频处理 ffmpeg 目前已知最符合需求

参考文章

node + fluent-ffmpeg 视频处理脚本 https://www.jianshu.com/p/25816cc8a6bc
ffmpeg 的 node 库 https://github.com/fluent-ffmpeg/node-fluent-ffmpeg