硬件设备
- 树莓派3b
- 小度个人版开发板(远场语音输入)
- wifi模块
- 继电器等
软件平台
- 百度设备开放平台
- 机智云平台
- 树莓派系统
- Python
- 安卓
- JAVA
设计要求
- 模块化
- 语音控制
- 语音交流
- 多媒体播放
- APP控制
- 可对现有家电升级
设计思路
- 语音控制 树莓派检测语音输入,语音输入完毕后,将语音上传至百度云,百度云返回语音文字内容,树莓派对语音文字进行分析,分析完毕后,调用机智云openapi接口向机智云服务器发送命令,机智云再将命令发送给终端设备。
- APP控制 用户通过手机APP想机智云服务器发送操控命令,机智云再将指令发送至终端设备。
设计过程
语音控制设计过程
- 树莓派调用百度设备技能测试。(已完成)
具有语音交流能力、多媒体播放能力、获取语音文字内容能力。
- 机智云SOS终端方案测试。 (已完成)
使用esp8266直接控制终端设备的能力。
-
在百度设备控制平台上编写自定义命令。(经测试,此功能无用) -
树莓派对语言文字的处理(已完成)
树莓派对语音控制命令文字分析处理,获取用户的正确意图。
- 利用语音控制设备 (已完成)
用户在树莓派上利用语音控制远端的设备。
APP控制设计过程
还没开始开发。。。
- 手机APP DEMO测试
利用DEMO APP进行测试,保证设备与APP的通信正常。
-
手机APP设计
-
手机APP开发
-
手机APP测试
保证开发的APP能正常使用
代码实现流程
语音控制的流程
语音唤醒词唤醒 —> 语音输入 —> 上传用户音频至百度云分析 —> 百度云返回语音的文本 —> 对文本分析 —> 控制设备
摘要关键代码
def __handle_directive(self, directive):
global usertext
if 'directive_listener' in dir(self):
self.directive_listener(directive)
logger.debug(json.dumps(directive, indent=4))
#logger2.info(directive) #yonghu
#-------------------------------------------用户命令分析,控制调用----------------------------------------#
if directive['payload'].has_key('type'):
if directive['payload']['type'] == "FINAL": #yonghu
usertext = directive['payload']['text']
#logger2.info("---------usertext-----------") #yonghu
#logger2.info(usertext) #yonghu
if directive['payload'].has_key('url'):
if TextIn(usertext):
directive['payload']['url'] = u'cid:000000'
.......
语音交流的流程
语音唤醒词唤醒 —> 语音输入 —> 上传用户音频至百度云分析 —> 百度云返回回答的音频文件 —> 播放该音频文件
APP的控制流程
用户操作APP —> APP上传信息 —> 机智云下发至设备
更新待续
树莓派部分基本框架已经做好了,源码挂在我的GitHub上。其他的会陆续跟上,初次写这种类型的文章,写的不好请大家多多包涵。
