3回答

1收藏

[教程] 树莓派开源智能叮当音箱

Raspberry Pi Raspberry Pi 7492 人阅读 | 3 人回复 | 2019-01-13

      最近玩了下基于树莓派的智能音箱,之前买了树莓派3B一直在吃灰
       刚好双11买的ReSpeaker,双11打了8折64块买的,
      




不过好像和买的天猫精灵和小度价格差不多,都有些想把他们语音识别给拆下来玩

  

   

智能音箱配置
叮当——中文语音对话机器人
github地址https://github.com/wzpan/dingdang-robot

我这里是手动安装的,安装方法见
https://github.com/dingdang-robot/dingdang-robot/wiki/install
如果想尽快安装好,先进行必要文件的下载


其他按照相应的顺序安装就行

几个常见的问题解决方法

当上述的都安装完成的啃python 的几个组件
bs4
wiringpi
NetEaseApi




NetEaseApi  python库安装失败需要
unset http_proxy

如果需要控制智能家居,关于hass 的,安装hass的
配置这个不多说,主要一个问题 python 需要同个版本安装hass
不然智能家居就会控制不了,
我安装的hass是基于3.5 版本的,安装dingdang 用的是2.7版本
主要是编码问题
如果就想不同版本兼容控制,则需要对你更新下来的代码的中的hass.py 进行整改



hass.py 库上源码部分


        if 'dingdang' in attributes.keys():

            dingdang = attributes["dingdang"]

            if isinstance(dingdang, list):

                if text in dingdang:

                    try:

                        measurement = attributes["unit_of_measurement"]

                    except Exception as e:

                        pass

                    if 'measurement' in locals().keys():

                        text = text + "状态是" + state + measurement

                        mic.say(text, cache=True)

                    else:

                        text = text + "状态是" + state

                        mic.say(text, cache=True)

                    break

            elif isinstance(dingdang, dict):

                if text in dingdang.keys():

                    if isinstance(text, bytes):

                        text = text.decode('utf8')

                    try:

                        act = dingdang[text]

                        p = json.dumps({"entity_id": device["entity_id"]})

                        s = "/api/services/" + domain + "/"

                        url_s = url + ":" + port + s + act

                        request = requests.post(url_s, headers=headers, data=p)

                        if format(request.status_code) == "200" or \

                           format(request.status_code) == "201":

                            mic.say(u"执行成功", cache=True)

                        else:

                            mic.say(u"对不起,执行失败", cache=True)

                            print(format(request.status_code))

                    except Exception as e:

                        pass

                    break

    else:

        mic.say(u"对不起,指令不存在", cache=True)



def isValid(text):

    return any(word in text for word in [u"开启家庭助手",

                                         u"开启助手", u"打开家庭助手", u"打开助手",

                                         u"家庭助手", u"帮我"])


主要是编码导致的不能控制,这里需要把说的话通过

可以打印下  if text in dingdang: 里面的 text 和 dingdang 对比下就可以明确
这是我查询空气质量的一些打印信息,空气质量在里面但是编码不对,不能正常查询得到,需要调整编码格式 encode
[u'\u67e5\u770b\u7a7a\u6c14\u8d28\u91cf', u'\u5f53\u524d\u7a7a\u6c14\u8d28\u91cf', u'\u7a7a\u6c14\u8d28\u91cf']
空气质量。


智能家居控制需要直接喊得话,看代码可以明确,“帮我 打开..灯“
可以直接进行智能家居操作,打开智能家居模式状态进行控制太不灵敏了


以上是个人配置叮当智能音箱遇到的一些问题,简单分享下,有问题可以继续讨论

这个自己搭建的智能音箱可以随便改换唤醒词,这个功能还不错

视频简单分享下












关注下面的标签,发现更多相似文章

评分

参与人数 1与非币 +60 收起 理由
satoll + 60

查看全部评分

分享到:
回复

使用道具 举报

回答|共 3 个

倒序浏览

板凳

a313127226

发表于 2019-1-14 11:20:22 | 只看该作者

看看,学习一下
地板

newhope2019

发表于 2019-1-24 15:54:03 | 只看该作者

看来叮当加上麦克风模块识别效果和响应速度并没有多大提升
您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条