还是讯飞,前两篇文章

语音识别

https://blog.csdn.net/nishigesb123/article/details/90478104

语音合成

https://blog.csdn.net/nishigesb123/article/details/90478584


参考链接

官网:https://www.xfyun.cn/

人脸识别说明文档:https://doc.xfyun.cn/msc_android/%E4%BA%BA%E8%84%B8%E8%AF%84%E6%B5%8B.html

API文档:http://mscdoc.xfyun.cn/android/api/


人脸识别

概述

人脸识别(Face Recognize),是一项提取人脸特征信息进行智能分析的生物识别技术,识别率高达99.4%,比肉眼更准确。 MSC SDK 中人脸识别(IdentityVerifier)功能,主要分为下面几类型:

(1)人脸验证——1:1 相似度对比 通过提取两张人脸的特征,进行相似度对比,最终返回相应的置信度得分,系统根据特征匹配程度决定“拒绝”或者“接受”。用于判断两个输入人脸是否属于同一人。

(2)人脸检索——1:N相似度对比 在大规模人脸数据库中快速找出与待检索人脸相似度最高的一个或多个人脸。


导入集成

参考第一篇文章

https://blog.csdn.net/nishigesb123/article/details/90478104


权限及初始化

这部分也依旧(实际上权限并不是照旧,可以有选择的去掉一部分,当然不去掉也行)

    <!-- 连接网络权限,用于执行云端语音能力 --><uses-permission android:name="android.permission.INTERNET" /> <!-- 获取手机录音机使用权限,听写、识别、语义理解需要用到此权限 --><uses-permission android:name="android.permission.RECORD_AUDIO" /> <!-- 读取网络信息状态 --><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <!-- 获取当前wifi状态 --><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.READ_CONTACTS" /> <!-- 外存储写权限,构建语法需要用到此权限 --><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <!-- 外存储读权限,构建语法需要用到此权限 --><uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <!-- 配置权限,用来记录应用配置信息 --><uses-permission android:name="android.permission.WRITE_SETTINGS" /> <!-- 手机定位信息,用来为语义等功能提供定位,提供更精准的服务 --><!-- 定位信息是敏感信息,可通过Setting.setLocationEnable(false)关闭定位请求 --><uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <!-- 如需使用人脸识别,还要添加:摄相头权限,拍照需要用到 --><uses-permission android:name="android.permission.CAMERA" />
package com.example.a5_23face;import android.app.Application;import com.iflytek.cloud.SpeechConstant;
import com.iflytek.cloud.SpeechUtility;public class MyApplication extends Application {@Overridepublic void onCreate() {super.onCreate();// 将“12345678”替换成您申请的APPID,申请地址:http://www.xfyun.cn// 请勿在“=”与appid之间添加任何空字符或者转义符//我这里已经换了...SpeechUtility.createUtility(this, SpeechConstant.APPID +"=5ce61df0");}
}

人脸注册

布局

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".MainActivity"><Buttonandroid:layout_width="match_parent"android:layout_height="wrap_content"android:text="注册"android:id="@+id/button_reg"android:onClick="regClick"app:layout_constraintTop_toTopOf="parent" /><ImageViewandroid:layout_width="match_parent"android:layout_height="wrap_content"android:id="@+id/imageView"app:layout_constraintTop_toBottomOf="@+id/button_reg"/></android.support.constraint.ConstraintLayout>

代码

package com.example.a5_23face;import android.app.Activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;
import android.widget.Toast;import com.iflytek.cloud.FaceRequest;
import com.iflytek.cloud.RequestListener;
import com.iflytek.cloud.SpeechConstant;
import com.iflytek.cloud.SpeechError;
import com.iflytek.cloud.SpeechUtility;import java.io.ByteArrayOutputStream;public class MainActivity extends AppCompatActivity {private ImageView imageView;private static final int REQUESR_CODE_CAPTURE_CAMERA = 0x1;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);imageView = findViewById(R.id.imageView);}//人脸注册public void regClick(View view) {//捕获照片Intent getImageByCamera = new Intent("android.media.action.IMAGE_CAPTURE");startActivityForResult(getImageByCamera, REQUESR_CODE_CAPTURE_CAMERA);}@Overrideprotected void onActivityResult(int requestCode, int resultCode,Intent data) {//是否返回正确if (resultCode == Activity.RESULT_OK && requestCode == REQUESR_CODE_CAPTURE_CAMERA) {//即拍照所得的BitmapBitmap bitmap = (Bitmap) data.getExtras().get("data");imageView.setImageBitmap(bitmap);//开始请求平台识别//请求对象FaceRequest face = new FaceRequest(this);//设置参数face.setParameter(SpeechConstant.WFR_SST, "reg");//唯一IDface.setParameter(SpeechConstant.AUTH_ID, "test2019");//把bitmap转换成字节数组ByteArrayOutputStream out = new ByteArrayOutputStream();//一定要是JPEG,bitmap.compress(Bitmap.CompressFormat.JPEG, 100, out);byte[] imgData = out.toByteArray();face.sendRequest(imgData, mRequestListener);}}private RequestListener mRequestListener = new RequestListener() {@Overridepublic void onEvent(int i, Bundle bundle) {}@Overridepublic void onBufferReceived(byte[] bytes) {}@Overridepublic void onCompleted(SpeechError speechError) {//完成,存在if (speechError == null) {Toast.makeText(MainActivity.this, "注册成功", Toast.LENGTH_SHORT).show();System.out.println("注册成功");}else {Toast.makeText(MainActivity.this, speechError.toString(), Toast.LENGTH_SHORT).show();}}};
}

效果

可能会遇到没反应的情况,所以专门补了一句

Toast.makeText(MainActivity.this, speechError.toString(), Toast.LENGTH_SHORT).show();

如果使用安卓9.0可能会出现错误代码

其实是老生常谈的问题了,适配一下就好

https://blog.csdn.net/nishigesb123/article/details/90481437

人脸验证

布局

在之前的基础上完成,增加一个按钮即可

代码

增加对应的点击事件、修改onActivityResult和监听器

package com.example.a5_23face;import android.app.Activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.ImageView;
import android.widget.Toast;import com.iflytek.cloud.FaceRequest;
import com.iflytek.cloud.RequestListener;
import com.iflytek.cloud.SpeechConstant;
import com.iflytek.cloud.SpeechError;
import com.iflytek.cloud.SpeechUtility;import java.io.ByteArrayOutputStream;public class MainActivity extends AppCompatActivity {private ImageView imageView;private static final int REQUESR_CODE_CAPTURE_CAMERA = 0x1;private static final int REQUESR_CODE_CAPTURE_CAMERA_LOGIN = 0x2;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);imageView = findViewById(R.id.imageView);}//人脸注册public void regClick(View view) {//捕获照片Intent getImageByCamera = new Intent("android.media.action.IMAGE_CAPTURE");startActivityForResult(getImageByCamera, REQUESR_CODE_CAPTURE_CAMERA);}@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {//是否返回正确if (resultCode == Activity.RESULT_OK && requestCode == REQUESR_CODE_CAPTURE_CAMERA) {//即拍照所得的BitmapBitmap bitmap = (Bitmap) data.getExtras().get("data");imageView.setImageBitmap(bitmap);//开始请求平台识别//请求对象FaceRequest face = new FaceRequest(this);//设置参数face.setParameter(SpeechConstant.WFR_SST, "reg");//唯一IDface.setParameter(SpeechConstant.AUTH_ID, "test2019");//把bitmap转换成字节数组ByteArrayOutputStream out = new ByteArrayOutputStream();//一定要是JPEG,bitmap.compress(Bitmap.CompressFormat.JPEG, 100, out);byte[] imgData = out.toByteArray();face.sendRequest(imgData, mRequestListener);} else if (resultCode == Activity.RESULT_OK && requestCode == REQUESR_CODE_CAPTURE_CAMERA_LOGIN) {Bitmap bitmap = (Bitmap) data.getExtras().get("data");imageView.setImageBitmap(bitmap);FaceRequest face = new FaceRequest(this);face.setParameter(SpeechConstant.MFV_SST, "verify");face.setParameter(SpeechConstant.AUTH_ID, "test2019");// 设置验证模式,单一验证模式:sinface.setParameter(SpeechConstant.MFV_VCM, "sin");//把bitmap转换成字节数组ByteArrayOutputStream out = new ByteArrayOutputStream();bitmap.compress(Bitmap.CompressFormat.JPEG, 100, out);byte[] imgData = out.toByteArray();face.sendRequest(imgData, mRequestListener);}}private RequestListener mRequestListener = new RequestListener() {@Overridepublic void onEvent(int i, Bundle bundle) {}@Overridepublic void onBufferReceived(byte[] bytes) {//获取数据String json = new String(bytes);System.out.println(json);}@Overridepublic void onCompleted(SpeechError speechError) {//完成,存在if (speechError == null) {Toast.makeText(MainActivity.this, "注册成功", Toast.LENGTH_SHORT).show();System.out.println("注册成功");} else {Toast.makeText(MainActivity.this, speechError.toString(), Toast.LENGTH_SHORT).show();}}};//人脸登录public void loginClick(View view) {Intent getImageByCamera = new Intent("android.media.action.IMAGE_CAPTURE");startActivityForResult(getImageByCamera, REQUESR_CODE_CAPTURE_CAMERA_LOGIN);}}

效果

返回一个byte数据,含有一个score,后续可以根据这个来判断是否符合,送佛送到西,顺便补一个简单的参考好了

如下即可拿到分数

        @Overridepublic void onBufferReceived(byte[] bytes) {//获取数据System.out.println("test");String json = new String(bytes);try {JSONObject jsonObject = new JSONObject(json);System.out.println(jsonObject.get("score"));} catch (JSONException e) {e.printStackTrace();}System.out.println(json);}

安卓SDK——人脸识别相关推荐

  1. C#基于虹软SDK人脸识别签到系统

    C#基于虹软SDK人脸识别签到系统 face-sign-in 基于C#WIINFORM的人脸识别的签到系统,可以使用,使用虹软的SDK开发包,实现了基本的人脸签到后台查看等功能,后续功能不断完善中,敬 ...

  2. linux人脸识别sdk,人脸识别裁剪API linux版下载

    Luxand FaceCrop SDK(人脸识别裁剪API)工具可以帮助正在开发有关人脸识别系统的用户添加裁剪的功能,裁剪的大小用户可以自定义设计,让用户设计出来的程序更加的完美,需要的朋友可以前来本 ...

  3. Android 虹软SDK人脸识别图文使用说明(更新:2019.5.14)

    因为这篇博客开始写的时候是2018.3,到现在有一年多了,而虹软的sdk发生了很大的变化,所以我这里重新把博客写一遍. 多谢各位看官在这一年对该篇博客的关注. 1.账号注册 首先在虹软开发者网站上注册 ...

  4. 手把手教你做安卓端人脸识别应用

    之前我发过一篇人脸搜索的 Chat ,很多同学问到如何将其部署到手机上,作为补充,本场 Chat 我们就来聊聊如何在安卓端开发一个人脸识别应用,将会涉及以下内容: 使用 NDK 交叉编译 Androi ...

  5. pb 调用虹软_虹软SDK人脸识别使用遇到的一些坑

    虹软的人脸识别sdk提供了免费的离线人像识别功能,识别速度也很快,可以很便捷地集成在各种不同的开发语言里边,使用到广泛的应用场景.不过,在集成到我们的门禁系统(基于java)的时候,还是遇到了一些坑, ...

  6. 安卓 NDK人脸识别 身份识别

    OPenCV核心 1.获取图片 2.opencv处理识别区域 3.对识别区域进行ocr识别 在这里插入图片描述 处理识别区域: 灰度化 二值化 膨胀: 轮廓处理 直接在安卓中开始处理: 1.nativ ...

  7. java基于安卓的人脸识别_基于android studio开发的 opencv关于android人脸识别的DEMO

    (2018年11月23日 在 链接 补充了一个新的BUG) 一个新项目的导入 可能会遇到多个问题,就这些问题 做个 解决集合,以便日后回顾, 版本 : android studio3.1.4 ,ope ...

  8. 关于人脸识别SDK的详解。包括【face++ 、微众、有盾等】

    其实关于三方的人脸识别SDk 来讲,都差不多,只有有点基础,跟着文档走,完全是没问题的.今天在这先给大家介绍一下有盾SDK: 很多人听到有盾SDK很陌生,其实它是连连支付下的,这下明白清楚了很多吧. ...

  9. 苹果手机人脸识别不了是什么原因_iPhone和安卓手机的人脸识别有什么区别?

    文/极客修小编 iPhone怎么识别人脸 今天一则新闻引起了我的注意 苹果供应商AMS宣布,推出全新的"behind OLED"红外接近传感器.刘海中的红外传感器TCS3701,能 ...

最新文章

  1. 使用stream类型的Result实现Ajax
  2. 个人项目中的WCF使用
  3. 为什么叫python编程-为什么建议大家学习Python编程呢?老男孩Python入门
  4. hdu3460 字典树(打印机)
  5. dynamodb java_使用Java更新DynamoDB项
  6. php study是什么,phpstudy与wamp区别的区别是什么?
  7. php开发手册pdf版,TP5.0手册下载
  8. 使用 .NET HttpClient 下载 PDF 文件的DEMO
  9. 遗传算法matlab_遗传算法 (GA) 进行多参数拟合 【MATLAB】
  10. 史诗级Java入门教程,想成为初级程序员看他就够了
  11. 计算机专业必看电影,IT人士必看的10部电影
  12. android 信鸽推送点击消息跳转问题,信鸽推送 Android 跳转Activity
  13. window server 2012 win7 远程桌面报错问题,无法远程
  14. 浅谈简单快捷的服务器——私有云服务器!
  15. win10声音显示红叉问题解决
  16. Simon IELTS: Reading
  17. 内网服务器反弹映射到公网ip去访问
  18. Words Accumulation
  19. 嵌入式linux下3G上网卡移植
  20. 关于使用多普达windows mobile 手机使用联通卡不能上网的问题

热门文章

  1. GNN手写字体识别java_深度之眼Paper带读笔记GNN.09.GGNN
  2. 刷了OpenWrt Attitude Adjustment 12.09,很满意
  3. 如何查看电脑CPU的核心个数
  4. 51单片机汇编入门基础代码-流水灯
  5. Criteria查询用法
  6. 频率控制方式及优缺点总结
  7. MYSQL(连接查询)
  8. WASC Distributed Open Proxy Honeypots
  9. 史上最全 2019 ICRA顶会四足机器人文献整理
  10. MyEclipse创建jsp项目