package com.itheima24.know.recognizer;
import java.util.ArrayList;
import com.iflytek.speech.RecognizerResult;
import com.iflytek.speech.SpeechConfig.RATE;
import com.iflytek.speech.SpeechError;
import com.iflytek.ui.RecognizerDialog;
import com.iflytek.ui.RecognizerDialogListener;
import com.itheima24.know.utils.BroadcastHelper;
import com.itheima24.know.utils.Constants;
import android.content.Context;
import android.content.IntentSender.SendIntentException;
import android.util.Log;
public class VoiceRecognizer implements RecognizerDialogListener {
private static final String TAG = "VoiceRecognizer";
private RecognizerDialog dialog;
private StringBuilder sb = new StringBuilder();
private Context context;
public VoiceRecognizer(Context context){
this.context = context;
dialog = new RecognizerDialog(context,"appid="+Constants.XUNFEI_APPID+"");
dialog.setListener(this);
}
/**
* engine:识别引擎选择,目前支持以下五种
”sms”:普通文本转写
“poi”:地名搜索
”vsearch”:热词搜索
”video”:视频音乐搜索
”asr”:语法识别
*/
public void start(){
String engine = "sms";
String params = "asr_ptt=0";//asr_ptt:默认为1,当设置为0 时,将返回无标点符号文本;
dialog.setEngine(engine,params,null);//参数3:是否进行语法识别
/*
* 2.Android 手机一般只支持8K 和16K 两种采样率,为了获得更好的识别效果,推荐使用
16K。
*/
dialog.setSampleRate(RATE.rate16k);//设置语音识别的采样率
dialog.show();
}
@Override
public void onEnd(SpeechError error) {
//处理识别结果
if(error==null){//没有发生错误,直接拿到识别的结果了
Log.i(TAG,"结果为:"+sb.toString());
//更新场景3
//发送广播,在MainActivity里接收这个语音识别广播
BroadcastHelper.sendBroadCast(context,Constants.VOICE_RECOGNITION_RESULT_ACTION,Constants.VOICE_RECOGNITION_RESULT_KEY,sb.toString());
}else{//发生错误的时候
Log.i(TAG,"error"+error.getErrorDesc()+" errorCode="+error.getErrorCode());
}
sb.setLength(0);//清空StringBuilder
}
/**
* 每次识别结果得到的时候回调该方法,该方法会被多次调用
*/
@Override
public void onResults(ArrayList<RecognizerResult> results, boolean isLast) {
for(RecognizerResult result:results){
String text = result.text;
sb.append(text);
}
}
}
调用
voiceRecognizerStart();
权限
<!-- 读取网络状态所需权限 -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<!-- 科大讯飞语音所需的权限 -->
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.INTERNET" />
<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.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_CONTACTS" />
包名
Msc.jar
libmsc.so