第一步:
注册讯飞语音,这个无需多说,
第二步:
注册成功后登陆:点开右上角的控制台:就能够看到本身的项目了:android
第三步:
在控制台的左边有能够看到咱们的应用,若是没有就新建一个:git
第四步:根据要求填写相关内容 并提交便可:json
第五步:记住Appid,并开通相关服务网络
第六步,开通相关服务
我这里仅仅只开通了第一个语音听写
而后就会跳转到下面的页面app
第七步:下载sdk:ide
这里必定要选择本身的项目,由于咱们下载的sdk是和前面的Appid相关的,gradle
到如今,咱们的准备工做完成了:下面就是在项目中配置相关sdk,ui
第一步:使用讯飞自带UI接口,直接将assets下文件拷贝到项目中的相应位置;this
第二步,开始实现讯飞语音识别
首先,权限编码
<!--链接网络权限,用于执行云端语音能力 --> <uses-permission android:name="android.permission.INTERNET"/> <!--获取手机录音机使用权限,听写、识别、语义理解须要用到此权限 --> <uses-permission android:name="android.permission.RECORD_AUDIO"/> <!--读取网络信息状态 --> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> <!--获取当前wifi状态 --> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/> <!--容许程序改变网络链接状态 --> <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/> <!--读取手机信息权限 --> <uses-permission android:name="android.permission.READ_PHONE_STATE"/> <!--读取联系人权限,上传联系人须要用到此权限 --> <uses-permission android:name="android.permission.READ_CONTACTS"/>
其次,初始化:
// 初始化识别对象 SpeechUtility.createUtility(this, SpeechConstant.APPID + "=58c93888");
这里的APPID就是前面的建立应用时的appid
最后,调用讯飞的语音识别并监听返回值:
//1.建立RecognizerDialog对象 RecognizerDialog recognizerDialog = new RecognizerDialog(context, null); //2.设置accent、language等参数 recognizerDialog.setParameter(SpeechConstant.LANGUAGE, "zh_cn");//语种,这里能够有zh_cn和en_us recognizerDialog.setParameter(SpeechConstant.ACCENT, "mandarin");//设置口音,这里设置的是汉语普通话 具体支持口音请查看讯飞文档, recognizerDialog.setParameter(SpeechConstant.TEXT_ENCODING, "utf-8");//设置编码类型 //其余设置请参考文档http://www.xfyun.cn/doccenter/awd //3.设置讯飞识别语音后的回调监听 recognizerDialog.setListener(new RecognizerDialogListener() { @Override public void onResult(RecognizerResult recognizerResult, boolean b) {//返回结果 if (!b) { Log.i("讯飞识别的结果", recognizerResult.getResultString()); } } @Override public void onError(SpeechError speechError) {//返回错误 Log.e("返回的错误码", speechError.getErrorCode() + ""); } }); //显示讯飞语音识别视图 recognizerDialog.show();
语音识别的结果返回的是json各式,因此,若是须要获得识别结果,须要解析json.。我这里使用的是fastjson,须要在build.gradle配置:
compile 'com.alibaba:fastjson:1.2.8'
解析代码:
JSONObject jsonObject = JSON.parseObject(resultString); JSONArray jsonArray = jsonObject.getJSONArray("ws"); StringBuffer stringBuffer = new StringBuffer(); for (int i = 0; i < jsonArray.size(); i++) { JSONObject jsonObject1 = jsonArray.getJSONObject(i); JSONArray jsonArray1 = jsonObject1.getJSONArray("cw"); JSONObject jsonObject2 = jsonArray1.getJSONObject(0); String w = jsonObject2.getString("w"); stringBuffer.append(w); } Log.i("识别结果", stringBuffer.toString());
最后的结果:
ok:到目前为止,讯飞的简单语音识别基本上实现,须要注意的是,下载的sdk必定要和本身的Appid匹配,否则就会出现下面的状况:
用户校验失败:
因此, 把别人下好的sdk复制到本身的项目中时,这中状况是没法使的。
接入讯飞语音识别的几个要点:
Appid必定要和本身下载的sdk相匹配
SpeechUtility.createUtility(this, SpeechConstant.APPID + "=58c93888");