智能小管家实现过程

持续更新

Posted by Living on March 24, 2018

硬件设备

  • 树莓派3b
  • 小度个人版开发板(远场语音输入)
  • wifi模块
  • 继电器等

软件平台

  • 百度设备开放平台
  • 机智云平台
  • 树莓派系统
  • Python
  • 安卓
  • JAVA

设计要求

  • 模块化
  • 语音控制
  • 语音交流
  • 多媒体播放
  • APP控制
  • 可对现有家电升级

设计思路

  1. 语音控制 树莓派检测语音输入,语音输入完毕后,将语音上传至百度云,百度云返回语音文字内容,树莓派对语音文字进行分析,分析完毕后,调用机智云openapi接口向机智云服务器发送命令,机智云再将命令发送给终端设备。
  2. APP控制 用户通过手机APP想机智云服务器发送操控命令,机智云再将指令发送至终端设备。

设计过程

语音控制设计过程
  1. 树莓派调用百度设备技能测试。(已完成)

具有语音交流能力、多媒体播放能力、获取语音文字内容能力。

  1. 机智云SOS终端方案测试。 (已完成)

使用esp8266直接控制终端设备的能力。

  1. 在百度设备控制平台上编写自定义命令。(经测试,此功能无用)

  2. 树莓派对语言文字的处理(已完成)

树莓派对语音控制命令文字分析处理,获取用户的正确意图。

  1. 利用语音控制设备 (已完成)

用户在树莓派上利用语音控制远端的设备。

APP控制设计过程

还没开始开发。。。

  1. 手机APP DEMO测试

利用DEMO APP进行测试,保证设备与APP的通信正常。

  1. 手机APP设计

  2. 手机APP开发

  3. 手机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上。其他的会陆续跟上,初次写这种类型的文章,写的不好请大家多多包涵。

tu1