android简单接入讯飞语音识别

讯飞语音建立项目流程:

第一步:
注册讯飞语音,这个无需多说,
第二步:
注册成功后登陆:点开右上角的控制台:就能够看到本身的项目了:android

第二步
第三步:
在控制台的左边有能够看到咱们的应用,若是没有就新建一个:git

第三步

第四步:根据要求填写相关内容 并提交便可:
第四步json

第五步:记住Appid,并开通相关服务网络

第五步
第六步,开通相关服务
我这里仅仅只开通了第一个语音听写而后就会跳转到下面的页面app

第六步

第七步:下载sdk:ide

这里必定要选择本身的项目,由于咱们下载的sdk是和前面的Appid相关的,
第七步gradle

sdk压缩包

到如今,咱们的准备工做完成了:下面就是在项目中配置相关sdk,ui

在项目中配置讯飞语音的相关sdk,这里使用最简单的Ctrl+C 和Ctrl+V:

第一步:使用讯飞自带UI接口,直接将assets下文件拷贝到项目中的相应位置;this

复制jar文件和.so文件

第二步,开始实现讯飞语音识别
首先,权限编码

<!--链接网络权限,用于执行云端语音能力 -->
    <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());

最后的结果:

20006表示没有开启录音权限

10118表示没有说话

ok:到目前为止,讯飞的简单语音识别基本上实现,须要注意的是,下载的sdk必定要和本身的Appid匹配,否则就会出现下面的状况:
用户校验失败:

用户校验失败
因此, 把别人下好的sdk复制到本身的项目中时,这中状况是没法使的。

总结:

接入讯飞语音识别的几个要点:

  • 1.最重要的是:Appid必定要和本身下载的sdk相匹配
  • 2.记得要初始化: SpeechUtility.createUtility(this, SpeechConstant.APPID + "=58c93888");
  • 3.更多功能须要去阅读讯飞的开发文档http://www.xfyun.cn/doccenter/awd

项目源码:
http://git.oschina.net/bcbbcc/myiflytek

相关文章
相关标签/搜索