TJBOT以IBM Watson服务为例

哈Ha! 在2019年春季,举行了下一次Think Developers Workshop,每个人都可以组装一个运行IBM Watson Services的TJBota纸板机器人。 切割器下方是有关如何以及如何组装这种机器人的详细说明,有用的链接和简单的菜谱,它们展示了Watson服务的某些认知能力,以及在IBM莫斯科办事处举行的有关Watson Services的两个7月研讨会的小公告。

图片


IBM Watson服务是一种认知系统,可以处理自然语言,识别图像并学习。 为了方便在任何应用程序中使用这些服务,存在一个API。

TJBot是一个开放源代码项目,旨在帮助访问Watson服务。 这是每个树莓派和现成的人工智能都可以制造的机器人。 TJBot可以通过配方恢复。

食谱是分步说明,可帮助您将TJBot连接到Watson服务,例如语音到文本,视觉识别和语言翻译。 食谱基于Raspberry Pi。

TJBota需要什么


  • Raspberry Pi 3 + OS SD卡
  • USB麦克风
  • 蓝牙扬声器或3.5毫米扬声器。 音频插孔
  • 伺服驱动
  • NeoPixel RGB LED(8毫米)
  • 妈妈妈妈爸爸妈妈
  • 树莓派相机
  • 电源供应
  • 外壳(可以在3D打印机上打印,也可以从纸板上激光切割。必要的布局在这里



组装说明可在此处找到。

下图是二极管和伺服器与电路板的连接图。

图片

机箱组装在主板的“周围”,因此您必须首先将OS写入存储卡。

最简单的方法是安装NOBS ,但是任何其他Linux都适合我们。 在安装NOOBS之前,请格式化存储卡,下载包含安装文件的档案,然后将其导出到计算机。 接下来,您需要将文件从NOOBS文件夹传输到存储卡。 首次启动树莓派(带有先前插入的存储卡)时,将打开OS安装菜单。 详细说明可在此处找到。

程序准备


首先要做的是安装软件包:

curl -sL http://ibm.biz/tjbot-bootstrap | sudo sh – 

现在从github下载现成的食谱:

 git clone https://github.com/ibmtjbot/tjbot.git 

转到包含配方的目录:

 cd tjbot / recipes / speech_to_text 

该文件夹包含config.js配置文件和带有可执行脚本stt.js的文件。

安装npm:

 sudo apt-get install npm 

连接Watson服务


要使用Watson服务,您需要遵循以下步骤。

我们传递到此站点

图片

注册并转到目录。 在目录中,我们正在寻找“语音到文本”。 语音到文本是一项用于将语音转换为文本的服务。 在此处可以访问API。

图片

当我们使用图像识别时,也需要文本到语音和视觉识别。 我们单击语音转换为文本,然后转到页面,其中包含对该组件的描述以及使用计划。

图片

一个免费的计划对我们来说足够了。 单击创建,然后在左侧菜单中,转到服务凭证。

图片

从这里,您需要复制凭证和APIKEY并将它们粘贴到config.js文件中。

 // Create the credentials object for export exports.credentials = {}; // Watson Speech to Text // https://www.ibm.com/watson/services/speech-to-text/ exports.credentials.speech_to_text = { "apikey": "...", "iam_apikey_description": "...", "iam_apikey_name": "...", "iam_role_crn": "...", "iam_serviceid_crn": "...", "url": "https://gateway-lon.watsonplatform.net/speech-to-text/api" }; 

现在,如果要添加另一个Watson服务,则需要在配置文件中为每个服务添加一个带有apikey和url的块,并包装为以下结构:

 exports.credentials.[ text_to_speech/visual_recognition/speech_to_text ] = { … }; 

TjBota的复兴


考虑带有可执行机器人脚本stt.js的文件。 它具有现成的diskoParty()函数,用于在不使用Watson服务的情况下检查bot的操作。 此功能使机器人二极管以不同的颜色闪烁。

 function discoParty() { for (i = 0; i < 30; i++) { setTimeout(function() { var randIdx = Math.floor(Math.random() * tjColors.length); var randColor = tjColors[randIdx]; tj.shine(randColor); }, i * 250); } } discoParty(); 

在同一脚本中,有一个功能允许您使用开发人员的语音来切换二极管的颜色。

运行脚本:

 sudo node stt.js 

告诉机器人“将灯变成蓝色”以将二极管的颜色切换为蓝色,“打开灯”以打开二极管,或者“关闭灯”以关闭。 支持的识别颜色(到目前为止仅支持英语):黄色,绿色,橙色,紫色,品红色,红色,蓝色,浅绿色和白色。

TjBot具有许多基本功能。 例如,要检查伺服系统,可以使用tj.wave()函数,它使机器人向您挥手致意。 这些简短的描述功能可以在这里找到。

现在考虑以下情况,同时使用视觉识别和文本语音转换。

文字转语音是一项使用各种声音,按键和语言将打印的文字转换为语音的服务。 可以在以下链接中找到其API。 视觉识别服务使您可以描述图片中显示的内容。 它通过确定大概的年龄和性别,食物,菜肴,物体来识别人的面部,并可以搜索相似的图像。 可以在此处找到该服务的API。 使用这些服务,我们将教机器人看和说。 根据从摄像机接收到的图像,Watson服务(视觉识别)将向我们发送一个带有图像标签的json对象作为答案,文本到语音将帮助它们发出声音。

首先,在cloud.ibm.com上创建凭证。 我们将它们复制并粘贴到config.js配置文件中。

接下来,编辑可执行脚本stt.js。 我们在其中找到以下几行:

 // these are the hardware capabilities that our TJ needs for this recipe var hardware = ['led', 'microphone']; 

硬件阵列包含使用过的机器人设备。 如果要在脚本中使用伺服,则有必要在阵列中签名“ servo”,如果需要摄像机,则将“ camera”添加到阵列中,并使用写“ speaker”的列。
因此,我们的脚本将分别使用一列和一个摄像机,将其签名到硬件阵列中。

 // these are the hardware capabilities that our TJ needs for this recipe var hardware = ['led', 'servo', 'camera', 'speaker', 'microphone']; // set up TJBot's configuration var tjConfig = { log: { level: 'verbose' }, speak: { language: 'en-US', // see TJBot.prototype.languages.speak voice: undefined, // use a specific voice; if undefined, a voice is chosen based on robot.gender and speak.language speakerDeviceId: "plughw:0,0" // plugged-in USB card 1, device 0; see aplay -l for a list of playback devices }, listen: { microphoneDeviceId: "plughw:1,0", // plugged-in USB card 1, device 0; see arecord -l for a list of recording devices inactivityTimeout: -1, // -1 to never timeout or break the connection. Set this to a value in seconds eg 120 to end connection after 120 seconds of silence language: 'en-US' // see TJBot.prototype.languages.listen }, }; 

从tj库的基本功能中,我们需要功能tj.see()和tj.speak()。

tj.see()函数创建一张照片(对象存储在tmp文件夹中),使用Watson服务将其发送到云中,分析图像并生成一个由标签组成的json对象-描述照片的单词(您可以选择不同的描述和置信度)和这些标签的可靠性百分比。 我们将把服务响应的内容输出到控制台。

tj.speak()函数可以使用Watson服务将文本转换为声音文件,然后进行播放。 同样,如果在Watson服务的帮助下在照片中检测到人,则TJBot将挥动笔。

 // instantiate our TJBot! var tj = new TJBot(hardware, tjConfig, credentials); tj.see().then(function(objects){ var tags = objects.map(function(object){ return object.class; }); if (tags.includes('person')){ tj.wave(); } console.log(tags); for(var i=0;i<tags.length;i++){ tj.speak(tags[i]); } }); 

此食谱展示了在项目中使用Watson服务有多么容易。 本文已经对这些服务及其链接进行了简要说明。 免费试用所有Watson服务。

此外,研讨会将很快在IBM莫斯科办事处举行,您将可以在此了解其他Watson服务功能。

2019年7月9日,带有IBM Watson OpenScale Workshop的Unveil AI Blackbox将在新的云产品Watson OpenScale上举行。 在此活动中,您将能够熟悉神经网络的原理,尝试创建和训练神经网络,并使用Watson AI OpenScale平台对其进行测试。 您必须使用此链接预先注册该事件。

2019年7月10日,将举办“ IBM Cloud中的图像和视频识别”研讨会。 在本研讨会中,您可以学习如何使用Watson Studio在您的应用程序中实现人工智能。 详细的事件描述和注册链接在此处

Source: https://habr.com/ru/post/zh-CN458374/


All Articles