教您的Raspberry Pi与IBM Watson对话

事实证明,使用Raspberry Pi和IBM Bluemix可以做很多事情。 在本系列的第一篇文章中,我们探讨了如何将Raspberry Pi连接到IBM Bluemix,IBM Watson和Node-RED 。 如果尚未使用Bluemix和Node-RED设置Raspberry Pi,请先进行第1部分 ,然后再回来! 我个人使用了Raspberry Pi 3,但是我假设Raspberry Pi 2也可以工作。

在本文中,我们将探讨如何在上一个示例中将文本语音转换成Node-RED流。

Raspberry Pi和IBM Bluemix Adventures第二部分

SitePoint / PatCat的艺术作品,徽标权利:IBM和Raspberry Pi Foundation

在IBM Bluemix中将文本连接到语音

为了访问IBM Watson的文本到语音服务,我们需要在Bluemix中添加“文本到语音”服务。 让我们转到Bluemix Services页面并找到“ Text to Speech”服务(注意不要选择“ Speech to Text”……那是不一样的!)。

IBM Bluemix中的文本到语音服务

那应该带我们到Text to Speech服务Bluemix页面

在该页面上,我们将看到用于将该服务添加到我们的IBM Bluemix军械库的各种选项。 我们确保已选择用于Raspberry Pi的空间(在上一篇文章中,我将其命名为“ Dev”),并使应用程序不受约束。 我们可以给服务起一个名字(我叫我的“语音”),给凭据起一个名字(我照原样保留它)。 我唯一可用的计划是“标准”,所以我也保留了那个计划。 对设置满意后,单击“创建”。

创建文本到语音实例

在我们的空间中创建服务后,我们将转到该服务的页面。 我们单击左侧的“服务凭证”菜单项来访问用户名和密码,我们需要将其赋予Node-RED才能访问我们的新IBM Watson Text to Speech服务。 从此页面复制用户名和密码:

复制我们的凭证

将新的IBM Watson Services添加到Node-RED

为了访问Node-RED中的IBM Watson Text to Speech服务,我们将需要安装一些新节点。 为此,我们通过SSH进入我们的Pi(或直接从我们的Pi打开终端)并输入:

cd ~/.node-red

这将我们带到Node-RED应用程序文件夹。 从这里,我们安装了一个新的Node-RED节点集合,称为node-red-node-watson 。 这包括访问整个IBM Watson服务,包括我们需要的“文本到语音”服务。 要安装它,我们在Node-RED文件夹中的Pi上运行以下命令:

sudo npm install node-red-node-watson

安装ALSA开发库

IBM Watson文本到语音功能会将我们的Node-RED应用程序的文本转换为语音文件,但是我们还需要一种让Pi播放这些文件的方法-否则这些话将永远不会被听到! 为了使它在您的Pi上正常运行,您可能需要运行以下命令来安装dev ALSA库:

sudo apt-get install libasound2-dev

重新启动Node-RED

为了使新的Node-RED节点更改生效,我们需要重新启动Node-RED。 为此,我们运行以下两个命令:

node-red-stop

node-red-start

我们的新Node-RED流

现在,我们已经准备好了所有部分,能够执行文本到语音的转换并进行回放-现在是时候将它们放到Node-RED中并使其运行了。

在安装完node-red-node-watson软件包并重启后打开Node-RED时,我们应该在左侧的“ IBM_Watson”下看到一堆新节点:

Node-RED中新的IBM Watson部分

让我们向下滚动,找到“文本到语音”节点并将其拖到我们的Node-RED表中:

文字转语音节点

进入工作表后,我们双击它以打开其设置:

双击节点

这是我们添加先前从IBM Bluemix复制的凭证(用户名和密码)的部分。 我们将其粘贴到此处,并为Pi的声音选择一种语言和一种声音。 我们将文件格式保留为“ WAV”,然后单击“确定”:

我们的文本到语音节点的设置

我们的文字转语音准备好发挥其魔力。 我们现在需要一种方法来告诉它说什么。 让我们告诉我们Pi的温度是多少,就像我们在上一篇文章中先前发送给IBM Bluemix的系统一样。

首先,我们将一个新的功能节点拖到工作表中:

将新的功能节点拖到工作表中

双击该新节点,然后在其功能中输入以下代码:

msg.payload = "My current CPU temperature is " + 
              msg.payload.replace("temp=","").replace("'C\n","") +
              " degrees celsius";
return msg;

该函数正在像上一篇文章中所使用的那样来格式化消息,但是我们不是将其格式化为JSON字符串,而是将其格式化为易于阅读的句子。 这句话将说:“我当前的CPU温度是摄氏X度”。 我们将此句子存储在msg.payload变量中,这是IBM Watson Text to Speech节点所期望的。 我们还可以给功能节点添加标签,我称之为“温度文本”:

我们将其变成可读句子的功能

我们将getCPUTemp节点的输出链接到新功能节点的输入:

将我们的getCPUtemp输出链接到新函数

接下来,将功能节点的输出链接到“文本到语音”节点的输入:

将输出句子链接到语音输入

然后,将另一个功能节点引入工作表。 在该节点内,我们设置了一个简单的函数,该函数会将msg.speech变量设置为msg.payload ,这是我们的语音文本节点返回的内容:

msg.payload = msg.speech;
return msg;

随意调用该节点,我称其为“格式化语音”。 然后点击“确定”:

设置msg.speech

存储和检索我们的声音文件

现在,我们已经生成了一个声音缓冲区,可以将其存储在某个地方,以便我们可以播放它。 要将其存储在文件中,我们使用“文件”节点,该节点位于“存储”标题下。 将没有任何输出的一个拖动到工作表中:

将文件节点拖到工作表中

我们双击该新节点,然后输入以下设置:

  • 我们将文件名设置为/home/pi/temp/speech.wav (其中pi是当前运行Node-RED的用户名)。
  • 该操作应为“覆盖文件”。
  • 我们确保“向每个有效负载添加换行符(\ n)吗?” 未选中。
  • 应该选中“如果不存在,则创建目录”,以便Node-RED可以根据需要为该文件创建目录。
  • 我们命名节点-随便命名吧! 我将其命名为“ Create WAV”。
  • 点击“确定”!

声音文件的各种设置

这创建了一个简单的流程,每次IBM Watson为我们翻译一些文本时,该流程将为我们生成WAV文件。 确保您已经像这样连接了每个节点:

我们的节点应该连接在一起

播放声音

在尝试运行此应用之前,我们需要调整其运行频率。 为此,我们双击“时间戳”节点:

双击时间戳节点

让我们将频率设置为更合理的频率-记住,IBM Watson的声音每次都需要时间才能真正拨打电话! 另外,请注意,如果一个月内超过100万个字符,IBM将对该服务收取费用,因此您不想过度使用它-尤其是如果您如此频繁地请求它,以致从未听到声音! 一分钟的间隔对我来说效果很好:

将间隔设置为1秒

现在,我们拖入一个“延迟”节点。 在我们尝试播放之前,这将需要一段时间,以使IBM Watson有时间执行文本到语音转换。 当声音文件更新时,有一些方法可以在Node-RED中运行节点,但是我有时发现它们有点小虫-一个简单的延迟似乎效果最好。

拖入延迟节点

我们双击该节点以打开其设置,将延迟更改为1秒,然后单击“确定”:

将延迟设置为一秒

我们将“格式化语音”输出(或任何您命名的函数)连接到我们的延迟,如下所示:

连接格式语音输出

然后,我们拖入一个新节点-文件读取节点。 它将在我们之前拖动的“文件”节点上方,但同时具有输入和输出:

拖入文件读取节点

双击该新节点,然后输入以下设置:

  • 我们将文件名设置为/home/pi/temp/speech.wav (与之前创建的文件名相同)。
  • 我们确保输出为“缓冲区”。
  • 我们给它起一个“ Read WAV”的名称(当然,您可以随意称呼它)。
  • 点击确定!

更改我们的音频阅读设置

我们将延迟节点连接到“ Read WAV”节点,然后拖入最后一个节点“ exec”节点。 这是“高级”部分的下方,可以运行Unix命令。 这就是我们在Pi上播放音频的方式。

拖动执行节点

我们双击该新节点以更改其设置。 我们将命令设置为:

aplay /home/pi/temp/speech.wav

这会在我们的Pi上播放声音文件! 我们不需要选择单选按钮或其他任何东西,我们只需命名节点(我将其命名为“ Play Audio”),然后单击“确定”即可:

设置命令来播放我们的音频文件

行动中

这样,我们就可以完成所有工作:

我们的最终设置

您可能需要在Pi上更改的一项设置是用于输出音频的设置。 我使用以下命令将音频定向到3.5mm插孔:

amixer cset numid=3 1

您可以在Raspberry Pi音频配置页面上找到有关更改Raspberry Pi的音频设置的更多信息。

正确设置音频并一切就绪后,单击Node-RED界面右上角的“部署”按钮。 如果一切按计划进行,它将可以成功运行,并且您的Raspberry Pi应该开始与您对话!

以下是我在Twitter上发布的有关Raspberry Pi通过星巴克杯对我讲话的视频:

(您怎么问我?我使用了一种称为Boombox便携式振动扬声器的神奇设备!)

结论

IBM Watson文本到语音功能为使用IBM Bluemix和Raspberry Pi的开发人员带来了全新的可能性! 您可以将语音连接到几乎所有东西,包括其他IBM Watson服务。 在本系列的下一篇文章中,我们将继续探索更多功能,感谢您的关注!

如果您一直在尝试Raspberry Pi和IBM Bluemix组合,那么我很想听听您使用它创建的东西! 在下面的评论中让我知道,或者在Twitter上通过@thatpatrickguy与我联系

From: https://www.sitepoint.com/teaching-your-raspberry-pi-to-speak-with-ibm-watson/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值