如何用.NET开发跨平台AI语音对话客户端?
摘要:前言 前面几篇文章已经把机器人硬件控制部分的开发讲得差不多了,包括屏幕控制、舵机驱动、语音交互等功能。但是之前的外形太过简单,可动角度不够多,所以我就新改进了一个版本,叫VerdiBot(阿荫),详细视频介绍地址请点击链接。 ESP32社区
前言
前面几篇文章已经把机器人硬件控制部分的开发讲得差不多了,包括屏幕控制、舵机驱动、语音交互等功能。但是之前的外形太过简单,可动角度不够多,所以我就新改进了一个版本,叫VerdiBot(阿荫),详细视频介绍地址请点击链接。
ESP32社区最火的AI对话机器人非小智AI莫属了,所以为了让自己做的机器人对话部分也足够的生动我就重新实现了一个.NET版本的小智客户端,打算后期集成更多的功能,并整理成了一个完整的开源项目——Verdure Assistant(绿荫助手),这是一个基于.NET 9.0的多平台AI语音助手,支持Windows桌面、Android移动端、命令行以及Web API等多种使用方式。
这篇文章主要是给大家讲讲这个对话机器人项目的一些代码,方便想尝试的小伙伴快速上手体验。项目代码已经开源了,大家可以自己研究,遇到问题也欢迎提Issue讨论。
GitHub项目地址:https://github.com/maker-community/Verdure.Assistant
问题解答
Q: 之前为什么特意做树莓派wifi配网的功能?
A: 之前的博客有网友说我浪费生命开发wifi配网功能,我在评论区也有讲过原因,现在我在这里再讲一遍,因为有时候我们拿着设备到新环境的时候,并不能时刻有可用的显示器和鼠标键盘,但是又需要联网,这时就可以使用wifi配网了。然后ssh连接到设备上就可以像服务器一样控制了。
Q: 支持哪些AI服务?
A: 目前主要对接的是小智AI服务,后续计划支持更多AI服务的接入,包括OpenAI等。项目采用了抽象设计,扩展起来比较方便。
Q: 项目使用什么技术栈?
A: 核心使用.NET 9.0,跨平台UI用.NET MAUI,Windows桌面使用的WinUI 3。网络音频编解码用的OpusSharp库,音频录制播放使用的最近社区刚有人开源的的SoundFlow库,这个库功能完善,使用方便,并且内置了多种音频格式解码的播放,所以我用它替换了之前的PortAudioSharp2,网络通信基于WebSocket和MQTT(未测试)。详细的技术点在GitHub的README里都有说明。
Q: 为什么要重新实现这个项目?
A: 目前小智AI机器人有免费的服务端可以使用,而且整个架构都很优雅,对比我之前的实现优点很多,所以重新实现一个客户端对于用户体验有很大的帮助,并且协议是公开的,以后如果想自己拓展实现服务端也是很轻松的。
