1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 如何用树莓派做一个家庭语音助手/智能音箱

如何用树莓派做一个家庭语音助手/智能音箱

时间:2020-11-20 10:25:20

相关推荐

如何用树莓派做一个家庭语音助手/智能音箱

一、前言

这学期闲来无事,于是搞了个简单的家庭语音助手,其主要实现的功能有:

语音唤醒;控制家电;询问时间和日期;询问天气情况;查询垃圾分类;播报新闻;微信小程序远程控制

以下是为实现上述功能所需的底层基础:

语音合成、语音识别、多机通信、微机控制、python编程

二、底层基础实现

1)语音合成

如需了解,请移步我的另一篇博客:

《百度AI 开放平台 >>> 语音合成》

2)语音识别

如需了解,请移步我的另一篇博客:

《百度AI 开放平台 >>> 智能语音识别》

3)多机通信

可以选择使用单片机和树莓派各自的串口进行通信。

4)微机控制

就是一些单片机方面的控制,包括电平控制和输出脉冲控制,可以参照我之前的有关stm32 单片机的使用的博客:

/weixin_40973138/category_9282952.html

5)python编程

用树莓派最好还是使用python,比较方便,支持度也比较高。

三、主要功能实现

1)语音唤醒

所采用方案请参见我的另一篇博客 👉 《如何为DIY的智能音箱赋予语音唤醒能力》

实现方案:让单片机控制声音传感器,等待周围声音的触发。当检测到周围有达到一定分贝的声音时,便认为可能有用户正在对语音助手进行呼唤,于是通过串口发送指令给树莓派,树莓派接收到指令后便开始录音,当检测到音频中有关键词信息时,则可以确认是用户的呼叫,这样就实现了语音唤醒功能。

不过这个方案也有着一定的不足之处:在声音传感器检测声音信号到树莓派开始录音这一段时间不算太短,所以我们可能在喊关键词之前要先激活树莓派,等树莓派开始录音之后再喊关键词。

2)控制家电:

实现方案:树莓派检测到音频中有控制家电的关键词信息(例如开灯、关窗等),则通过串口发送指令给单片机,随即单片机通过控制电平或其他通讯方式控制家电。

3)询问时间和日期

实现方案:树莓派检测到音频中有询问时间或日期的关键词信息,调用python的datetime库的datetime.now()time库的time.localtime(time.time())获得当前时间和日期,然后再通过语音合成将时间日期播报出来。

4)询问天气情况

可使用:和风天气API,只需要注册一个开发者账户,然后按照其开发文档的要求格式进行数据请求:

# 深圳https://free-/s6/weather/now?location=shenzhen&key=2e3adxxxxxxxxxxxxxxxxxxa704c2

然后把数据中的天气信息拿出来即可。

实现方案:树莓派检测到音频中有询问天气情况的关键词信息,通过调用和风天气API 获得某地天气信息,然后再通过语音合成将某地天气情况播报出来。

5)查询垃圾分类

可使用:/api/rubbish/type?name=,只需要在这个url后面添加想要查询的垃圾名称即可,例如香蕉皮:

/api/rubbish/type?name=香蕉皮

返回结果:

然后把其中的垃圾类别拿出来即可。

实现方案:树莓派检测到音频中有查询垃圾分类的关键词信息,通过调用查询垃圾分类API 获得垃圾类别信息,然后再通过语音合成将该垃圾所属类别播报出来。

6)播报新闻

可使用:/public-apis/public-apis,其中包括查询新闻的API

实现方案:树莓派检测到音频中有询问新闻的关键词信息,通过调用查询新闻API 获得某类新闻信息,然后再通过语音合成将新闻播报出来。

有时说不定还要汉字转拼音什么的,可以用天行数据API

7)微信小程序远程控制

我们知道,当树莓派连接家庭WiFi 时,其并不具备公网IP,所以为了让微信小程序能够远程控制树莓派,从而控制家电的目的,我们需要对树莓派进行内网穿透,该过程可以参考我之前写到博客:

《树莓派 >>> 端口映射到公网》

如此一来,在我们的小程序端向该公网端口发送数据,我们的服务器就能够将数据转发至树莓派,从而实现控制局域网树莓派的功能。

四、额外功能拓展

为语音助手赋予视觉能力,担当家庭守门人工作 👇

《如何用树莓派制作一个可语音交互的家庭智能监控》

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。