前言
前面几篇文章已经把机器人硬件控制部分的开发讲得差不多了,包括屏幕控制、舵机驱动、语音交互等功能。但是之前的外形太过简单,可动角度不够多,所以我就新改进了一个版本,叫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机器人有免费的服务端可以使用,而且整个架构都很优雅,对比我之前的实现优点很多,所以重新实现一个客户端对于用户体验有很大的帮助,并且协议是公开的,以后如果想自己拓展实现服务端也是很轻松的。
项目整体架构
目录结构
项目采用清晰的分层架构,便于理解和扩展:- Verdure.Assistant/ ├── src/ # 源代码 │ ├── Verdure.Assistant.Core/ # 核心库(音频、网络、服务) │ ├── Verdure.Assistant.ViewModels/ # 共享视图模型(MVVM) │ ├── Verdure.Assistant.Console/ # 控制台应用 │ ├── Verdure.Assistant.WinUI/ # WinUI桌面应用 │ ├── Verdure.Assistant.MAUI/ # MAUI移动应用 │ └── Verdure.Assistant.Api/ # Web API服务 ├── tests/ # 测试项目 ├── docs/ # 技术文档 └── scripts/ # 构建脚本
复制代码 GitHub项目地址:https://github.com/maker-community/Verdure.Assistant
核心功能模块
- 语音交互模块:使用微软的语音认知服务的关键词唤醒,加载关键词唤醒模型文件不需要Azure订阅("你好小电"/"你好小娜")
- src/Verdure.Assistant.Core/Services/WakeWords/KeywordSpottingService.cs
- 音频处理模块:Opus编解码、SoundFlow音频播放、跨平台音频录制
- src/Verdure.Assistant.Core/Services/Audio/AudioDataDistributor.cs
- src/Verdure.Assistant.Core/Services/Audio/OpusSharpAudioCodec.cs
- src/Verdure.Assistant.Core/Services/Audio/SoundFlowAudioPlayer.cs
- src/Verdure.Assistant.Core/Services/Audio/SoundFlowAudioRecorder.cs
- 网络通信模块:WebSocket实时通信、MQTT物联网协议
- src/Verdure.Assistant.Core/Services/Protocols/WebSocketClient.cs
- 状态管理模块:设备状态机、会话状态控制
- src/Verdure.Assistant.Core/Services/StateMachine/ConversationStateMachine.cs
- src/Verdure.Assistant.Core/Services/StateMachine/ConversationStateMachineContext.cs
- 音乐播放模块:集成酷狗/酷我API、在线播放和缓存
- src/Verdure.Assistant.Core/Services/KuwoMusicService
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |
|
|
|
相关推荐
|
|