zoukankan      html  css  js  c++  java
  • Android studio语音识别

    引用:https://blog.csdn.net/qq1271396448/article/details/78818029

     语音听写SDK适配安卓6.0需要手动申请权限

    步骤一:百度科大讯飞开发者平台,找到官网进入
    步骤二:在科大讯飞开发者平台官网注册账号,并创建应用
     
     
    步骤三:在SDK下载中下载语音听写、Android平台、我的应用进行下载
    步骤四:解压下载包,在libs中对应导入Android Studio中
    你需要在Android Studio中手动创建一个jniLibs文件夹,记得libs的jar包右键Add As Library
     
     
    步骤五:复制assets文件夹到项目中

     
    步骤六:根据需求,在Manifests文件中添加权限,注意之前的权限,重复的删除
    <!--连接网络权限,用于执行云端语音能力 -->  
    <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" /> 

    步骤七:在代码中初始化SDK

    @Override  
    protected void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.activity_main);  
      
        // 将“xxxxxxx”替换成您申请的 APPID   
        SpeechUtility.createUtility(this, SpeechConstant.APPID +"=xxxxxxx");   
    } 
    

    步骤八:在代码中封装语音识别实体,然后封装个方法使用

    /**
         * 初始化语音识别
         */
        public void initSpeech(final Context context) {
            //1.创建RecognizerDialog对象
            RecognizerDialog mDialog = new RecognizerDialog(context, null);
            //2.设置accent、language等参数
            mDialog.setParameter(SpeechConstant.LANGUAGE, "zh_cn");
            mDialog.setParameter(SpeechConstant.ACCENT, "mandarin");
            //3.设置回调接口
            mDialog.setListener(new RecognizerDialogListener() {
                @Override
                public void onResult(RecognizerResult recognizerResult, boolean isLast) {
                    if (!isLast) {
                        //解析语音
                        //返回的result为识别后的汉字,直接赋值到TextView上即可
                        String result = parseVoice(recognizerResult.getResultString());
                    }
                }
     
                @Override
                public void onError(SpeechError speechError) {
     
                }
            });
            //4.显示dialog,接收语音输入
            mDialog.show();
        }
     
        /**
         * 解析语音json
         */
        public String parseVoice(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 wsBean : ws) {
                String word = wsBean.cw.get(0).w;
                sb.append(word);
            }
            return sb.toString();
        }
    /**
     * 语音对象封装 
     */
    public class Voice {
     
        public ArrayList<WSBean> ws;
     
        public class WSBean {
            public ArrayList<CWBean> cw;
        }
     
        public class CWBean {
            public String w;
        }
    } 
    由于语音识别返回的是个Json数据,所以这里我们使用Gson这个包进行解析,需要添加依赖

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

    步骤九:我们用一个按钮调用这个initSpeech方法,并将返回的result显示在TextView中即可
     
  • 相关阅读:
    POJ 1681 Painter's Problem(高斯消元法)
    HDU 3530 Subsequence(单调队列)
    HDU 4302 Holedox Eating(优先队列或者线段树)
    POJ 2947 Widget Factory(高斯消元法,解模线性方程组)
    HDU 3635 Dragon Balls(并查集)
    HDU 4301 Divide Chocolate(找规律,DP)
    POJ 1753 Flip Game(高斯消元)
    POJ 3185 The Water Bowls(高斯消元)
    克琳:http://liyu.eu5.org
    WinDbg使用
  • 原文地址:https://www.cnblogs.com/jarekpierre/p/10985152.html
Copyright © 2011-2022 走看看