从0到1 用flutter完成AI产品

文摘   2024-12-24 09:02   四川  

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个步骤,助你构建产品知识框架,扫码订阅迈向顶级产品专家。

 











PMTalk产品经理社区
国内Top的产品经理社区,聚集21W人产品经理、运营、设计师等互联网人成长; 全国800+位产品领域大佬入驻签约作者; 每年举办70+场产品运营增长活动 ;你想知道的产品经理知识全部在这儿~
 最新文章