语音识别---讯飞科大api实现

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

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

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

  • 导入必要文件
           1. 创建新应用(应用名称必须和你的应用名称一样)然后会有一个sdk下载到本地,每一个应用都只有一个对应的sdk,所以如果创建新的应用还使用过去下载的sdk,那么就会有10407错误;
           2.下载sdk,如图:
    语音识别---讯飞科大api实现_第1张图片
           3.下载文件如图:
    语音识别---讯飞科大api实现_第2张图片
           4.导入文件如下图:语音识别---讯飞科大api实现_第3张图片
           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" />
    
    <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" />
    
    
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
  • 代码
    好了,该配置的文件都已经配置好了,开始我们的代码编写:
           第一步:初始化
SpeechUtility.createUtility(mcontext, SpeechConstant.APPID+appid);

此处的appid就是你创建应用时,官方给你返回的appid,如下图:
语音识别---讯飞科大api实现_第4张图片


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

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.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 ws;
   public class WSBean{
      public ArrayList cw;
  }
  public class CWBean{
      public String w;
  }
}

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

你可能感兴趣的:(android)