实例代码先行 AutomaticSpeechRecognition
一、申请语音识别API(可忽略,代码中有我自己的)
在阿里智能语音识别网页申请自己的AccessKey,secret。
二、用Android Studio创建项目
可以从git clone下载用下我的
git clone https://github.com/zzuwenjie/AutomaticSpeechRecognition
1、在build.gradle(module:app)文件的android中添加
sourceSets {main {jniLibs.srcDirs = ["libs"]}}
2、将在阿里云智能语音识别上下载的android sdk解压
将下图中的包复制到自己项目的app/libs文件夹中
3、修改代码
3.1 在manifest.xml文件夹中添加所需权限,记得申请下这些权限。(实例代码中有)
<uses-permission android:name="android.permission.INTERNET" /><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /><uses-permission android:name="android.permission.READ_PHONE_STATE" /><uses-permission android:name="android.permission.RECORD_AUDIO" /><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /><uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /><uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /><uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /><uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
在主进程(UI)申请下权限
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.RECORD_AUDIO,Manifest.permission.INTERNET,Manifest.permission.ACCESS_NETWORK_STATE,}, 1);
3.2 添加语音识别类 AutoSpeechRecognizer .可自命名
/*** Created by wjsay on 2018/10/30* Describe: 阿里云,一句话识别。* 其中id、secret是我自己实名认证申请的。请换成自己的*/public class AutoSpeechRecognizer {private static final String TAG = "AutoSpeechRecognizer";private static final String appKey = "nls-service";private static final String id = "LTAILtpaW9KOS53M";private static final String secret = "iL8LEpKJAGjCsA93sGgc0TD005yovA";private boolean recognizing;private NlsClient mNlsClient;private NlsRequest mNlsRequest;/*** 实例化语音识别** @param listener 异步语音服务结果的回调类,回调参数:* NlsClient.ErrorCode.SUCCESS:* NlsClient.ErrorCode.RECOGNIZE_ERROR:* NlsClient.ErrorCode.RECORDING_ERROR:* NlsClient.ErrorCode.NOTHING:* @param stageListener 语音服务引擎状态变更回调接口,服务状态的改变* 音量大小的回调、语音文件的生成通过本接口获取。*/public AutoSpeechRecognizer(Context context, NlsListener listener, StageListener stageListener) {NlsClient.openLog(true);NlsClient.configure(context.getApplicationContext());mNlsRequest = new NlsRequest(new NlsRequestProto(context));mNlsRequest.setApp_key(appKey);mNlsRequest.setAsr_sc("opu");//实例化NlsClientmNlsClient = NlsClient.newInstance(context, listener, stageListener, mNlsRequest);mNlsClient.setMaxRecordTime(60000); //设置最长语音mNlsClient.setMaxStallTime(1000); //设置最短语音mNlsClient.setMinRecordTime(500); //设置最大录音中断时间mNlsClient.setRecordAutoStop(false); //设置VADmNlsClient.setMinVoiceValueInterval(100); //设置音量回调时长}/*** 开始识别*/public void startRecognize() {recognizing = true;mNlsRequest.authorize(id, secret);if (!mNlsClient.start()){Log.e(TAG, "startRecognize: can not start recognize");}}/*** 停止识别*/public void stopRecognize() {if (recognizing)mNlsClient.stop();recognizing = false;}/**** @return 是否正在录音识别的布尔值*/public boolean isRecognizing() {return recognizing;}
}
3.3 使用样例
点击按钮开始语音识别,再次点击识别结束。并发量不大于10.。
AutoSpeechRecognize的实例有几个方法需要注意,
isRecognizing 判断是否在识别 stopRecognize 停止识别,处理结果 startRecognize开始识别
实例代码比较简洁,容易化为适合自己使用的,嘿嘿。
————————————————————————————————————————————————————
感谢我室友BoldEric的帮助
——by wjsay 2018-10-30 23:53:41