【问题标题】:Function in Watson conversationWatson 对话中的功能
【发布时间】:2017-01-03 04:14:43
【问题描述】:

我正在成功使用 Watson 对话服务。但现在的要求是将数学方程放入 Watson Response 中。我怎么做?我还尝试使用外部数学键盘打字,但由于我的 TTS 服务不理解方程式,我没有得到我想要的响应。有没有办法在这里使用 LaTex?还有一种方法可以将函数放入我的 JSON Watson 响应中。 非常感谢 例如:

【问题讨论】:

  • 这更像是一个渲染问题。最好在 TeX 交易所询问。 tex.stackexchange.com/questions/292348/…
  • 谢谢,也许我会在那里问我的问题。
  • 另外@SimonO'Doherty 你的博客真的很有帮助。继续前进。

标签: json latex ibm-watson watson-conversation


【解决方案1】:

我在这里看到两个问题:

  1. 如何在 Watson Conversation Service 响应中发送数学方程式
  2. 如何使用 Watson Text to Speech 服务将数学公式合成为文本。

对于 #1,请参阅我在 https://stackoverflow.com/a/41489073/933879 的回答 - 它基本上是您想要的任何文本,包括 JSON 和 HTML,您可以选择在向用户讲话或显示之前对其进行转换/翻译。

对于#2,您需要用文字写出方程式。因此,您需要向 TTS 服务发送字符串“f of x”等,而不是“f(x)”。(该服务支持一些自定义,但我认为它不适用于这种情况。 )

如果您使用 JSON 作为响应,您可以同时包含两个版本 - 一个用于显示的 HTML 版本和一个用于 TTS 的“冗长”版本。 (请注意,由于服务已经通过字符串响应发送回 JSON,因此您最终会得到 JSON-inside-of-JSON。不理想,但不是世界末日。)

要开始,这样做会简单得多,只需写两次。您最初的“翻译”层将解码 JSON,将这两者分开,例如将数学部分显示为 HTML,并使用冗长的部分调用 Text to Speech 服务。

您可以在 https://github.com/watson-developer-cloud?utf8=%E2%9C%93&q=conversation&type=&language= 看到一些示例应用程序 - 其中大多数将响应转换为 HTML,因此只需从那里简单地跳转到 HTML + 音频。

一旦您通过从公式到单词的手动转换顺利工作,您就可以开始使用一个系统来自动执行此操作。我在这里没有任何经验,但我感觉它比听起来更复杂。我不知道有任何现有的代码可以做到这一点,所以你现在几乎只能靠自己了。

当我说 JSON 用于 html 和冗长的响应时,这是我的意思的图片:

还有,这是一个使用翻译层处理的示例:

// this is meant to run in a browser
// `WatsonSpeech` is from https://github.com/watson-developer-cloud/speech-javascript-sdk/releases
// `ttsToken` is an auth token you generate server-side, eg: https://github.com/watson-developer-cloud/speech-javascript-sdk/blob/master/examples/tts-token.js
// `res` is the JSON Object returned from the Conversation service's send endpoint - http://www.ibm.com/watson/developercloud/conversation/api/v1/#send_message

function translationLayer(res) {
  var formula = JSON.parse(res.output.text[0]);
  $('#output').append(formula.html);
  WatsonSpeech.TextToSpeech.synthesize({
    text: formula.wordy,
    token: ttsToken
  });
}

【讨论】:

  • 谢谢@Nathan,我确实明白我们在这里做什么。在我原来的问题中,我已经包含了我使用 MathJax 渲染的 LaTex 脚本。你能具体帮助如何从对话流程中执行上述操作吗?我想我可以把我的<body> 部分放在我的对话流中。是对的吗?非常感谢您的回复。
  • 我从未使用过 MathJax 或 LaTex,但是是的,您应该能够从 标记中获取内容并将其放入 Dialog 流程中。
  • 嗨@Nathan,我做了问题的重点(使用外部数学键盘)并将其显示在我的界面上。现在是第 2 点。您建议为 TTS 设置一个“冗长的”。您能否建议我如何从我的应用程序客户端级别执行此操作?我也认为翻译层在这里会有所帮助。我该怎么做呢。
  • 我进一步扩展了答案,并澄清说你肯定想先写两次。
  • 我理解自动化时的复杂性。但我不明白的是我该如何写一个冗长的部分?我是否在对话中创建新工作区?或者我如何做一个翻译层,它将我的应用程序代码中的 TTS 的数学部分和冗长的部分分开?
猜你喜欢
  • 1970-01-01
  • 2017-06-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-20
相关资源
最近更新 更多