Android语音识别-阿里语音识别

实例代码先行 AutomaticSpeechRecognition

一、申请语音识别API(可忽略,代码中有我自己的)

在阿里智能语音识别网页申请自己的AccessKey,secret。

Android语音识别-阿里语音识别_第1张图片

二、用Android Studio创建项目

可以从git clone下载用下我的

git clone https://github.com/zzuwenjie/AutomaticSpeechRecognition

1、在build.gradle(module:app)文件的android中添加

    sourceSets {
        main {
            jniLibs.srcDirs = ["libs"]
        }
    }

Android语音识别-阿里语音识别_第2张图片

2、将在阿里云智能语音识别上下载的android sdk解压

将下图中的包复制到自己项目的app/libs文件夹中

Android语音识别-阿里语音识别_第3张图片

3、修改代码

3.1 在manifest.xml文件夹中添加所需权限,记得申请下这些权限。(实例代码中有)

    
    
    
    
    
    
    
    
    

在主进程(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");

        //实例化NlsClient
        mNlsClient = NlsClient.newInstance(context, listener, stageListener, mNlsRequest);
        mNlsClient.setMaxRecordTime(60000);         //设置最长语音
        mNlsClient.setMaxStallTime(1000);           //设置最短语音
        mNlsClient.setMinRecordTime(500);           //设置最大录音中断时间
        mNlsClient.setRecordAutoStop(false);        //设置VAD
        mNlsClient.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

你可能感兴趣的:(安卓基础)