android语音识别Demo

#科大讯飞-语音识别开发

##在线语音识别
将连续语音快速识别为文字

语音识别在模拟器上是无法测试的,虚拟机mac接收不到声音或者语音识别是访问云端数据,所以如果手机的网络没有开启,就无法实现识别声音的!一定要开启手机的网络,如果手机不存在语音识别功能的话,也是无法启用识别!

##效果图
android语音识别Demo_第1张图片

##源码

新下载地址(Android Studio工程):https://download.csdn.net/download/kwunyamshan/11259989
由于旧下载地址下载次数过多分数已经超高所以新建了一个内容一样,放心下载
注意:源码中是我的sdk,只有三个装机量35天试用期限,你们试用需要替换掉SpeechApp中配置的Appid以及so库!

旧下载地址(Android Studio工程):http://download.csdn.net/detail/kwunyamshan/9692791

##集成步骤

开通服务,下载SDK
之前介绍过,地址:http://blog.csdn.net/kwunyamshan/article/details/53320164

Step 1. 导入so库
 
	 eclipse将so库导入到libs目录下
	 AS用户将so导入到jniLibs目录下
	 下载的官方SDK中有七个so库目前已经支持市面上98%的手机
	 armeabi目录下libmsc.so只支持市面上百分之八十的手机,如果不需要做适配的话导入这一个so库也是极好的

android语音识别Demo_第2张图片

Step 2. 拷贝资产文件
		将 SDK 资源包assets 路径下的资源文件拷贝至 Android 工程 asstes 目录下

android语音识别Demo_第3张图片

Step 3.  初始化
		这是很重要并且是必须的一步操作,实际上初始化的操作是异步进行的,如果初始化还没有完成你就开始调用了语音识别,是会出现很多问题的,建议在你程序刚刚启动的时候调用
public class SpeechApp extends Application {

    @Override
    public void onCreate() {
        // 应用程序入口处调用,避免手机内存过小,杀死后台进程后通过历史intent进入Activity造成SpeechUtility对象为null
        // 如在Application中调用初始化,需要在Mainifest中注册该Applicaiton
        // 注意:此接口在非主进程调用会返回null对象,如需在非主进程使用语音功能,请增加参数:SpeechConstant.FORCE_LOGIN+"=true"
        // 参数间使用半角“,”分隔。
        // 设置你申请的应用appid,请勿在'='与appid之间添加空格及空转义符

        // 注意: appid 必须和下载的SDK保持一致,否则会出现10407错误

        SpeechUtility.createUtility(SpeechApp.this, "appid=" + getString(R.string.app_id));

        // 以下语句用于设置日志开关(默认开启),设置成false时关闭语音云SDK日志打印
        // Setting.setShowLog(false);
        super.onCreate();
    }

}
Step 4.  添加用户权限,官方给的API中不规范有几条权限中间有空格导致编译不通过 ,注意一下

    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
Step 5. 代码
public class MainActivity extends Activity {


    private StringBuffer mBuffer;
    private TextView tv;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        tv = (TextView) findViewById(R.id.tv_translate_text);
    }

    public void startVoice(View view) {
        //1.创建RecognizerDialog对象
        RecognizerDialog mDialog = new RecognizerDialog(this, null);
        //2.设置accent、 language等参数
        mDialog.setParameter(SpeechConstant.LANGUAGE, "zh_cn");
        mDialog.setParameter(SpeechConstant.ACCENT, "mandarin");
        //若要将UI控件用于语义理解,必须添加以下参数设置,设置之后onResult回调返回将是语义理解结果
        // mDialog.setParameter("asr_sch", "1");
        // mDialog.setParameter("nlp_version", "2.0");

        mBuffer = new StringBuffer();
        //3.设置回调接口
        mDialog.setListener(mRecognizerDialogListener);
        //4.显示dialog,接收语音输入
        mDialog.show();
    }

    RecognizerDialogListener mRecognizerDialogListener = new RecognizerDialogListener() {
        //听写结果回调接口(返回Json格式结果,用户可参见附录13.1);
        //一般情况下会通过onResults接口多次返回结果,完整的识别内容是多次结果的累加;
        //关于解析Json的代码可参见Demo中JsonParser类;
        //isLast等于true时会话结束。
        @Override
        public void onResult(RecognizerResult results, boolean isLast) {
            String result = results.getResultString();//语音听写的结果

            String resultString = processData(result);

            mBuffer.append(resultString);

            if (isLast) {
                //话已经说完了
                String finalResult = mBuffer.toString();
                System.out.println("解析结果:" + finalResult);
                tv.setText(finalResult);

            }

        }

        @Override
        public void onError(SpeechError error) {

        }
    };

    //解析json
    protected String processData(String result) {
        Gson gson = new Gson();
        VoiceBean voiceBean = gson.fromJson(result, VoiceBean.class);

        StringBuffer sb = new StringBuffer();

        ArrayList ws = voiceBean.ws;
        for (VoiceBean.WsBean wsBean : ws) {
            String word = wsBean.cw.get(0).w;
            sb.append(word);
        }

        return sb.toString();
    }


}

layout





    



Step 6. 目录结构

android语音识别Demo_第4张图片

遇到问题可以留言探讨会尽快回复,也可以访问官方地址
网址:http://bbs.xfyun.cn/forum.php?mod=viewthread&tid=13040&fromuid=86908

你可能感兴趣的:(voice)