讯飞语音创建项目流程:
第一步:
注册讯飞语音,这个无需多说,
第二步:
注册成功后登录:点开右上角的控制台:就可以看到自己的项目了:
第三步:
在控制台的左边有可以看到我们的应用,如果没有就新建一个:
第四步:根据要求填写相关内容 并提交即可:
第五步:记住Appid,并开通相关服务
第六步,开通相关服务
我这里仅仅只开通了第一个语音听写
然后就会跳转到下面的页面
第七步:下载sdk:
这里一定要选择自己的项目,因为我们下载的sdk是和前面的Appid相关的,
到现在,我们的准备工作完成了:下面就是在项目中配置相关sdk,
在项目中配置讯飞语音的相关sdk,这里使用最简单的Ctrl+C 和Ctrl+V:
第一步:使用讯飞自带UI接口,直接将assets下文件拷贝到项目中的相应位置;
第二步,开始实现讯飞语音识别
首先,权限
<!--连接网络权限,用于执行云端语音能力 -->
<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复制到自己的项目中时,这中情况是无法使的。
总结:
接入讯飞语音识别的几个要点:
- 1.最重要的是:
Appid一定要和自己下载的sdk相匹配
- 2.记得要初始化:
SpeechUtility.createUtility(this, SpeechConstant.APPID + "=58c93888");
- 3.更多功能需要去阅读讯飞的开发文档http://www.xfyun.cn/doccenter/awd
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。