2017-01-03 9 views
2

Я успешно использую службу беседы Ватсона. Но теперь требование состоит в том, чтобы поместить математическое уравнение в Watson Response. Как мне это сделать? Также я попытался использовать внешнюю клавиатуру математики для ввода, но поскольку моя служба TTS не понимает уравнений, я не получаю желаемого ответа. Есть ли способ использовать LaTex здесь? Также есть способ включить функцию в мой ответ JSON Watson Response. спасибо Например:Функция в разговоре Ватсона

enter image description here

+0

Это скорее вопрос рендеринга. Лучше спросить об обмене TeX. http://tex.stackexchange.com/questions/292348/user-utf-8-string-in-context –

+0

Спасибо, может быть, я задам свой вопрос там. –

+3

Также @ SimonO'Doherty ваш блог действительно полезен. Продолжать. –

ответ

2

Я вижу два вопроса:

  1. Как отправить математическое уравнение в ответ Watson диалог службы
  2. Как синтезировать математическую формулу текст с услугой Watson Text to Speech.

Для # 1, см мой ответ на https://stackoverflow.com/a/41489073/933879 - это в основном любой текст, который вы хотите, включая JSON и HTML, и вы можете по желанию преобразовать/перевести его, прежде чем говорить или отображать его на пользователя.

Для № 2 вам нужно будет написать уравнение в словах. Таким образом, вместо «f (x)» вам нужно отправить службу TTS строку «f of x» и т. Д. (Служба поддерживает некоторую настройку, но я не думаю, что это сработает для этой ситуации.)

Если вы используете JSON для ответа, вы можете включить обе версии - HTML для отображения и «многословную» для TTS. (Обратите внимание, что поскольку служба уже отправляет JSON обратно со строковым ответом, вы попадете в JSON-in-of-JSON. Не идеальный, но не конец света.)

Для того, чтобы начать , это будет намного проще сделать так и просто написать вещи дважды. Ваш начальный слой «трансляции» расшифровывает JSON, разделяет эти два и, например, отобразите математическую часть как HTML и вызовите функцию «Текст в речь» со словом.

Вы можете увидеть некоторые примеры приложений на https://github.com/watson-developer-cloud?utf8=%E2%9C%93&q=conversation&type=&language= - большинство из них преобразуют ответы в HTML, поэтому это просто простой переход оттуда в HTML + Audio.

Как только вы будете работать плавно с ручным преобразованием из формул в слова, вы можете приступить к работе над системой для автоматизации этого. У меня нет опыта здесь, но у меня есть ощущение, что это сложнее, чем кажется. Я не знаю какого-либо существующего кода, чтобы сделать это, так что вы в значительной степени сами по себе на данный момент.

Вот картина того, что я имею в виду, когда я говорю JSON для HTML и многословный ответ:

IBM Watson conversation tooling UI with JSON output

И вот пример обработки, с переводческой слоем:

// 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 
    }); 
} 
+0

Спасибо @Nathan, я действительно понимал, что мы здесь делаем. Выше в моем первоначальном вопросе я включил свой сценарий LaTex, который я рисую с помощью MathJax. Можете ли вы конкретно помочь в том, как сделать это из потока Dialog? Думаю, я могу поместить свою часть '' в свой диалоговый поток. Это правильно? Большое спасибо за ответ. –

+0

Я никогда не работал с MathJax или LaTex, но да, вы должны убрать контент из своего тега и поместить его в поток диалога. –

+0

Привет, @Nathan, я задал вопрос (используя внешнюю клавиатуру математики) и отобразив его на моем интерфейсе. Теперь для пункта 2 .. Вы предложили поместить «многословную» для TTS. Не могли бы вы посоветовать мне, как мне это сделать на уровне моего приложения? Также я тоже думаю, что слой перевода будет полезен здесь. Как мне это сделать? –