Я успешно использую службу беседы Ватсона. Но теперь требование состоит в том, чтобы поместить математическое уравнение в Watson Response. Как мне это сделать? Также я попытался использовать внешнюю клавиатуру математики для ввода, но поскольку моя служба TTS не понимает уравнений, я не получаю желаемого ответа. Есть ли способ использовать LaTex здесь? Также есть способ включить функцию в мой ответ JSON Watson Response. спасибо Например:Функция в разговоре Ватсона
ответ
Я вижу два вопроса:
- Как отправить математическое уравнение в ответ Watson диалог службы
- Как синтезировать математическую формулу текст с услугой 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 и многословный ответ:
И вот пример обработки, с переводческой слоем:
// 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, я действительно понимал, что мы здесь делаем. Выше в моем первоначальном вопросе я включил свой сценарий LaTex, который я рисую с помощью MathJax. Можете ли вы конкретно помочь в том, как сделать это из потока Dialog? Думаю, я могу поместить свою часть '
' в свой диалоговый поток. Это правильно? Большое спасибо за ответ. –Я никогда не работал с MathJax или LaTex, но да, вы должны убрать контент из своего тега
и поместить его в поток диалога. –Привет, @Nathan, я задал вопрос (используя внешнюю клавиатуру математики) и отобразив его на моем интерфейсе. Теперь для пункта 2 .. Вы предложили поместить «многословную» для TTS. Не могли бы вы посоветовать мне, как мне это сделать на уровне моего приложения? Также я тоже думаю, что слой перевода будет полезен здесь. Как мне это сделать? –
Это скорее вопрос рендеринга. Лучше спросить об обмене TeX. http://tex.stackexchange.com/questions/292348/user-utf-8-string-in-context –
Спасибо, может быть, я задам свой вопрос там. –
Также @ SimonO'Doherty ваш блог действительно полезен. Продолжать. –