* 閑聊功能包括有聽新聞、問天氣、講笑話、問答游戲、以及閑聊百科等多個場景的應答回復。其對應的處理器是DefaultProcessor。 回復指令內容如下:
~~~
輸入:你好。
輸出:
{
"actions": [],
"motions": [
{
"index": 4,
"level": 1,
"motion": 10002
},
{
"index": 10,
"level": 1,
"motion": 30002
}
],
"outc": "0",
"rtext": "你好,有什么可以幫到你呢?",
"synthetise": "",
"ttext": ""
}
~~~
* 頁面效果圖:
----
* 在該Processor中,基本只要將應答指令對象中的回復文本發送到前端ChatListFragment展示即可。特別的,需要判斷outc(輸出語音控制碼)的值并進行對應設置。
~~~
if ((cmd.getOutc() & OUTC_ASK) == OUTC_ASK) {
//合成后自動開啟識別
builder.setContextMode(SpeechMsg.CONTEXT_KEEP_RECOGNIZE);
} else if ((cmd.getOutc() & OUTC_SYNTHESIZE_PRIORITY) == OUTC_SYNTHESIZE_PRIORITY) {
//加權合成朗讀,即使rtext合成被打斷,打斷后仍需朗讀
builder.setPriority(SpeechMsg.PRIORITY_ABOVE_RECOGNIZE);
}
~~~
* 同時,還要判斷synthetise(發音人信息)是否有值。如果有,則需要進行變聲處理。
~~~
if (!TextUtils.isEmpty(cmd.getSynthetise())) { //(針對講笑話)變聲
synthesizer.setForceLocalEngine(false);
try {
responseMsg = new ResponseSetionsMsg(text);
((ResponseSetionsMsg) responseMsg).setSetions(new JSONArray(cmd.getSynthetise()));
builder.setSections(((ResponseSetionsMsg) responseMsg).getSetions());
} catch (JSONException e) {
e.printStackTrace();
}
}
~~~