wukong-robot
综合介绍
wukong-robot 是一个为创客(Maker)和极客(Hacker)设计的开源中文语音对话机器人项目。它允许用户利用树莓派等硬件,快速构建一个个性化的智能音箱。这个项目的核心在于其高度的模块化和灵活性,用户可以自由选择和组合不同的功能插件、语音识别(ASR)引擎和语音合成(TTS)技术。它支持包括百度、阿里、腾讯、科大讯飞在内的多种中文语音服务,并集成了ChatGPT等先进的对话模型,实现了流畅的多轮对话。wukong-robot 的独特之处在于它支持离线唤醒,并且是首个支持脑机接口唤醒的开源智能音箱项目。项目还提供了一个配套的Web后台,方便用户进行远程控制、配置修改和日志查看。通过开放的API,开发者可以轻松地将wukong-robot与智能家居设备(如HomeAssistant)或其他应用进行联动,实现更丰富的应用场景。
功能列表
- 高度模块化: 功能插件、语音识别、语音合成和对话机器人各自独立,便于开发者定制和扩展。
- 丰富的中文语音支持: 集成了百度、科大讯f讯、阿里、腾讯、OpenAI Whisper、微软Edge等多种中文语音识别和合成技术。
- 强大的对话能力: 支持接入ChatGPT、图灵机器人等在线对话模型,也支持本地对话机器人。
- 离线语音唤醒: 支持Snowboy和Porcupine两套离线唤醒引擎,保证了低延迟和隐私性,同时支持脑机等多种新颖的唤醒方式。
- 灵活的配置选项: 用户可以自定义机器人的名字、选择不同的语音技术插件。
- 智能家居集成: 支持通过MQTT、HomeAssistant等协议与智能家居设备联动,可用语音控制家电。
- Web后台管理: 提供配套后台,用户可通过网页远程操控机器人、修改配置和查看运行日志。
- 开放API接口: 后台开放Web API,允许开发者通过Restful方式进行调用,扩展更多功能。
- 跨平台支持: 能在macOS、多种Linux发行版(如Ubuntu、Raspbian)以及通过WSL在Windows上运行。
使用帮助
wukong-robot的设计目标是让用户能够轻松上手,通过简单的步骤打造属于自己的智能音箱。以下是详细的安装和使用流程。
环境要求
在开始安装前,请确保你的设备满足以下条件:
- Python版本: 需要
Python 3.7
或更高版本,但不支持Python 3.10
及以上版本。 - 操作系统与硬件:
- 搭载Intel芯片的Mac(不支持M1芯片)
- 64位的Ubuntu 12.04 / 14.04
- 全系列树莓派(Raspbian系统)
- 装有WSL(Windows Subsystem for Linux)的Windows系统
安装流程
wukong-robot的安装过程已经大大简化。
第一步:克隆项目代码打开终端,进入你希望存放项目的目录,然后执行以下git命令从GitHub克隆项目:
git clone https://github.com/wzpan/wukong-robot.git
第二步:进入项目目录
cd wukong-robot
第三步:安装依赖项目所需的Python库都记录在requirements.txt
文件中。执行以下命令进行安装:
pip3 install -r requirements.txt
如果在此过程中遇到依赖库安装失败的问题,通常是由于缺少系统级的依赖包。例如,在Debian系的Linux(如Raspbian和Ubuntu)上,你可能需要先安装以下这些包:
sudo apt-get install portaudio19-dev libatlas-base-dev libsm6 libpangocairo-2.0-0 libpangox-1.0-0 libpango-1.0-0 libpangoft2-1.0-0 libqtgui4 libqtwebkit4 libqt4-test
配置机器人
配置是使用wukong-robot最关键的一步。所有配置都通过一个名为config.yml
的文件进行管理。
- 生成配置文件:首次运行wukong-robot时,系统会提示你是否需要在用户主目录下创建一个配置文件。输入
y
并按回车,系统会自动将默认的default.yml
模板复制到~/.wukong/config.yml
。不建议直接修改default.yml
,因为这会给后续的项目升级带来冲突。 - 修改配置文件:使用你喜欢的文本编辑器打开
~/.wukong/config.yml
文件。文件内有详细的注释,说明了每个配置项的作用。以下是一些核心配置:- 定制机器人名字:在
robot
部分,你可以修改name
字段来给你的机器人取一个新名字,例如“小明同学”。你还可以设置hotword
字段,这是唤醒机器人的关键词,默认为“悟空悟空”或“snowboy”。robot: name: '悟空' hotword: '悟空悟空'
- 配置语音服务 (ASR & TTS):这是最核心的配置。你需要在
stt
(语音识别)和tts
(语音合成)部分选择你希望使用的服务商。例如,如果你想使用百度的语音服务,需要:- 前往百度AI开放平台注册账号,创建应用,并获取
APP_ID
,API_KEY
, 和SECRET_KEY
。 - 将获取到的信息填入
config.yml
的baidu_yuyin
部分。 - 在
stt
和tts
字段中,将值改为'baidu'
。
# 语音识别 stt: 'baidu' # 语音合成 tts: 'baidu' # 百度语音服务配置 baidu_yuyin: # 你的 App ID app_id: '' # 你的 API Key api_key: '' # 你的 Secret Key secret_key: '' ``` **提示**: 强烈建议注册并使用自己的API信息,而不是用默认配置,因为共享的API有使用频率限制,会影响体验。
- 前往百度AI开放平台注册账号,创建应用,并获取
- 配置对话机器人:在
conversation
部分,你可以配置对话逻辑。默认接入了图灵机器人,你也可以配置为使用ChatGPT等更强大的模型。要使用ChatGPT,你需要:- 获取OpenAI的API Key。
- 在
openai
配置部分填入你的api_key
。 - 将
conversation
的robot
字段设置为'openai'
。
conversation: robot: 'openai' # 或者 'tuling' openai: api_key: 'sk-xxxxxxxxxx' model: 'gpt-3.5-turbo'
- 定制机器人名字:在
运行和使用
完成配置后,你就可以启动机器人了。
- 启动程序:在wukong-robot项目根目录下,执行以下命令:
python3 wukong.py
为保证程序在后台持续运行,建议在
tmux
或supervisor
中执行该命令。 - 唤醒和交互:程序启动后,它会进入待机监听状态。对着麦克风说出你设定的唤醒词(例如“悟空悟空”),当听到“我在”的回应后,就可以开始和它对话了。
- 使用后台管理端:wukong-robot在运行时会启动一个Web后台服务。你可以在浏览器中访问
http://<你的设备IP>:5001
来打开管理界面。- 默认地址:
http://localhost:5001
- 默认账户:
wukong
- 默认密码:
wukong@2019
注意: 为了安全,请务必在config.yml
中修改server
部分的user
和password
。通过后台,你可以: - 远程和机器人进行文本对话。
- 在线修改配置并重启机器人。
- 实时查看运行日志,方便排查问题。
- 默认地址:
项目升级
如果项目发布了新版本,你可以通过以下简单命令进行升级:
python3 wukong.py update
如果自动升级失败,可以尝试进入项目目录手动执行git pull
和pip3 install -r requirements.txt
来解决。
应用场景
- 个性化智能音箱用户可以根据自己的兴趣和需求,定制一个独一无二的智能音箱。例如,可以更改唤醒词、选择喜欢的声音(通过不同的TTS服务实现),并编写自定义技能插件来满足特定需求,比如查询特定信息、控制个人设备等。
- 智能家居中控通过与HomeAssistant、MQTT等智能家居平台的集成,wukong-robot可以成为家庭的语音控制中心。用户可以通过语音指令控制灯光、窗帘、空调等智能设备,实现全屋智能化的语音联动。
- 编程学习与实践平台对于编程爱好者和学生来说,wukong-robot是一个绝佳的学习平台。通过阅读和修改其源代码,可以深入理解语音识别、自然语言处理、API调用等技术的实际应用。开发自己的技能插件也是一个很好的编程练习。
- 特定场景的语音助手wukong-robot可以被部署在特定场景中,作为一个高度定制化的语音助手。例如,在办公室,它可以被定制为查询内部知识库、预定会议室的助手;在实验室,它可以用来记录实验数据或控制实验设备。
QA
- 问:wukong-robot支持哪些硬件设备?答:它支持全系列的树莓派、装有64位Ubuntu的电脑、Intel芯片的Mac以及通过WSL在Windows上运行。基本上,只要能满足Python环境和系统依赖,大部分Linux设备都可以运行。
- 问:我是否需要一直连接互联网才能使用?答:部分功能需要。唤醒词识别是在本地离线完成的,但语音识别(ASR)、语音合成(TTS)以及对话机器人(如ChatGPT)通常需要调用云服务API,因此需要连接互联网。如果你配置了本地的对话机器人和TTS服务,则可以在局域网内使用。
- 问:开发一个新的技能插件复杂吗?答:不复杂。wukong-robot的插件机制设计得非常简洁。开发者只需要继承一个基类,定义关键词和处理逻辑即可。官方文档提供了详细的插件开发教程,从简单的“hello world”到查询天气、播放音乐等复杂功能都有实例。
- 问:为什么我说话机器人没有反应?答:可能的原因有几个:首先,检查麦克风硬件是否正常工作并被系统正确识别;其次,确认
config.yml
中的配置是否正确,特别是语音服务的API Key等信息;最后,可以通过后台管理界面的日志功能查看程序运行中是否有报错信息,以便定位问题。