查看: 1120|回复: 3

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

[复制链接]

主题

好友

2033

积分

进士

  • TA的每日心情
    开心
    2018-8-11 20:54
  • 签到天数: 262 天

    连续签到: 1 天

    [LV.8]以坛为家I

    发表于 2019-1-13 11:57:23 |显示全部楼层
          最近玩了下基于树莓派的智能音箱,之前买了树莓派3B一直在吃灰
           刚好双11买的ReSpeaker,双11打了8折64块买的,
           9fb200e1447f622a813cba1b01d76c6.jpg


    3355e843ccbff75727898d409529298.jpg


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

    c1a00fd6e2a5646f757ce40e3a8bb79.jpg
       177f194e4d8a502dc46ad741372d61a.jpg

       

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

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

    2019-01-13_101545.png

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

    几个常见的问题解决方法

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

    2019-01-13_103441.png



    NetEaseApi  python库安装失败需要
    unset http_proxy

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

    2019-01-13_110321.png


    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 人评分铜板 收起 理由
    satoll + 60

    总评分: 铜板 + 60   查看全部评分

    回复

    使用道具 举报

    主题

    好友

    6597

    积分

    管理员

    该用户从未签到

    发表于 2019-1-14 08:42:35 |显示全部楼层
    感谢分享
    回复

    使用道具 举报

    主题

    好友

    7

    积分

    白丁

    该用户从未签到

    发表于 2019-1-14 11:20:22 |显示全部楼层
    看看,学习一下
    回复

    使用道具 举报

    主题

    好友

    228

    积分

    秀才

  • TA的每日心情
    开心
    2019-3-26 16:41
  • 签到天数: 8 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    发表于 2019-1-24 15:54:03 |显示全部楼层
    看来叮当加上麦克风模块识别效果和响应速度并没有多大提升
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    关闭

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

    手机版|电路城

    GMT+8, 2019-5-26 04:09 , Processed in 0.148696 second(s), 21 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz!

    返回顶部