2017-01-03 186 views
2

我成功使用沃森對話服務。但是現在的要求是將數學公式放在沃森響應中。我怎麼做?此外,我嘗試使用外部數學鍵盤鍵入,但由於我的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. 如何在沃森會話服務響應發送一個數學公式
  2. 如何合成一個數學公式文本與沃森文本到語音服務。

#1,請參閱我的答案在https://stackoverflow.com/a/41489073/933879 - 它基本上你想包括JSON和HTML的任何文字,你可以選擇轉換/它說話或它顯示給用戶之前翻譯。

對於#2,您需要用文字寫出等式。所以,而不是「f(x)」,你需要發送TTS服務的字符串「f的x」等(該服務支持一些定製,但我不認爲它適用於這種情況。 )

如果您使用JSON作爲響應,則可以包含兩個版本 - 一個用於顯示的HTML版本和一個用於TTS的「羅嗦」版本。 (請注意,由於該服務已將JSON發送回字符串響應,因此您將以JSON結束JSON,這並不理想,但不是世界末日。)

要開始,這樣做會更簡單,只需要寫兩遍。您的初始「翻譯」層將對JSON進行解碼,然後將這兩者分開並例如將數學部分顯示爲HTML,並用冗長的部分調用Text to Speech服務。

您可以在https://github.com/watson-developer-cloud?utf8=%E2%9C%93&q=conversation&type=&language=處看到一些示例應用程序 - 其中大多數應用程序將響應轉換爲HTML,因此它只是從那裏跳轉到HTML +音頻。

通過手動將公式轉換爲單詞後,您可以順利進行操作,您可以開始使用系統來自動執行此操作。我在這裏沒有任何經驗,但我有一種感覺,它比聽起來更復雜。我不知道有任何現有的代碼可以做到這一點,所以在這一點上你幾乎完全靠自己。

這裏是我的意思的圖片,當我說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,我明白我們在這裏做什麼。上面在我原來的問題中,我已經包含了我使用MathJax呈現的LaTex腳本。你可以專門幫助如何在Dialog流中完成上述操作嗎?我想我可以將我的''部分放入​​我的對話流程中。是對的嗎?非常感謝答覆。 –

+0

我從來沒有使用MathJax或LaTex,但是,你應該能夠從你的標記中獲取內容並將其放入對話流程中。 –

+0

嗨@Nathan,我提出了問題的要點(使用外部數學鍵盤)並將其顯示在我的界面上。現在爲第2點..你建議在TTS上搭起一個「羅嗦」。你可以請我諮詢我如何從我的應用程序客戶端級別上做到這一點?我也認爲翻譯層在這裏會有所幫助。我該如何去做。 –