科大语音sdk实现语音识别功能

在实现语音识别之前要做的事:

  • 注册账号
    如果你有账号,那么请自动跳过这一步
    讯飞科大开发者注册—-讯飞科大开发者注册官网

  • 导入必要文件
           1. 创建新应用(应用名称必须和你的应用名称一样)然后会有一个sdk下载到本地,每一个应用都只有一个对应的sdk,所以如果创建新的应用还使用过去下载的sdk,那么就会有10407错误;
           2.下载sdk,如图:
    这里写图片描述
           3.下载文件如图:
    这里写图片描述
           4.导入文件如下图:这里写图片描述
           3.导入GSON:

 compile 'com.google.code.gson:gson:2.2.4'

       4.配置相关权限:

<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" />
    <!--外存储写权限,构建语法需要用到此权限 -->
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <!--外存储读权限,构建语法需要用到此权限 -->
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <!--配置权限,用来记录应用配置信息 -->
    <uses-permission android:name="android.permission.WRITE_SETTINGS" />
    <!--手机定位信息,用来为语义等功能提供定位,提供更精准的服务-->
    <!--定位信息是敏感信息,可通过Setting.setLocationEnable(false)关闭定位请求 -->
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
  • 代码
    好了,该配置的文件都已经配置好了,开始我们的代码编写:
           第一步:初始化
SpeechUtility.createUtility(mcontext, SpeechConstant.APPID+appid);

此处的appid就是你创建应用时,官方给你返回的appid,如下图:
这里写图片描述


       第二步:基本代码编写:
       我这是写了一个方法:看起来很简单的 我在这就累赘了:

public void discern(){

        SpeechUtility.createUtility(mcontext, SpeechConstant.APPID+APPID);
        iatDialog=new RecognizerDialog(mcontext,mInitListener);
        iatDialog.setParameter(SpeechConstant.LANGUAGE,"zh_cn");
        iatDialog.setParameter(SpeechConstant.ACCENT,"mandarin");
        iatDialog.setListener(new RecognizerDialogListener() {
            @Override
            public void onResult(RecognizerResult recognizerResult, boolean b) {
                if (!b){

                    result=parse_Voice(recognizerResult.getResultString());
                    Toast.makeText(mcontext,result,Toast.LENGTH_SHORT).show();
                }
            }
            @Override
            public void onError(SpeechError speechError) {
                speechError.getPlainDescription(true);
            }
        });
        iatDialog.show();
    }

       然后是解析类了:

 private String parse_Voice(String resultString) {
        Gson gson=new Gson();
        Voice voiceBean=gson.fromJson(resultString,Voice.class);
        StringBuffer sb=new StringBuffer();
        ArrayList<Voice.WSBean> ws=voiceBean.ws;
        for(Voice.WSBean w:ws){
            String word=w.cw.get(0).w;
            sb.append(word);
        }
        return sb.toString();
    }

       Voice类的书写:

public class Voice {
    public  ArrayList<WSBean> ws;
   public class WSBean{
      public ArrayList<CWBean> cw;
  }
  public class CWBean{
      public String w;
  }
}

代码基本就这么一些,很简单,科大识别语音的效果还是很好的,基本能达到97%,所以比较推荐。。。。。小白笔记

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐