1. APP端实现
笔者调研了原生及跨端方案,加之控制成本的原因,选择了跨端Flutter的实现。
1)首页开发
笔者采用了慕客作为协作的UI标注平台,分析布局后,应采用的布局方式:
Scaffold 页面
Body使用整张图片铺满,以宽作为平铺依据
不规则位置头像采用 Stack 布局,预设最多30个位置,随机展示
底部BottomBar,采用定位方式,弧度背景为图片,添加按钮采用 ElevatedButton
具体代码细节如下(系列文章完结后,会把源码开源出来,留言评论的我提前发下)
2)收集智能体页面
还是先分析布局,半弹窗页面,底部能发送文字,整体为对话信息页面。
半弹窗采用 showModalBottomSheet 底部弹出给一定的透明度
对话部分采用Column + 滚动容器实现
语音模块采用端本身的原生TTS组件
关键代码细节如下:
3)实时交流页面
这块才是踩坑的开始,原来使用D-ID的时候,Demo是纯前端的方案,当时以为都是标准WebRTC,而且Flutter本身也有支持WebRTC的标准组件,就没太考虑端的兼容性问题。
实现后发现,不同的Android版本及IOS版本对原生WebRTC的支持都存在或多或少的兼容问题,最后决定更换对话为H5页面,采用端+H5方式解决兼容问题,关键代码如下:
其他零散页面,难度不大,就不着重说明了,下面是服务端的实现细节。
2. 服务端实现
笔者对JAVA,Go,Rust相对熟悉,但由于需要对接不同的模型及第三方sdk都是python的,Python服务端语言成本较低,小规模下优点更多。
语音TTS模块,采用了ElevenLab,声音克隆能力对比讯飞、微软TTS、火山引擎语音包后,效果较佳
对话交流模块,采用了GPT4,多轮对话及角色扮演对比,GLM3/文心一言/通义千问,效果较佳
整体流程,首先APP端语音转文字,通过Websocket传到后台,用GPT4 Assistant回复,得到的文字,在通过ElevenLab 转为语音,最后调用D-ID用声音驱动图片的口型(已经预感到整理流程会很冗长)
关键代码逻辑如下(关注下,后续开源出来):
至此,Demo版的开发完成了,下一步开始我们的内部吐槽环节。
五、Demo版内测
无比成就感的开发完APP端,H5端,服务端,开始和身边朋友进行内测:
假朋友A:男哥,说完话,咋1分钟才能响应
假朋友B:+1
假朋友C:+1
….
我:哎呀,我要先把语音转文字,文字给到GPT,GPT给我回复,我还要调接口生成语音,在通过语音驱动图片说话
假朋友D:啊,然后那,为什么这么慢呀
假朋友E:+1
假朋友F:+1
假朋友N:哎呦,辣鸡呀,这BUG太多了,男哥你不行呀,果然产品是不能参与研发的
我:。。。
于是开始了各种bug的修复,各种优化。
最后将每次的沟通响应缩短到30秒,汗!也是很慢,所以现在有俩条路,一是继续优化,或是自己训练模型,或是使用metahuman超写实模型,二是从产品角度改变思路。
六、产品改进调研
声音驱动口型技术调研综述
在探索声音驱动口型合成技术的过程中,我调研了几种主流技术,并评估了它们在实际应用中的性能和效果。
1. SadTalker
资源链接:[SadTalker GitHub](https://github.com/OpenTalker/SadTalker)
- **合作机构**:西安交通大学、腾讯AI实验室、蚂蚁集团。
- **特点**:该技术能够使静态头像动起来,实现声音驱动的口型动画。通过WebUI Colab试用后发现,处理速度较慢,且对输入图片质量要求较高,质量不佳的图片效果会大打折扣。
#### 2. Wav2Lip-GFPGAN
- **资源链接**:[Wav2Lip-GFPGAN GitHub](https://github.com/ajay-sainy/Wav2Lip-GFPGAN)
- **特点**:对视频文件的支持较好,GFPGAN还能修复不自然的口型。但对静态图片的支持一般,需要额外的开发工作。项目本身较为成熟,但在高性能硬件(如3080, 4080)上还需进一步优化并行处理能力。在B站看到有用户改造后效果尚可,但未能实现实时处理,存在一定延迟。
3. VideoReTalking
资源链接:[VideoReTalking GitHub](https://github.com/OpenTalker/video-retalking)
特点:个人感觉像是SadTalker的进阶版,对固定姿势的图像视频支持较好,但对静态图片的支持需要改造。对分辨率要求较高,且存在延迟问题,对于1分钟的视频,即使使用4080显卡,最佳情况下也有13秒的延迟。
4. MetaHuman
特点:虚幻引擎推出的超写实数字人类技术,能够全身驱动。对于已故亲人的视频和声音资料不足的情况,提取面部表情和身体特征较为困难,而对于在世的人则相对友好。可以考虑作为备选方案,通过3D建模优化后导入MetaHuman模型。
5. NVIDIA Omniverse Audio2Face
资源链接:[NVIDIA Omniverse Audio2Face](https://www.nvidia.cn/omniverse/apps/audio2face/)
特点:官网宣称能够即时从音频源创建面部表情动画,看似理想解决方案。但上手难度较高,且企业本地版价格昂贵,令人望而却步。
结论与未来计划
经过一周的调研,发现与真人相关的图像效果普遍不理想,因此决定改变调研思路,从游戏建模角度探索解决方案。文章系列完成后,计划将相关的原理、设计、源码、数据库等开源,以供社区进一步研究和开发。
未完待续...
本文由 @AI产品李伯男 原创发布于人人都是产品经理,未经许可,禁止转载。
作者:产品李伯男
来源网络博客
题图来自 Unsplash ,基于 CC0 协议,如有侵权,请联系VX:pmtalk123删除
品牌推广| 内容撰写|广告投放|培训合作
请添加微信 PMxiaowanzi
//PMTalk推荐的产品设计专栏//
如果你希望学习产品经理进阶内容,可以订阅PMTalk的《简易设计》专栏,系统学习我个人基于创业与10年产品经理经验的产品设计方法:简易设计,通过用户调研&研究、产品拆解、组合、产品迭代、框架定型5个步骤,助你构建产品知识框架,扫码订阅迈向顶级产品专家。