【2024 DigiKey创意大赛】RPI5翻译机---提交贴
[复制链接]
【2024 DigiKey创意大赛】RPI5翻译机---4 关于翻译机实现
时间过得很快,仿佛刹那间就到了RPI5翻译机项目提交的时候。
还好之前有做了一些树莓派4B系统上聊天机器人的开发测试,积攒了一些经验。和翻译机的流程比较起来,其实就是把和llama.cpp框架加速的大模型如开源的llama系列进行chat的流程,换为一个多语言翻译大模型例如NLLB就OK了。
顺便说一句,开源的大模型llama系列,和NLLB多语言翻译大模型都是来自meta公司的贡献,这里要给meta点个赞!
另外,对于语音交互系统设计的语音输入端来说,自动语音识别ASR/STT我选择由OpenAI公司开源的whisper大模型,它也是基于transform机制算法做识别的佼佼者,这里就不矫情了直接用上它作为语音输入端的解决方案。
最后,对于语音交互系统设计的语音输出端来说,语音合成系统TTS始终是个重大课题,同时呢可以选择的标的又不要太多了,选择也是个问题所在,综合各种因素的考虑我这里选择了piper-tts这个相对轻量级的TTS系统。毕竟我们的平台只是个树莓派5系统,而且只有4GB内存可用。
综合上述语音系统三大要素,一个嵌入式聊天机器人/翻译系统已经成型。
以上,就是我在前期考虑的结果,同时考虑到翻译大模型NLLB本身还要消耗不少内存甚至大于llama大模型的内存消耗,所以要看实测结果如何,来判断TTS系统是否还可以加上。假如把全部流程加起来跑,根本没有实时流畅的体验感,或者压根就跑不起来,那还是要去掉TTS系统,不考虑用语音来播放翻译结果,只是直接输出翻译后的文本text就好。
而且,基本需求是支持中英文互相翻译为主,其他语言语种暂时不做展开。
除了语音系统的核心功能和模块之外,还需要考虑一下关于界面UI的问题。如果只是一个聊天机器人,其实不用考虑啥,直接一个硬件按钮触发说话录音就好,这个按键就是mute按键。但是想实现翻译功能,那就需要更多的按键输入,全部用硬件按键不太合适,不如做点GUI图形界面输入模式。
GUI又有本机原生UI方式和web前端浏览器UI模式之分,如果想要同时兼容树莓派等嵌入式Linux系统,桌面端的笔记本和平板电脑,安卓手机平台甚至是云服务器平台的部署和运行,那最好还是加个webUI的壳子比较靠谱。
鉴于AI算法和大模型相关软件栈的关系,我这里采用了python模块Gradio5作为实现webUI的框架,同类型的还有dash等python模块,可选择的标的同样不少,这里就不展开了。
选择Gradio5模块还有一个主要原因是它就是huggingface自己开发并开源的,同时因为huggingface又提供了spaces托管服务,app开发完成后只要没有使用GPU加速,就可以方便而且免费的托管在huggingface的云平台上,进行远程测试等操作了。
注意,这里的关键词是免费,重要的事情说三遍,免费免费免费!
以上方案作为一个测试用的demo是足够了,产品级的聊天机器人或者翻译app当然不能这么设计实际的解决方案,应当做其他的技术选型和方案设计,这里不再展开。
下面,我采用了通义千问2.5-1.5B大模型作为chatbot后台,简单展示几个通过chrome浏览器访问树莓派5系统作为服务器,进行文本输入输出模式下的对话聊天流程图片,如下所示。
树莓派5系统的硬件图片如下图所示。
摄像头是为了后续进行videochat等应用模式准备,暂时还没开始。
树莓派5系统上,当按下mute按键开始说话录音,并进行whisper流式语音识别和千问2.5-1.5B大模型对话并由piper-tts生成答案的语音播放时,语音服务后台输出的log如下图所示。
PS:webUI浏览器界面上的语音音频audio输入输出模式,还有语音输入和文本输出的翻译机器模式,仍然正在紧张开发中ing!
|