Android 科大讯飞 语音转文字

Android 科大讯飞 语音转文字

语音听写SDK适配安卓6.0需要手动申请权限,各位可以自信查询资料实现,关于语音听写SDK的开发,参考科大讯飞开放平台官网为准

第一,首先去科大讯飞官网注册一个账号:https://console.xfyun.cn/app/myapp

第二,注册完成之后进入控制台,创建一个应用,主要是为了拿到一个APPID的东西,因为Android应用调用科大讯飞需要用到APPID认证。
Android 科大讯飞 语音转文字
第三,选择侧边栏,选择 语音识别 - 语音听写
Android 科大讯飞 语音转文字

如果没有实名认证的话一天只有500次的请求次数。
Android 科大讯飞 语音转文字

第四。因为是做 Android APP,所以我们下载 Android SDK 。
Android 科大讯飞 语音转文字

下载完成是一个压缩包,解压完成之后是下面这个样子
Android 科大讯飞 语音转文字
(圈出来的是我们要用到的)

第五、将 SDK 解压出的文件 libs 文件夹下的文件导入 Android Studio 项目中。
Android 科大讯飞 语音转文字
Msc.jar 这个jar包导入之后别忘了右键 add as library 一下 !!!!!

第六、复制 assets 文件夹到项目中,最后是这个样子的。
Android 科大讯飞 语音转文字
第七、在 AndroidManifest.xml 文件中添加权限,注意之前的权限,重复的删除。

<!--连接网络权限,用于执行云端语音能力 -->  
<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_monitor);
        // 科大讯飞语音听写
        SpeechUtility.createUtility(this, SpeechConstant.APPID +"=XXXXXX");
        // XXXXXX 这个地方写你在科大讯飞官网创建应用后的APPID
    }

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

   /**
     *@TODO 科大讯飞语音听写
     *@Create by: wjw
     *@Create time: 2020/5/6 9:36
     */
    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());
					// Toast.makeText(context, result, Toast.LENGTH_SHORT).show();
                }
            }

            @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这个包进行解析,需要添加依赖。

implementation ‘com.google.code.gson:gson:2.2.4‘

到这里基本上就实现了调用科大讯飞输入法实现语音转文字的功能。
Android 科大讯飞 语音转文字

Android 科大讯飞 语音转文字

上一篇:centos下使用virtualenv和virtualenvwrapper安装python虚拟环境


下一篇:Android Studio 使用悬浮按钮 FloatingActionButton