我正在尝试使用 Watson Conversation 服务和 Watson TTS 服务开发一个 Web 应用程序。对话输出被发送到 TTS 服务进行转换。我在 NodeRED 中执行此操作,并且我在对话节点和分配有效负载的 TTS 节点之间放置了一个功能节点。部署后,我只得到对话对话聊天机器人,而不是我想的语音。请帮我弄清楚我错过了什么?
*PS:我为此使用 HTTP post 和 HTTP get。
我正在尝试使用 Watson Conversation 服务和 Watson TTS 服务开发一个 Web 应用程序。对话输出被发送到 TTS 服务进行转换。我在 NodeRED 中执行此操作,并且我在对话节点和分配有效负载的 TTS 节点之间放置了一个功能节点。部署后,我只得到对话对话聊天机器人,而不是我想的语音。请帮我弄清楚我错过了什么?
*PS:我为此使用 HTTP post 和 HTTP get。
以下是在 HTML 页面上使用 Text to Speech 的示例流程的链接。把它作为你的开始,然后添加对话。
https://github.com/watson-developer-cloud/node-red-labs/tree/master/basic_examples/text_to_speech
我构建了一个有效的流程,您将需要安装一个可以播放音频的节点。文本到语音节点实际上不播放任何声音。它创建一个音频文件。
转到节点红色编辑器右上角的汉堡包。寻找调色板管理器。寻找node-red-contrib-play-audio
并安装它。我假设你已经node-red-bluemix-nodes
有了。
您将需要一个节点来检索输入,我使用了一个注入节点进行测试。
将其连接到您的对话节点。双击它并输入工作区 ID。(它位于每个右上角的三个点下的工作区。将那个长字符串复制到您的节点中。我使用了默认的汽车教程。
msg.payload = msg.payload.output.text[0];
return msg;
将其连接到文本到语音节点。填写任何凭据,选择一个声音并单击输出到 msg.payload。如果您忘记执行此操作,则音频节点实际上会读取文本,而不是使用文本到语音节点的语音。音频节点的声音不是很好。
连接播放音频节点。
这就对了。你应该有一个工作的声音。
查看正在发生的事情的一个好方法是使用调试节点。这使您可以查看内容在哪里流动并放入函数以针对每个节点适当地重定向输出。
复制下面的代码并进入汉堡包并从剪贴板导入新流程。您将需要填写适当的密码和工作区 ID,但这显示了它是如何工作的。
[{
"id": "b7b6d9fc.1997f8",
"type": "tab",
"label": "Flow 2"
}, {
"id": "d0ed4492.045c18",
"type": "inject",
"z": "b7b6d9fc.1997f8",
"name": "",
"topic": "",
"payload": "play the radio",
"payloadType": "str",
"repeat": "",
"crontab": "",
"once": false,
"x": 159.5,
"y": 122,
"wires": [
["dc33249.3227bd8"]
]
}, {
"id": "dc33249.3227bd8",
"type": "watson-conversation-v1",
"z": "b7b6d9fc.1997f8",
"name": "",
"workspaceid": "",
"multiuser": false,
"context": true,
"default-endpoint": true,
"service-endpoint": "https://gateway.watsonplatform.net/conversation/api",
"x": 383.5,
"y": 121,
"wires": [
["d3c07b87.22f9c8"]
]
}, {
"id": "711b8067.a1c7",
"type": "debug",
"z": "b7b6d9fc.1997f8",
"name": "",
"active": true,
"console": "false",
"complete": "true",
"x": 751.5,
"y": 200,
"wires": []
}, {
"id": "9826b891.eb02b8",
"type": "watson-text-to-speech",
"z": "b7b6d9fc.1997f8",
"name": "",
"lang": "en-US",
"langhidden": "en-US",
"langcustom": "NoCustomisationSetting",
"langcustomhidden": "",
"voice": "en-US_MichaelVoice",
"voicehidden": "",
"format": "audio/wav",
"password": "",
"payload-response": true,
"default-endpoint": true,
"service-endpoint": "https://stream.watsonplatform.net/text-to-speech/api",
"x": 757.5,
"y": 64,
"wires": [
["ccf6f5a7.700508"]
]
}, {
"id": "d3c07b87.22f9c8",
"type": "function",
"z": "b7b6d9fc.1997f8",
"name": "",
"func": "msg.payload = msg.payload.output.text[0];\nreturn msg;",
"outputs": 1,
"noerr": 0,
"x": 561.5,
"y": 120,
"wires": [
["9826b891.eb02b8", "711b8067.a1c7"]
]
}, {
"id": "ccf6f5a7.700508",
"type": "play audio",
"z": "b7b6d9fc.1997f8",
"name": "",
"voice": "0",
"x": 963.5,
"y": 64,
"wires": []
}]
您需要提供有关您的问题的更多信息。
无论如何,我注意到的一件事是文本到语音生成一个 44khz 的音频文件。例如,如果您使用某些 USB 加密狗在 RPI 中本地运行它,它可能无法播放,因为它默认支持 22Khz 音频。因此,能否在本地播放也取决于硬件以及声音在其中的配置方式。