package com.iflytek.voicedemo.vocalverify;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.text.TextUtils;
import android.util.Log;
import android.view.Gravity;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.widget.Button;
import android.widget.EditText;
import android.widget.RadioGroup;
import android.widget.RadioGroup.OnCheckedChangeListener;
import android.widget.Toast;
import com.iflytek.cloud.ErrorCode;
import com.iflytek.cloud.IdentityListener;
import com.iflytek.cloud.IdentityResult;
import com.iflytek.cloud.IdentityVerifier;
import com.iflytek.cloud.InitListener;
import com.iflytek.cloud.SpeechConstant;
import com.iflytek.cloud.SpeechError;
import com.iflytek.cloud.SpeechEvent;
import com.iflytek.cloud.record.PcmRecorder;
import com.iflytek.cloud.util.VerifierUtil;
import com.iflytek.voicedemo.IdentifyGroup.GroupManagerActivity;
import com.changyang.dey.android_face.R;
/**
* 声纹密码示例
*
* @author hjyu
* @date 2017/9/28.
* @see <a href="http://www.xfyun.cn">讯飞开放平台</a>
*/
public class VocalVerifyDemo extends Activity implements OnClickListener,View.OnTouchListener {
private static final String TAG = VocalVerifyDemo.class.getSimpleName();
// 密码类型
// 默认为数字密码
private int mPwdType = 3;
// 数字密码类型为3,其他类型暂未开放
private static final int PWD_TYPE_NUM = 3;
// 会话类型
private int mSST = 0;
// 注册
private static final int SST_ENROLL = 0;
// 验证
private static final int SST_VERIFY = 1;
// 模型操作类型
private int mModelCmd;
// 查询模型
private static final int MODEL_QUE = 0;
// 删除模型
private static final int MODEL_DEL = 1;
// 用户id,唯一标识
private String authid;
// 身份验证对象
private IdentityVerifier mIdVerifier;
// 数字声纹密码
private String mNumPwd = "";
// 数字声纹密码段,默认有5段
private String[] mNumPwdSegs;
// 用于验证的数字密码
private String mVerifyNumPwd = "";
private EditText mResultEditText;
private Button btn_start_record;
private EditText mAuthidEditText;
private RadioGroup mSstTypeGroup;
private Toast mToast;
// 是否可以录音
private boolean mCanStartRecord = false;
// 是否可以录音
private boolean isStartWork = false;
// 录音采样率
private final int SAMPLE_RATE = 16000;
// pcm录音机
private PcmRecorder mPcmRecorder;
// 进度对话框
private ProgressDialog mProDialog;
/**
* 下载密码监听器
*/
private IdentityListener mDownloadPwdListener = new IdentityListener() {
@Override
public void onResult(IdentityResult result, boolean islast) {
Log.d(TAG, result.getResultString());
mAuthidEditText.setEnabled(false);//密码获取成功后,authid不可再变动
mProDialog.dismiss();
btn_start_record.setClickable(true);
switch (mPwdType) {
case PWD_TYPE_NUM:
StringBuffer numberString = new StringBuffer();
try {
JSONObject object = new JSONObject(result.getResultString());
if (!object.has("num_pwd")) {
mNumPwd = null;
return;
}
JSONArray pwdArray = object.optJSONArray("num_pwd");
numberString.append(pwdArray.get(0));
for (int i = 1; i < pwdArray.length(); i++) {
numberString.append("-" + pwdArray.get(i));
}
} catch (JSONException e) {
e.printStackTrace();
}
mNumPwd = numberString.toString();
mNumPwdSegs = mNumPwd.split("-");
mResultEditText.setText("您的注册密码:\n" + mNumPwd + "\n请长按“按住说话”按钮进行注册\n");
break;
default:
break;
}
}
@Override
public void onEvent(int eventType, int arg1, int arg2, Bundle obj) {
}
@Override
public void onError(SpeechError error) {
mProDialog.dismiss();
mAuthidEditText.setEnabled(true);
// 下载密码时,恢复按住说话触摸
// 下载密码时,恢复按住说话触摸
btn_start_record.setClickable(true);
mResultEditText.setText("密码下载失败!" + error.getPlainDescription(true));
}
};
/**
* 声纹注册监听器
*/
private IdentityListener mEnrollListener = new IdentityListener() {
@Override
public void onResult(IdentityResult result, boolean islast) {
Log.d(TAG, result.getResultString());
JSONObject jsonResult = null;
try {
jsonResult = new JSONObject(result.getResultString());
int ret = jsonResult.getInt("ret");
if (ErrorCode.SUCCESS == ret) {
final int suc = Integer.parseInt(jsonResult.optString("suc"));
final int rgn = Integer.parseInt(jsonResult.optString("rgn"));
if (suc == rgn) {
mResultEditText.setText("注册成功");
mCanStartRecord = false;
isStartWork = false;
if (mPcmRecorder != null) {
mPcmRecorder.stopRecord(true);
}
} else {
int nowTimes = suc + 1;
int leftTimes = 5 - nowTimes;
StringBuffer strBuffer = new StringBuffer();
strBuffer.append("请长按“按住说话”按钮!\n");
strBuffer.append("请读出:" + mNumPwdSegs[nowTimes - 1] + "\n");
strBuffer.append("训练 第" + nowTimes + "遍,剩余" + leftTimes + "遍");
mResultEditText.setText(strBuffer.toString());
}
} else {
showTip(new SpeechError(ret).getPlainDescription(true));
}
} catch (JSONException e) {
e.printStackTrace();
}
}
@Override
public void onEvent(int eventType, int arg1, int arg2, Bundle bundle) {
if (SpeechEvent.EVENT_VOLUME == eventType) {
showTip("音量:" + arg1);
} else if (SpeechEvent.EVENT_VAD_EOS == eventType) {
showTip("录音结束");
}
}
@Override
public void onError(SpeechError error) {
isStartWork = false;
StringBuffer errorResult = new StringBuffer();
errorResult.append("注册失败!\n");
errorResult.append("错误信息:" + error.getPlainDescription(true) + "\n");
errorResult.append("请长按“按住说话”重新注册!");
mResultEditText.setText(errorResult.toString());
}
};
/**
* 声纹验证监听器
*/
private IdentityListener mVerifyListener = new IdentityListener() {
@Override
public void onResult(IdentityResult result, boolean islast) {
Log.d(TAG, "verify:" + result.getResultString());
try {
JSONObject object = new JSONObject(result.getResultString());
String decision = object.getString("decision");
if ("accepted".equalsIgnoreCase(decision)) {
mResultEditText.setText("验证通过");
} else {
mResultEditText.setText("验证失败");
}
} catch (JSONException e) {
e.printStackTrace();
}
isStartWork = false;
}
@Override
public void onEvent(int eventType, int arg1, int arg2, Bundle obj) {
if (SpeechEvent.EVENT_VOLUME == eventType) {
showTip("音量:" + arg1);
} else if (SpeechEvent.EVENT_VAD_EOS == eventType) {
showTip("录音结束");
}
}
@Override
public void onError(SpeechError error) {
isStartWork = false;
mCanStartRecord = false;
StringBuffer errorResult = new StringBuffer();
errorResult.append("验证失败!\n");
errorResult.append("错误信息:" + error.getPlainDescription(true) + "\n");
errorResult.append("请长按“按住说话”重新验证!");
mResultEditText.setText(errorResult.toString());
}
};
/**
* 声纹模型操作监听器
*/
private IdentityListener mModelListener
没有合适的资源?快使用搜索试试~ 我知道了~
科大讯飞SDK语言人脸识别Demo,Android Studio可用
共175个文件
xml:69个
java:36个
png:20个
1星 需积分: 50 81 下载量 77 浏览量
2018-05-23
11:35:35
上传
评论 3
收藏 4.46MB RAR 举报
温馨提示
Android Studio可用,语音识别,人脸识别,语音合成 ,,测评,声纹等等
资源推荐
资源详情
资源评论
收起资源包目录
科大讯飞SDK语言人脸识别Demo,Android Studio可用 (175个子文件)
grammar_sample.abnf 165B
gradlew.bat 2KB
fileSnapshots.bin 2.27MB
taskHistory.bin 884KB
classAnalysis.bin 756KB
fileHashes.bin 374KB
jarAnalysis.bin 320KB
fileHashes.bin 139KB
taskHistory.bin 82KB
taskHistory.bin 76KB
taskJars.bin 21KB
resourceHashesCache.bin 19KB
resourceHashesCache.bin 19KB
last-build.bin 1B
last-build.bin 1B
built.bin 0B
call.bnf 324B
.gitignore 147B
.gitignore 8B
build.gradle 1KB
build.gradle 573B
settings.gradle 16B
gradlew 5KB
app.iml 12KB
Android_face2.iml 867B
Msc.jar 314KB
Sunflower.jar 88KB
gradle-wrapper.jar 53KB
VocalVerifyDemo.java 20KB
OnlineFaceDemo.java 18KB
IatDemo.java 16KB
GroupManagerActivity.java 16KB
FaceIdentifyActivity.java 14KB
TtsDemo.java 11KB
IseDemo.java 10KB
AsrDemo.java 9KB
VocalIdentifyActivity.java 9KB
XmlResultParser.java 9KB
FaceUtil.java 7KB
IseSettings.java 6KB
MainActivity.java 5KB
ResultIdentifyActivity.java 4KB
FucUtil.java 4KB
JsonParser.java 3KB
ResultFormatUtil.java 3KB
Phone.java 3KB
SettingTextWatcher.java 2KB
ParseResult.java 2KB
TtsSettings.java 2KB
XmlParser.java 2KB
IatSettings.java 1KB
ReadSentenceResult.java 1KB
ReadWordResult.java 1KB
Syll.java 1KB
SpeechApp.java 1KB
Word.java 1KB
ResultTranslateUtil.java 1KB
Result.java 1KB
Sentence.java 851B
ReadSyllableResult.java 834B
ExampleInstrumentedTest.java 770B
FaceRect.java 492B
FinalResult.java 422B
ExampleUnitTest.java 407B
keys 10KB
taskHistory.lock 17B
fileHashes.lock 17B
fileContent.lock 17B
javaCompile.lock 17B
taskHistory.lock 17B
fileHashes.lock 17B
fileContent.lock 17B
javaCompile.lock 17B
cache.properties.lock 2B
voice_full.png 16KB
ic_launcher_round.png 15KB
voice_empty.png 14KB
waiting.png 12KB
ic_launcher_round.png 10KB
ic_launcher.png 9KB
warning.png 8KB
ic_launcher_round.png 7KB
ic_launcher.png 6KB
ic_launcher_round.png 5KB
icon.png 5KB
ic_launcher.png 4KB
setting.png 4KB
no_photo.png 4KB
ic_launcher.png 3KB
ic_launcher_round.png 3KB
setting_p.png 2KB
ic_launcher.png 2KB
user.png 2KB
voice_bg.9.png 1KB
proguard-rules.pro 772B
gradle.properties 739B
local.properties 456B
gradle-wrapper.properties 236B
cache.properties 51B
build_file_checksums.ser 535B
共 175 条
- 1
- 2
资源评论
- 七彩祥云2018-12-11全报错没啥用
- 潜水断桥2018-12-18就是科大讯飞的官方demo
睁眼看世界
- 粉丝: 0
- 资源: 2
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功