Android 接入科大讯飞语音

 

砖友们,先去了解一下科大讯飞

1.今天接入的是科大讯飞的语音,同样有一些SDK需要砖友们,去抢夺

科大讯飞开放平台直通车  创建App和下载SDK都可以哦

并附上一张图  cp到相应的位置就行

2.我们还要提前导入Gson(录入语音完毕后要用到)

implementation 'com.google.code.gson:gson:2.8.4'

3.因为集成语音需要知道用户说什么,所有需要多个权限

<!--连接网络权限,用于执行云端语音能力 -->
<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" />

4.上代码,在XXXActivity中写入

private TextView tv;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    SpeechUtility.createUtility(this, SpeechConstant.APPID + "=5b72badf");

    tv = findViewById(R.id.tv);

}

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());

                tv.setText(result);
            }

        }

        @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 void onClick(View view) {

    initSpeech(MainActivity.this);

}

/**
 * 语音对象封装
 */

public class Voice {

    public ArrayList<WSBean> ws;


    public class WSBean {

        public ArrayList<CWBean> cw;

    }

    public class CWBean {

        public String w;

    }

}

上面的代码爆红的地方,添加上你自己的事件监听就好了

 

到这里语音就集成完毕了 是不是很简单呢?

想了解很多技术点?

                                        Android 集成支付宝支付

猜你喜欢

转载自blog.csdn.net/as89751/article/details/82658751