语音识别---讯飞科大api实现
科大语音sdk实现语音识别功能在实现语音识别之前要做的事:注册账号如果你有账号,那么请自动跳过这一步讯飞科大开发者注册—-讯飞科大开发者注册官网导入必要文件 1. 创建新应用(应用名称必须和你的应用名称一样)然后会有一个sdk下载到本地,每一个应用都只有一个对应的sdk,所以如果创建新的应用还使用过去下载的sdk,那么就会有10407错误; 2.下载sdk
·
科大语音sdk实现语音识别功能
在实现语音识别之前要做的事:
注册账号
如果你有账号,那么请自动跳过这一步
讯飞科大开发者注册—-讯飞科大开发者注册官网导入必要文件
1. 创建新应用(应用名称必须和你的应用名称一样)然后会有一个sdk下载到本地,每一个应用都只有一个对应的sdk,所以如果创建新的应用还使用过去下载的sdk,那么就会有10407错误;
2.下载sdk,如图:
3.下载文件如图:
4.导入文件如下图:
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" />
<!--获取当前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" />
- 代码
好了,该配置的文件都已经配置好了,开始我们的代码编写:
第一步:初始化
SpeechUtility.createUtility(mcontext, SpeechConstant.APPID+appid);
此处的appid就是你创建应用时,官方给你返回的appid,如下图:
第二步:基本代码编写:
我这是写了一个方法:看起来很简单的 我在这就累赘了:
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<Voice.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<WSBean> ws;
public class WSBean{
public ArrayList<CWBean> cw;
}
public class CWBean{
public String w;
}
}
代码基本就这么一些,很简单,科大识别语音的效果还是很好的,基本能达到97%,所以比较推荐。。。。。小白笔记
更多推荐
已为社区贡献1条内容
所有评论(0)