一、准备工作
1.创建应用,并获取appId;
2.下载科大讯飞语音听写功能的jar包和so包(http://www.xfyun.cn/sdk/dispatcher);
3.将jar包添加到libs中(记得libs的jar包右键Add As Library)
4.将so包添加到jniLibs中
好了,准备工作已经完成了。。。。接下来开始集成
二、开始集成
1.在Manifests文件中添加权限
2.初始化SDK
3.在具体实现只能语音功能中,科大讯飞提供了两种方式。
(1)自定义语音输入UI界面
(2)使用科大讯飞的语音输入的UI界面(次方式比较操蛋,dialog上有科大讯飞的广告,而且不能去掉)
下面先介绍自定义UI的方式实现语音听写:
(1)初始化监听器
(2)创建SpeechRecognizer对象
(3)创建听写监听器
/**
* 听写监听器。
*/
private RecognizerListener recognizerListener = new RecognizerListener() {
@Override
public void onVolumeChanged(int num, byte[] bytes) {
//根据音量的大小改变dialog话筒的变化 num为音量的大小
if (num>0 && num <=5){
dialogManager.updateVoiceLevel(num);
}else{
num = 1;
dialogManager.updateVoiceLevel(num);
}
}
@Override
public void onBeginOfSpeech() {
//开始说话
dialogManager.showRecordingDialog();
}
@Override
public void onEndOfSpeech() {
//结束说话
dialogManager.dimissDialog();
}
@Override
public void onResult(RecognizerResult recognizerResult, boolean isLast) {
if (!recognizerResult.getResultString().isEmpty()) {
UniSoundConfig.printResult(recognizerResult, mIatResults, editText);
}
if (isLast) {
// 最后的结果
}
}
@Override
public void onError(SpeechError speechError) {
//识别错误
if (speechError.getErrorCode() == 14002) {
dialogManager.tooShort("请确认是否已开通翻译功能");
} else if (speechError.getErrorCode() == 10081) {
dialogManager.tooShort("您没有说话");
}
}
@Override
public void onEvent(int i, int i1, int i2, Bundle bundle) {
}
};
(4)设置相关属性
(5)解析并打印语音输入
如果直接使用讯飞提供听写UI,则不需要创建SpeechRecognizer对象,而是创建RecognizerDialog对象,并且听写监听器也得用RecognizerDialogListener监听器
(1)创建RecognizerDialog对象
mRecognizerDialog = new RecognizerDialog(context, mInitListener);
(2)创建RecognizerDialogListener监听器
private RecognizerDialogListener mRecognizerDialogListener = new RecognizerDialogListener() {
@Override
public void onResult(RecognizerResult results, boolean isLast) {
// TODO Auto-generated method stub
if (!results.getResultString().isEmpty()) {
UniSoundConfig.printResult(results, mIatResults, editText);
}
if (isLast) {
// 最后的结果
}
}
@Override
public void onError(SpeechError error) {
// TODO Auto-generated method stub
if (error.getErrorCode() == 14002) {
Toast.makeText(context, error.getPlainDescription(true)
+ "\n请确认是否已开通翻译功能", Toast.LENGTH_SHORT);
} else {
Toast.makeText(context, error.getPlainDescription(true),
Toast.LENGTH_SHORT);
}
}
};
以上就是集成科大讯飞语音听写的两种方式