当前位置: 首页 > 编程日记 > 正文

叫你一声“孙悟空”,敢答应么?

640?wx_fmt=jpeg


整理 | 一一

出品 | AI科技大本营(ID:rgznai100)


随着自然语言理解等技术的发展,对话机器人如今盛行,而基于此的智能音箱产品的发展也异常火热。


很多开发者一般热衷于在一些对话机器人平台上开发相应的语音技能,但也有不少人希望自己尝试做一个对话机器人项目,不过他们往往苦于无从下手,或在开发过程中遇到困难中途就放弃了。


今天为大家介绍一款很有意思的对话机器人开源项目,它出现在了今天的 github trending 中,叫 wukong-robot(悟空机器人),或许会为你创建属于自己的对话机器人带来启发。


640?wx_fmt=png


wukong-robot 是一个简单、灵活的中文语音对话机器人/智能音箱项目,作者开源该项目的目的是让中国的 Maker 和 Haker 们也能快速打造个性化的智能音箱。


该项目创建者是有 5 年客户端开发经验的腾讯高级工程师潘伟洲,现为腾讯 ABCmouse 技术负责人。


目前,该项目在 GitHub 上总计收获超 1000 多个 Star,另据@潘伟洲HaHack 在其个人微博介绍,此前“dingdang-robot” 的调用次数已经超过了十二万,在超过一千台设备中运行


wukong-robot 项目创建于 2017 年底,它的前身是“dingdang-robot”项目(与腾讯叮当助手及优必选悟空项目无任何关系),后来由于需要提供一个更快、更稳定、更容易搭建的机器人,同时兼容“dingdang-robot”的插件机制,今年 1 月,作者重写了项目版,并宣布不再维护“dingdang-robot”。


潘伟洲介绍,相比 dingdang-robot,这个版本抛弃了复杂的 PocketSphinx 离线唤醒机制,能够在更多平台上运行,无论是响应速度、稳定性和代码质量都有了质的提升。更重要的是还提供了可视化的后台管理端和开放 API,未来将提供 docer 镜像和基于的 flutter 客户端。


近日,wukong-robot 项目上线了官方文档,对该项目进行了详尽介绍。


640?wx_fmt=png


总体而言,wukong-robot 项目主要由以下主要特性:


  • 模块化。功能插件、语音识别、语音合成、对话机器人都做到了高度模块化,第三方插件单独维护,方便继承和开发自己的插件。

  • 中文支持。集成百度、科大讯飞、阿里、腾讯等多家中文语音识别和语音合成技术,且可以继续扩展。

  • 对话机器人支持。支持接入图灵机器人、Emotibot 等对话机器人。

  • 全局监听,离线唤醒。支持无接触地离线语音指令唤醒。

  • 灵活可配置。支持定制机器人名字,支持选择语音识别和合成的插件。

  • 智能家居。支持和 mqtt、HomeAssistant 等智能家居协议联动,支持语音控制智能家电。

  • 后台配套支持。提供配套后台,可实现远程操控、修改配置和日志查看等功能。

  • 开放 API。可利用后端开放的 API,实现更丰富的功能。

  • 安装简单,支持更多平台。相比 dingdang-robot ,舍弃了 PocketSphinx 的离线唤醒方案,安装变得更加简单,代码量更少,更易于维护并且能在 Mac 以及更多 Linux 系统中运行。


wukong-robot 的工作模式也非常易于了解:


640?wx_fmt=jpeg


wukong-robot 被唤醒后,用户的语音指令先经过 ASR 引擎进行 ASR 识别成文本,然后对识别到的文本进行 NLU 解析,再将解析结果进行技能匹配,交给适合处理该指令的技能插件去处理。插件处理完成后,得到的结果再交给 TTS 引擎合成成语音,播放给用户。


640?wx_fmt=png


虽然一次交互可能包含多次网络请求,不过带来的好处是:每一个环节都可以被修改和定制。


环境要求


需要注意的是,wukong-robot 只支持 Python 3.x,不支持 Python 2.x。wukong-robot 支持运行在以下的设备和系统中:


  • 64bit Mac OS X

  • 64bit Ubuntu(12.04 and 14.04)

  • 全系列的树莓派(Raspbian 系统)

  • Pine 64 with Debian Jessie 8.5(3.10.102)

  • Intel Edison with Ubilinux (Debian Wheezy 7.8)


如何安装?官方提供了选择 docker 安装或者手动安装两种方式。安装链接:https://wukong.hahack.com/#/install


升级


python3 wukong.py update


如果提示升级失败,可以尝试在 wukong-robot 的根目录手动执行以下命令,看看问题出在哪。


git pull

pip3 install -r requirements.txt


运行


建议在 tmux 或 supervisor 中执行。


python3 wukong.py


第一次启动时将提示你是否要到用户目录下创建一个配置文件,输入 y 即可。然后通过唤醒词 “孙悟空” 唤醒 wukong-robot 进行交互(该唤醒词可自定义)。要让 wukong-robot 暂时屏蔽离线监听,可以使用热词 “悟空别吵”;要让 wukong-robot 恢复离线监听,可以使用热词 “悟空醒醒”。


此外,wukong-robot 默认在运行期间还会启动一个后台管理端,提供了远程对话、查看修改配置、log 等能力。


  • 默认地址:http://localhost:5000

  • 默认账户名:wukong

  • 默认密码:wukong@2019


配置


参考配置文件的注释进行配置即可。注意不建议直接修改 default.yml 里的内容,否则会给后续通过 git pull 更新带来麻烦。你应该拷贝一份放到 $HOME/.wukong/config.yml 中,或者在运行的时候按照提示让 wukong-robot 为你完成这件事。


tips:


  • 建议在运行 wukong-robot 的机器上重新训练一下唤醒词,不同设备录制出来的唤醒词模型使用效果会大打折扣。

  • 不论使用哪个厂商的API,都建议注册并填上自己注册的应用信息,而不要用默认的配置。这是因为这些API都有使用频率和并发数限制,过多人同时使用会影响服务质量。


此外,wukong-robot 上还有相应的技能插件,由官方和用户共同提供,官方技能插件目前包括检查邮件、写诗等功能,而用户则提供了大部分的技能插件,包括查询天气、头条新闻、电台等技能。


值得一提的是,项目作者给用户提供了福利,给出了技能开发的实战教程,一步步教你如何上手并学会开发 wukong-robot 的技能插件。教程目前有 1 个基础篇和 5 个实战篇,包括开发清除缓存技能、天气查询技能以及沉浸式播放技能,可在官方文档中点击查看。


对了,wukong-robot 的默认唤醒词是“孙悟空”,你可能不太喜欢,这当然也可以进行修改。“猴哥猴哥”似乎更可爱接地气,你可以在 snowboy官网(https://snowboy.kitt.ai/) 进行修改成你喜欢的任意唤醒词,然后将生成的 pmdl 文件放到 ~/.wukong,修改配置文件中的 hotword 配置即可。


猴哥猴哥,安装一个玩玩?


GitHub 传送门:

https://github.com/wzpan/wukong-robot


(本文为 AI科技大本营整理文章,转载请微信联系 1092722531)

精彩推荐

640?wx_fmt=jpeg

640?wx_fmt=jpeg

推荐阅读:

  • 31页PPT概述:图神经网络表达能力有多强?

  • NLP输出文本评估:使用BLEU需要承担哪些风险?

  • 如何用Python抠图?试试scikit-image

  • 《流浪地球》逆袭《新喜剧之王》的真正原因

  • 那些简历造假拿 Offer 的程序员,后来都怎么样了?

  • 郑州没有互联网 | 畅言

  • K8S安全军规101:对CNCF最佳实践的扩充

  • 为什么说稳定币才是诺奖得主哈耶克想要的非国家货币?

  • 月入5万,程序员夫人们过上"贵妇"生活了吗?

640?wx_fmt=png

点击“阅读原文”,查看历史精彩文章。

相关文章:

【linux】Matchbox(一):启动脚本

脚本执行顺序 启动X服务器 /etc/rc5.d/S01xserver-nodm --> …/init.d/xserver-nodm–> 对应进程: /bin/sh /etc/rc5.d/S01xserver-nodm start background xinit /etc/X11/Xsession–> 对应进程: xinit /etc/X11/Xsession – /usr/bin/Xorg …

java试用(1)hello world

设置环境变量path H:\soft\j2sdk1.4.2_17\bin;H:\soft\eclipse;%path%set CLASSPATH.;H:\soft\j2sdk1.4.2_17\jre\lib;JAVA_HOME: D:\jdk1.5.0PATH: D:\jdk1.5.0\bin;编写程序 Noname1.java (注意:文件名要和class名一样)class Noname1 { public static void…

GAN性能不稳?这九大技术可“镇住”四类缺陷

作者 | Bharath Raj译者 | ang010ela编辑 | 一一出品 | AI科技大本营尽管 GAN 领域的进步令人印象深刻,但其在应用过程中仍然存在一些困难。本文梳理了 GAN 在应用过程中存在的一些难题,并提出了最新的解决方法。使用 GAN 的缺陷众所周知,GAN…

java正则表达式获取指定两个字符串之间内容

xml解析利用正则表达式获取指定两个字符串之间内容 在遇到解析复杂xml的时候,想到大家所想到的都是利用dom4j作为首发工具,但是当遇到层次很多,较为复杂,我们难道还需要从根节点一层一层的解析下去吗?此时不仅代码繁琐…

【linux】Matchbox(二):基本概念

X server X server是Linux系统里面图形接口服务器的简称。Windows系统的界面是这个系统不可分割的一部分,各种窗口操作界面显示都是由系统核心直接管理的,而Linux的图形界面并不是系统的必要组成部分,它可以在无界面的条件下运行。当需要Lin…

Android 控件之ImageSwitcher图片切换器

ImageSwitcher是Android中控制图片展示效果的一个控件,如:幻灯片效果...,颇有感觉啊。做相册一绝 源码下载 一、重要方法 setImageURI(Uri uri):设置图片地址 setImageResource(int resid):设置图片资源库 setImageDra…

【Qt】Qt5.x移植后的环境配置(imx6)

1、环境配置脚本如下 #!/bin/shexport QTDIR=/usr/lib/qt5 export QT_QPA_PLATFORM_PLUGIN_PATH=$QTDIR/plugins export QT_QPA_PLATFORM=eglfs:fb=/dev/fb0 export QT_QPA_GENERIC_PLUGINS=evdevtouch:/dev/input/event1 export QT_QPAFONTDIR=/usr/lib/fonts export QML2_IM…

程序员如何避免“滴滴式裁员”悲剧?

作者 | 徐麟转载自数据森麟(ID:shujusenlin)滴滴于2月15日正式发表裁员公告,想必很多互联网人的朋友圈都已经被这条消息刷屏了,其中最常见的莫过于下面这张图了:此图一出,广大互联网吃瓜群众不禁后背发凉&a…

windows服务搭建及命令总结

1、图解FTP服务器搭建(Windows Server 2008) https://wenku.baidu.com/view/803bdc1759eef8c75fbfb361.html?fromsearch https://www.cnblogs.com/john2017/p/6269671.html 2、WindowsServer2008下搭建ApachePHPMySQL https://wenku.baidu.com/view/2e82b99ea1116c175f0e7cd18…

Linux下的CST和UTC时间的区别

在linux中,用date查看时间的时候显示:2008年 12月 17日 星期三 09:04:14 CSTCST China Standard Time UTC8:00 中国沿海时间(北京时间)世界协调时间(Universal Time Coordinated,UTC)GPS 系统中有两种时间区分,一为UTC,另一为LT&a…

Python之父重回决策层,未来如何发展?

作者 | 豌豆花下猫来源 | Python猫(ID:python_cat)春节假期结束了,大家陆续地重回到原来的生活轨道上。假期是一个很好的休息与调节的机会,同时,春节还有辞旧迎新的本意,它是新的轮回的开端。在…

【Android】adb命令总结

1、adb version 显示ADB工具版本 2、adb devices 查询设备&#xff0c;显示设备序列号 3、adb sideload < file_location> 通过USB进行ROM刷机 4、adb install < apk文件路径> 安装APK 5、adb uninstall <软件名> 卸载软件 6、adb push <本地路径>…

MySQL中char与varchar的区别

字符与字节的区别 一个字符由于所使用的字符集的不同&#xff0c;会并存储在一个或多个字节中&#xff0c;所以一个字符占用多少个字节取决于所使用的字符集注意&#xff1a;char与varchar后面接的数据大小为存储的字符数&#xff0c;而不是字节数&#xff08;其实是5.0版本以上…

怎样在Red Hat Enterprise Linux 5.4版本上安装GCC?

注意&#xff1a;如果打算使用GUI的方式安装&#xff0c;需要导入GPG-Key(否则在使用GUI时会出现public key for *.rpm is not installed) 请切换到安装光盘目录下&#xff1a; cd /media 可以看到 RHEL* 的目录&#xff0c;然后切换到这个目录中&#xff1a; cd RHEL* 你需要运…

【C++】mingw32-make+cmake:error: ‘nullptr‘ was not declared in this scope解决方法

###问题 使用cmake成功&#xff08;Configuring done Generating done&#xff09;后&#xff0c;在cmd终端中执行 mingw32-make报错&#xff1a; error: nullptr was not declared in this scope###原因 nullptr是在c11的新内容。编译时&#xff0c;没有添加对C11的支持。 解…

喜得爱女,吴恩达深情撰文:欢迎你来到新世界!

整理 | 琥珀出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09;一个月前&#xff0c;吴恩达冷不丁在Twitter放出了重磅消息&#xff1a; “我们的最新‘成果’ Baby Ng 即将诞生&#xff01;2019 年 2 月见面&#xff01;”果然&#xff0c;昨日吴恩达公开了首个小公主降…

FastJson 简单使用

对象、List转JsonUser user new User(); /*JSON 序列化&#xff0c;默认序列化出的JSON字符串中键值对是使用双引号&#xff0c;如果需要单引号的JSON字符串&#xff0c; [eg:String jsonString JSON.toJSONString(map, SerializerFeature.UseSingleQuotes);] *fastjson序…

【数据安全案例】交警计算机系统再遭***,交通违法记录随意删除

根据新浪报道&#xff0c;据新华社10月14日电 利用当网管的机会&#xff0c;破解密码&#xff0c;非法进入交警计算机系统为他人删除车辆交通违法记录牟利。辽宁省鞍山市铁西区检察院透露&#xff0c;当地某公司员工程尚军因涉嫌破坏计算机信息系统罪&#xff0c;已于10月初被依…

开源,还能走多远?

【编者按】在各大厂纷纷拥抱开源的当口&#xff0c;“开源代码面临可持续发展危机”的言论也甚嚣尘上。早期&#xff0c;技术爱好者们“用爱发电”&#xff0c;“他们知道在出问题前&#xff0c;没人会注意到他们&#xff0c;没人会重视他们”。但遗憾的是&#xff0c;很长一段…

使用axis开发web service服务端

一、axis环境搭建 1.安装环境 JDK、Tomcat或Resin、eclipse等. 2.到 http://www.apache.org/dyn/closer.cgi/ws/axis/1_4 下载Axis的jar包 3.将Axis的jar包放入WEB-INF/lib目录下 二、编写web service服务端 1.编写服务 package com.webservice;public class HelloWebservice {…

【Qt】qt打印文件名、函数名、行号

#include <QDebug> #define MyDebug qDebug()<<"[FILE:"<<__FILE__<<",LINE"<<__LINE__<<",FUNC"<<__FUNCTION__<<"]

【Qt】Qt项目常用代码总结

路径 获取当前路径 #include <QCoreApplication> QString appDirPath QCoreApplication::applicationDirPath(); 转换成对应系统路径 返回路径名&#xff0c;使分隔符转换为适合底层操作系统的分隔符。 windows下为“\”; linux下为“/” #include <QDir> a…

滴滴裁员补偿丰厚,员工称裁出幸福感?

整理 | 一一出品 | AI科技大本营&#xff08;rgznai100&#xff09;滴滴裁员的“靴子”正在逐步落地。据《财经》报道&#xff0c;滴滴近日已给出裁员的具体赔偿方案&#xff1a;补偿一般为 N1 个月&#xff0c;如果本周能确认&#xff0c;再额外给一个月补偿——这一个月补偿是…

shell编程基础

1. 程序的执行风格 程序编程风格&#xff1a;过去式&#xff1a;以指令为中心&#xff0c;数据服务于指令。对象式&#xff1a;以数据为中心&#xff0c;指令服务于数据。过程式编程有以下特点&#xff1a;1&#xff09; 顺序执行&#xff1a;指程序在执行的过程中&#xff0c;…

【Qt】QImage使用总结

图像格式转换 由 RGB 格式转换成 BGR 格式 QImage::rgbSwapped() 返回一个QImage,其中所有像素的红色和蓝色组件的值被交换,有效地将RGB图像转换为BGR图像。 QImage image(fileName); QImage bgr = image.rgbSwapped();将彩色图转换成 灰度图 使用QImage::convertToForma…

访问量最高超7百万的Stack Overflow问题竟然是...

整理 | Jane出品 | AI科技大本营&#xff08;公众号id&#xff1a;rgznai100&#xff09;Stack Overflow&#xff0c;一个面向开发者的 IT 技术问答网站&#xff0c;很多程序员都会在上面提问&#xff0c;浏览问题&#xff0c;查找技术知识。在 Top Question 页面&#xff0c;我…

CentOS 6.9下配置安装KVM

注意&#xff1a;KVM一切安装和运行都是在root用户下完成的&#xff0c;并且只有root才能支持某些软件。 一、准备工作&#xff1a; 1、查看系统版本、内核版本 ##查看系统版本 # cat /etc/redhat-release CentOS release 6.4 (Final) ##查看内核版本 # uname -a Linux KVM 2.6…

感觉要大病一场了

呵呵&#xff0c;这两天很累&#xff0c;再加上天气的原因&#xff0c;整个人晕乎乎的&#xff0c;其实很累&#xff0c;可就是睡不着&#xff0c; 其实我不知道是身体的累&#xff0c;还是心累了&#xff0c;总之&#xff0c;整个人就是提不起做事的激情来一个人就这样浑浑噩噩…

【视频】使用VLC采集摄像头,以RTSP协议发送流到网络上

VLC官网 http://www.videolan.org/ VLC3.0.1搭建失败 本人使用VLC3.0.1,搭建失败,总报无法打开URL VLC2.1.5搭建成功 VLC2.1.5官网地址及下载地址 www.videolan.org/vlc/releases/2.1.5.html http://get.videolan.org/vlc/2.1.5/win32/vlc-2.1.5-win32.exe 搭建RTSP …

优质中文NLP资源集合,做项目一定用得到!

整理 | Jane出品 | AI科技大本营&#xff08;公众号id&#xff1a;rgznai100&#xff09;今天要给大家在推荐 Github 上一个优质的中文 NLP 工具和资源集合项目——funNLP&#xff0c;已经获得了 5.3k Stars&#xff0c;1k Forks。项目作者 杨洋&#xff0c;一枚水博&互联网…