最近因用到语义,一个朋友推荐科大讯飞。于是就做了个Demo看了下,然而觉得科大讯飞语义也就是智能回复功能比较好用。若是大家功能多的话还是建议大家使用云知声的语义,它的功能相对多一点。撸码了~~~~
一,使用科大讯飞语义首先要上科大讯飞开发平台注册账号创建自己的应用,这里就不多说了。科大讯飞的语义和科大讯飞开发平台网址是分开的分享个语义地址http://osp.voicecloud.cn/
二,在首页创建自己的语义,建议大家都选了(科大讯飞语义你若是不选就不会给你返回正确场景语义)
![科大讯飞语义添加语义](https://img-blog.csdn.net/20170301193427905?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd2FuZ2ppYW5nanVuMDgxNQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
三,使用科大讯飞的所有东西都需要初始化,建议在application初始化,避免被杀死
SpeechUtility.createUtility(getApplicationContext(), SpeechConstant.APPID +"=申请的应用AppID");
四,科大讯飞语义工具类
public class NLUOnlineUtil {
private final Context mContext;
private MainPresenter mPresenter;
private SpeechUnderstander mySpeechUnderstander;
public NLUOnlineUtil(Context context,MainPresenter presenter){
this.mContext=context;
this.mPresenter=presenter;
initNLU();
}
private void initNLU() {
//1.创建语音语义理解对象
mySpeechUnderstander = SpeechUnderstander.createUnderstander(mContext, null);
//2.设置参数,语义场景配置请登录 http://osp.voicecloud.cn/
mySpeechUnderstander.setParameter(SpeechConstant.LANGUAGE, "zh_cn");
mySpeechUnderstander.setParameter(SpeechConstant.DOMAIN, "iat");
mySpeechUnderstander.setParameter(SpeechConstant.NLP_VERSION, "2.0");
mySpeechUnderstander.setParameter(SpeechConstant.RESULT_TYPE, "json");
}
/**
* 开始语义识别
*/
public void startNLU(){
//3.开始语义理解
mySpeechUnderstander.startUnderstanding(mUnderstanderListener);
}
SpeechUnderstanderListener mUnderstanderListener = new SpeechUnderstanderListener(){
//返回的语义结果 结果为json格式,解析后根据"operation"判定不同场景
@Override
public void onResult(UnderstanderResult result) {
String text = result.getResultString();
System.out.println(text);
}
@Override
//会话发生错误回调接口
public void onError(SpeechError error) {
}
//音量发生改变时
@Override
public void onVolumeChanged(int i, byte[] bytes) {
}
//开始录音
@Override
public void onBeginOfSpeech() {
}
//结束录音
@Override
public void onEndOfSpeech() {
}
//扩展用接口
@Override
public void onEvent(int eventType, int arg1, int arg2, Bundle obj) {
}
};
}
五,附语义解析json一个音乐场景结果—-“来一首刘德华的忘情水”
{
"data": {
"result": [
{
"downloadUrl": "http://file.kuyinyun.com/group1/M00/93/7F/rBBGdFPX2iqACqkDABePVqFGeuc579.mp3",
"name": "忘情水",
"singer": "刘德华",
"sourceName": "自产音乐"
},
{
"downloadUrl": "http://file.diyring.cc/UserRingWorksFile/0/50286090.mp3",
"name": "忘情水",
"singer": "刘德华",
"sourceName": "自产音乐"
},
{
"downloadUrl": "http://file.diyring.cc/UserRingWorksFile/0/50288292.mp3",
"name": "忘情水",
"singer": "刘德华",
"sourceName": "自产音乐"
},
{
"downloadUrl": "http://file.kuyinyun.com/group1/M00/52/54/rBBGdFO10gGAV2YSABeMNNnn7Sc042.mp3",
"name": "忘情水",
"singer": "刘德华",
"sourceName": "自产音乐"
}
]
},
"operation": "PLAY",
"rc": 0,
"semantic": {
"slots": {
"artist": "刘德华",
"song": "忘情水"
}
},
"service": "music",
"text": "来一首刘德华的忘情水。",
"webPage": {
"header": "",
"url": "http://kcbj.openspeech.cn/service/iss?wuuid=c4950fbf4896b6f15e32f03c9bceef27&ver=2.0&method=webPage&uuid=aa6bd7b5d2a5653ad9d01a69f865a233query"
}
}