美文网首页
讯飞线性4麦结合虹软人脸识别demo教程

讯飞线性4麦结合虹软人脸识别demo教程

作者: cjcj125125 | 来源:发表于2021-07-16 16:22 被阅读0次

    此仓库主要实现了基于讯飞AIUI语音交互和虹软人脸识别完成的demo库


    人脸识别使用方法

    1、让你的类实现FacePlugin.FaceDetectionListener 接口;
    2、使用 FacePlugin.getInstance().init(context);初始化人脸识别,传入context参数;
    3、在初始化完成initComplete回调中配置人脸识别的参数即可开启识别;
    4、在faceDetection回调方法中即可收到识人脸识别过程中的信息;

    示例如下:
    在activity的onCreate方法中初始化和设置回调监听 
    public class MainActivity extends AppCompatActivity implements FacePlugin.FaceDetectionListener 
    ........
    ........
       @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
           FacePlugin.getInstance().setFaceDetectionListener(this);
           FacePlugin.getInstance().init(this);
    }
    .........
       @Override
        protected void onDestroy() {
            super.onDestroy();
          //释放人脸识别
            FacePlugin.getInstance().onDestroy();
        }
        @Override
        public void faceDetection(boolean auth, String genderInfo, String face3DAngles, @Nullable String name) {
            Log.i(TAG,"性别:"+genderInfo+"   人脸角度:"+face3DAngles+"   姓名:"+name);
            //识别到之后先暂停识别
            FacePlugin.getInstance().setPause(true);
            name=name==null?"陌生人":name;
            AIUIPlugin.getInstance().speakTTS(name+"欢迎您到访小远机器人,请问我能为您做点什么?",()->{
                Log.i(TAG,"欢迎词播报完毕,执行唤醒");
                AIUIPlugin.getInstance().wakeUPAIUI();
            });
        }
    
        @Override
        public void initComplete() {
            String path= Environment.getExternalStorageDirectory().getPath() +"/face/register";
            String failed=Environment.getExternalStorageDirectory().getPath()+ "/face/failed";
            Log.i(TAG,"初始化完毕开始注册人脸,人脸注册目录:"+path+"   注册失败目录:"+failed);
    //setAlive为是否开启活体检测,path为人脸照片目录,failed为注册人脸失败后照片存放目录
            FacePlugin.BuildConfig config= new FacePlugin.BuildConfig().setAlive(false).setIdentifyNum(2).setFailedPath(failed).setRegisterPath(path);
            FacePlugin.getInstance().setBuildConfig(config);
    //设置好后开启人脸识别
            FacePlugin.getInstance().registerFace();
        }
    

    AIUI使用说明

    1、实现AIUIPlugin.MessageListener接口用于接收交互中AIUI状态回调;
    2、设置AIUI状态、数据 监听 AIUIPlugin.getInstance().setMessageListener(this);
    3、使用以下下代码进行初始化(例如在onCreate中调用初始化);

      AIUIPlugin.getInstance().init(context, path,auth);
    参数context为上下文;
    参数path为资源存放目录,如:ExternalStoragePath() sd卡根目录
    参数auth为AIUI授权的auth授权码
    
    

    4、使用 AIUIPlugin.getInstance().destory(); 释放资源;
    5、监听AIUI返回的数据、状态回调

        @Override
        public void handleState(String state) {
            switch (state){
                case "sleep":
                    //休眠的时候继续人脸识别
                    FacePlugin.getInstance().setPause(false);
                    break;
                case "run":
                    FacePlugin.getInstance().setPause(true);
                    break;
            }
        }
    
        @Override
        public void handleAceInit(boolean init) {
            if(!init){
                AIUIPlugin.getInstance().speakTTS("请检查是否连接了麦克风",null);
            }
        }
    
     @Override
        public void handleCommand(String commandKey, String data)     {
            Logger.d("技能名称:"+commandKey+"   技能数据:"+data);
            try {
                JSONObject intentObj=new JSONObject(data);
            switch (commandKey) {
                case "IFLYTEK.weather":
                    //天气技能
                    Bundle bundle=new Bundle();
                    Intent intent=new Intent(Utils.getApp(),WeatherActivity.class);
                    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                    intent.putExtra(AIUIPlugin.WEATHER_KEY,data);
                    Utils.getApp().startActivity(intent,bundle);
                    break;
                case "OS10584953596.yf_move":
                    //执行前进后退等指令
                    if(intentObj.has("semantic")){
                            JSONObject object=intentObj.getJSONArray("semantic").getJSONObject(0);
                            if(object.has("slots")){
                                JSONObject slots=object.getJSONArray("slots").getJSONObject(0);
                                if(slots.has("normValue")){
                                    Logger.d("目标位置:"+slots.getString("normValue"));
                                    switch (slots.getString("normValue")){
                                        case "":
                                            //导航具体的位置点,根据该位置获取json文件中目的地
    
                                            break;
                                    }
                                }
                            }
                    }
    
                    break;
                case "musicPlayer_smartHome":
            //音乐技能
    
                    break;
                default:
                    break;
            }
            } catch (JSONException e) {
                e.printStackTrace();
            }
        }
    
    
    
    

    相关文章

      网友评论

          本文标题:讯飞线性4麦结合虹软人脸识别demo教程

          本文链接:https://www.haomeiwen.com/subject/izffzhtx.html