如何用BotSharp框架在.NET中开发智能机器人实现语音交互?
摘要:前言 前段时间太忙了博客一直都没来得及更新,但是不代表我已经停止开发了,刚好最近把语音部分给调整了一下,所以就来分享一下具体的内容了。我想说一下,更新晚还是有好处的,社区已经有很多的小伙伴自己实现了一些语音对话功能的案例,比如小智也有.NE
前言
前段时间太忙了博客一直都没来得及更新,但是不代表我已经停止开发了,刚好最近把语音部分给调整了一下,所以就来分享一下具体的内容了。我想说一下,更新晚还是有好处的,社区已经有很多的小伙伴自己实现了一些语音对话功能的案例,比如小智也有.NET客户端了,还有就是一些树莓派对接实时语音api实现对话的功能,这些都是挺好的案例,很适合有兴趣的小伙伴来学习使用。
我做的还是比较传统的对话,通过Azure的语音服务进行关键字的训练,然后通过文本转语音和语音转文本再结合BotSharp智能体框架可以做到不集成小智服务实现对话的能力,并且拥有会话管理,提示词管理还有一些工具调用的能力。我已经迫不及待的想分享给大家了。
问题解答
为啥选择树莓派不是单片机
有朋友觉得树莓派价格贵,还说单片机就能完成开发之类的,我给大家说明下我们目前做的是针对Linux系统下的.NET的一些实践,如果觉得树莓派贵可以买一些国产的板子平替,有能力的可以自己搞库映射。至于单片机开发的事情,如果真的感兴趣单片机开发,那我们可以后期出一些文章讲这个做一些有趣的玩具。
表情播放目前的方案选择是啥
上一篇文章有讲什么是lottie动画,文章有说效果不好,但是我检查代码之后发现是代码写的有bug才导致播放很差,所以就不用转成文本的mp4了,lottie动画文件很小,适合放到板子上。
下图上面是在电脑上使用Lottie动画播放的效果。
名词解释
我是真的想让大家亲自上手试试,所以文章会讲一些基础的内容,大家不要嫌啰嗦,能看到这篇文章的小伙伴说明大家至少应该有个板子并且点亮了屏幕。
BotSharp
BotSharp 是一个开源的多智能体应用开发框架,从简单的聊天机器人,再到多智能体协作,以及复杂的任务如【Text To Sql】框架都提供了开箱即用的使用方法,可以快速的将大模型的能力接入到现有的业务系统中,并且内置知识库和会话管理功能等。
在我们的智能桌面机器人项目中,BotSharp提供会话管理和多智能体调用以及工具调用的功能。
BotSharp官方GitHub
BotSharp文档
Azure语音服务
Azure语音服务是微软提供的云端AI服务,支持语音转文本、文本转语音、语音翻译等功能。在我们的智能桌面机器人项目中,Azure语音服务用于将用户的语音指令转换为文本(用于理解用户意图)以及将机器人的文本回复转换为自然语音输出。此外,它还支持关键词识别功能,可用于唤醒我们的机器人。
Azure语音服务官方文档
.NET中使用Azure语音服务指南
关键词识别文档
ALSA
ALSA(Advanced Linux Sound Architecture)是Linux系统中的音频架构,提供了对声卡硬件的驱动功能和API。在树莓派等Linux设备上,ALSA是处理声音输入输出的基础系统。我们的机器人项目需要ALSA来管理麦克风输入和扬声器输出。
ALSA项目主页
ALSA Wiki
aplay
aplay是ALSA提供的命令行工具,用于播放音频文件。在Linux系统中,可以使用aplay命令来测试和播放各种格式的音频文件,验证扬声器是否正常工作。在我们的项目中,可以通过程序调用aplay来播放合成的语音文件。
aplay命令手册
arecord
arecord是ALSA的录音工具,用于从麦克风或其他音频输入设备捕获音频。在树莓派上,我们可以使用arecord来录制用户的语音,然后将录制的音频文件发送给语音识别服务进行处理。
arecord命令手册
使用arecord录音指南
amixer
amixer是ALSA提供的另一个命令行工具,用于控制音频混合器设置,如音量调节、输入输出设备选择等。在我们的机器人项目中,可以使用amixer来调整麦克风和扬声器的音量,确保语音交互体验良好。
amixer命令手册
准备工作
首先准备麦克风和喇叭
可以通过购买现成的声卡,接到树莓派上的USB口或者OTG口,并且根据上面的aplay和arecord工具测试麦克风和喇叭是否正常。
