百度AI识别
2017-12-02 15:00
501 查看
AndroidManifest.xml配置
语音唤醒代码:package com.cn.baidufacetest;
import java.util.HashMap;
import org.json.JSONException;
import org.json.JSONObject;
import org.json.JSONStringer;
import com.baidu.speech.EventListener;
import com.baidu.speech.EventManager;
import com.baidu.speech.EventManagerFactory;
import com.baidu.speech.asr.SpeechConstant;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.TextView;
public class SpeechWakeUpActivity extends Activity{
private EventManager wp;
private EventListener mEventListenerwp;
private TextView speech_wakeup_result;
private TextView speech_result;
private static final int SOURCE_WAKE_UP = 100000;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.speech_wake_up_main);
wp = EventManagerFactory.create(this, "wp");
mEventListenerwp = new EventListener() {
@Override
public void onEvent(String name, String params, byte[] data, int offset, int length) {
// 唤醒成功
if (name.equals("wp.data")) {
try {
JSONObject json = new JSONObject(params);
int errorCode = json.getInt("errorCode");
if (errorCode == 0) {
// 唤醒成功
speech_wakeup_result.setText("唤醒结果:成功");
speech_result.setText("有什么吩咐");
Intent intent = new Intent(getApplicationContext(),SpeechRecognitionActivity.class);
intent.putExtra("source", "WakeUP");
startActivityForResult(intent, SOURCE_WAKE_UP);
} else {
speech_wakeup_result.setText("唤醒结果:失败,再次唤醒中。。。。");
// 唤醒失败
HashMap<String, Object> map = new HashMap<String, Object>();
map.put(SpeechConstant.WP_WORDS_FILE, "assets:///WakeUp.bin");
String jsonObject = new JSONObject(map).toString();
wp.send(SpeechConstant.WAKEUP_START, jsonObject , null, 0, 0);
}
} catch (JSONException e) {
e.printStackTrace();
}
} else if ("wp.exit".equals(name)) {
// 唤醒已停止
}
}
};
wp.registerListener(mEventListenerwp);
HashMap<String, Object> map = new HashMap<String, Object>();
map.put(SpeechConstant.WP_WORDS_FILE, "assets:///WakeUp.bin"); //唤醒词文件请去http://yuyin.baidu.com/wake下载
String jsonObject = new JSONObject(map).toString();
wp.send(SpeechConstant.WAKEUP_START, jsonObject , null, 0, 0);
speech_wakeup_result = (TextView) findViewById(R.id.speech_wakeup_result);
speech_result = (TextView) findViewById(R.id.speech_result);
}
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
wp.send(SpeechConstant.WAKEUP_STOP, null, null, 0, 0);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == SOURCE_WAKE_UP && resultCode == Activity.RESULT_OK) {
speech_wakeup_result.setText("唤醒结果:"+data.getStringExtra("result"));
}
}
}
语音识别代码:
//初始化
OCR.getInstance().initAccessToken(new OnResultListener<Ac
aa7a
cessToken>() {
@Override
public void onResult(AccessToken result) {
// 调用成功,返回AccessToken对象
token = result.getAccessToken();
}
@Override
public void onError(OCRError error) {
// 调用失败,返回OCRError子类SDKError对象
}
}, getApplicationContext());
//文字识别
GeneralParams param = new GeneralParams();
param.setDetectDirection(true);
param.setImageFile(new File(file));
// 调用通用文字识别服务
OCR.getInstance().recognizeGeneral(param, new OnResultListener<GeneralResult>() {
@Override
public void onResult(GeneralResult result) {
// 调用成功,返回GeneralResult对象
StringBuffer sb = new StringBuffer();
for (WordSimple wordSimple : result.getWordList()) {
// Word类包含位置信息
Word word = (Word) wordSimple;
sb.append(word.getWords());
}
image_result.setText("result:"+sb.toString());
}
@Override
public void onError(OCRError error) {
// 调用失败,返回OCRError对象
}
});
OcrRequestParams param = new OcrRequestParams();
// 设置image参数
param.setImageFile(new File(getIntent().getStringExtra("file")));
// 调用车牌识别服务
OCR.getInstance().recognizeLicensePlate(param, new OnResultListener<OcrResponseResult>() {
@Override
public void onResult(OcrResponseResult result) {
// 调用成功,返回OcrResponseResult对象
Log.e("CameraActivity", "1 result="+result.getJsonRes());
Intent intent = new Intent();
intent.putExtra("result", result.getJsonRes());
setResult(RESULT_OK, intent);
finish();
}
@Override
public void onError(OCRError error) {
// 调用失败,返回OCRError对象
}
});
<uses-permission android:name="android.permission.RECORD_AUDIO" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <service android:name="com.baidu.speech.VoiceRecognitionService" android:exported="false" /><meta-data android:name="com.baidu.speech.APP_ID" android:value="" /> <meta-data android:name="com.baidu.speech.API_KEY" android:value="" /> <meta-data android:name="com.baidu.speech.SECRET_KEY" android:value="" />
语音唤醒代码:package com.cn.baidufacetest;
import java.util.HashMap;
import org.json.JSONException;
import org.json.JSONObject;
import org.json.JSONStringer;
import com.baidu.speech.EventListener;
import com.baidu.speech.EventManager;
import com.baidu.speech.EventManagerFactory;
import com.baidu.speech.asr.SpeechConstant;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.TextView;
public class SpeechWakeUpActivity extends Activity{
private EventManager wp;
private EventListener mEventListenerwp;
private TextView speech_wakeup_result;
private TextView speech_result;
private static final int SOURCE_WAKE_UP = 100000;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.speech_wake_up_main);
wp = EventManagerFactory.create(this, "wp");
mEventListenerwp = new EventListener() {
@Override
public void onEvent(String name, String params, byte[] data, int offset, int length) {
// 唤醒成功
if (name.equals("wp.data")) {
try {
JSONObject json = new JSONObject(params);
int errorCode = json.getInt("errorCode");
if (errorCode == 0) {
// 唤醒成功
speech_wakeup_result.setText("唤醒结果:成功");
speech_result.setText("有什么吩咐");
Intent intent = new Intent(getApplicationContext(),SpeechRecognitionActivity.class);
intent.putExtra("source", "WakeUP");
startActivityForResult(intent, SOURCE_WAKE_UP);
} else {
speech_wakeup_result.setText("唤醒结果:失败,再次唤醒中。。。。");
// 唤醒失败
HashMap<String, Object> map = new HashMap<String, Object>();
map.put(SpeechConstant.WP_WORDS_FILE, "assets:///WakeUp.bin");
String jsonObject = new JSONObject(map).toString();
wp.send(SpeechConstant.WAKEUP_START, jsonObject , null, 0, 0);
}
} catch (JSONException e) {
e.printStackTrace();
}
} else if ("wp.exit".equals(name)) {
// 唤醒已停止
}
}
};
wp.registerListener(mEventListenerwp);
HashMap<String, Object> map = new HashMap<String, Object>();
map.put(SpeechConstant.WP_WORDS_FILE, "assets:///WakeUp.bin"); //唤醒词文件请去http://yuyin.baidu.com/wake下载
String jsonObject = new JSONObject(map).toString();
wp.send(SpeechConstant.WAKEUP_START, jsonObject , null, 0, 0);
speech_wakeup_result = (TextView) findViewById(R.id.speech_wakeup_result);
speech_result = (TextView) findViewById(R.id.speech_result);
}
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
wp.send(SpeechConstant.WAKEUP_STOP, null, null, 0, 0);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == SOURCE_WAKE_UP && resultCode == Activity.RESULT_OK) {
speech_wakeup_result.setText("唤醒结果:"+data.getStringExtra("result"));
}
}
}
语音识别代码:
package com.cn.baidufacetest; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import com.baidu.speech.EventListener; import com.baidu.speech.EventManager; import com.baidu.speech.EventManagerFactory; import com.baidu.speech.asr.SpeechConstant; import android.app.Activity; import android.content.Intent; import android.graphics.drawable.AnimationDrawable; import android.os.Bundle; import android.util.Log; import android.view.View; import android.view.View.OnClickListener; import android.widget.ImageView; import android.widget.RadioGroup; import android.widget.RadioGroup.OnCheckedChangeListener; import android.widget.TextView; /** * @author ali * @function 语音识别 */ public class SpeechRecognitionActivity extends Activity{ private TextView start_voice; private TextView voice_result; private ImageView voice_image; private RadioGroup voice_types; private AnimationDrawable animationDrawable; private EventManager asr; private EventListener mEventListener; private int voice_pid = 15361; private String source; private String logTxt = ""; private String meaningResult = ""; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.speech_recognition_main); source = getIntent().getStringExtra("source"); asr = EventManagerFactory.create(this, "asr"); mEventListener = new EventListener() { @Override public void onEvent(String name, String params, byte[] data, int offset, int length) { if (name.equals(SpeechConstant.CALLBACK_EVENT_ASR_READY)) { // 引擎就绪,可以说话,一般在收到此事件后通过UI通知用户可以说话了 animationDrawable.start(); logTxt = ""; new Thread(new Runnable() { @Override public void run() { // TODO Auto-generated method stub try { Thread.sleep(5000); runOnUiThread(new Runnable() { public void run() { animationDrawable.stop(); asr.send(SpeechConstant.ASR_STOP, null, null, 0, 0); } }); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }).start(); } if (name.equals(SpeechConstant.CALLBACK_EVENT_ASR_FINISH)) { // 识别结束 Log.e("1111", " dadasdasdasd params="+params); voice_result.setText("语音结果: "+logTxt); if(source != null && source.equals("WakeUP")){ Log.e("1111", " CALLBACK_EVENT_ASR_PARTIAL result="+logTxt); Intent intent = new Intent(); intent.putExtra("result", ""+logTxt+" "+meaningResult); setResult(RESULT_OK, intent); finish(); } } // ... 支持的输出事件和事件支持的事件参数见“输入和输出参数”一节 if (name.equals(SpeechConstant.CALLBACK_EVENT_ASR_PARTIAL)) { Log.e("1111", " CALLBACK_EVENT_ASR_PARTIAL params="+params); if (params != null && !params.isEmpty()) { try { JSONObject jsonObject = new JSONObject(params); int error = jsonObject.getInt("error"); if(error == 0){ JSONArray array = jsonObject.getJSONArray("results_recognition"); if(array.length() > 0){ String result = (String)array.get(0); logTxt = result; } }else if(error == 7){ if(jsonObject.getInt("sub_error") == 7001){ logTxt = "结果没有匹配成功"; } } } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); } } if (params.contains("\"nlu_result\"")) { if (length > 0 && data.length > 0) { meaningResult = new String(data, offset, length); } } } } }; asr.registerListener(mEventListener); start_voice = (TextView) findViewById(R.id.start_voice); start_voice.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub if(!animationDrawable.isRunning()){ String json = "{\"accept-audio-data\":false,\"disable-punctuation\":false,\"accept-audio-volume\":true,\"pid\":"+voice_pid+"}"; asr.send(SpeechConstant.ASR_START, json, null, 0, 0); } } }); voice_image = (ImageView) findViewById(R.id.voice_image); animationDrawable = (AnimationDrawable) voice_image.getBackground(); voice_result = (TextView) findViewById(R.id.voice_result); voice_types = (RadioGroup) findViewById(R.id.voice_types); voice_types.setOnCheckedChangeListener(new OnCheckedChangeListener() { @Override public void onCheckedChanged(RadioGroup group, int checkedId) { // TODO Auto-generated method stub int radioButtonId = group.getCheckedRadioButtonId(); switch (radioButtonId) { case R.id.voice_typr_mandarin: voice_pid = 15361; break; case R.id.voice_typr_mandarin_1: voice_pid = 19361; break; case R.id.voice_typr_english: voice_pid = 1736; break; case R.id.voice_typr_cantonese: voice_pid = 1636; break; case R.id.voice_typr_sichuanese: voice_pid = 1836; break; default: break; } } }); if(source != null && source.equals("WakeUP")){ if(!animationDrawable.isRunning()){ String json = "{\"accept-audio-data\":false,\"disable-punctuation\":false,\"accept-audio-volume\":true,\"pid\":"+voice_pid+"}"; asr.send(SpeechConstant.ASR_START, json, null, 0, 0); } } } }文字识别:
//初始化
OCR.getInstance().initAccessToken(new OnResultListener<Ac
aa7a
cessToken>() {
@Override
public void onResult(AccessToken result) {
// 调用成功,返回AccessToken对象
token = result.getAccessToken();
}
@Override
public void onError(OCRError error) {
// 调用失败,返回OCRError子类SDKError对象
}
}, getApplicationContext());
//文字识别
GeneralParams param = new GeneralParams();
param.setDetectDirection(true);
param.setImageFile(new File(file));
// 调用通用文字识别服务
OCR.getInstance().recognizeGeneral(param, new OnResultListener<GeneralResult>() {
@Override
public void onResult(GeneralResult result) {
// 调用成功,返回GeneralResult对象
StringBuffer sb = new StringBuffer();
for (WordSimple wordSimple : result.getWordList()) {
// Word类包含位置信息
Word word = (Word) wordSimple;
sb.append(word.getWords());
}
image_result.setText("result:"+sb.toString());
}
@Override
public void onError(OCRError error) {
// 调用失败,返回OCRError对象
}
});
// 身份证识别参数设置 IDCardParams param = new IDCardParams(); param.setImageFile(new File(getIntent().getStringExtra("file"))); // 设置身份证正反面 //IDCardParams.ID_CARD_SIDE_BACK 反面 param.setIdCardSide(getIntent().getStringExtra("side")); // 设置方向检测 param.setDetectDirection(true); // 调用身份证识别服务 OCR.getInstance().recognizeIDCard(param, new OnResultListener<IDCardResult>() { @Override public void onResult(IDCardResult result) { // 调用成功,返回IDCardResult对象 Log.e("CameraActivity", "1 result="+result.toString()); Intent intent = new Intent(); intent.putExtra("result", result.toString()); setResult(RESULT_OK, intent); finish(); } @Override public void onError(OCRError error) { // 调用失败,返回OCRError对象 } });// 车牌识别参数设置
OcrRequestParams param = new OcrRequestParams();
// 设置image参数
param.setImageFile(new File(getIntent().getStringExtra("file")));
// 调用车牌识别服务
OCR.getInstance().recognizeLicensePlate(param, new OnResultListener<OcrResponseResult>() {
@Override
public void onResult(OcrResponseResult result) {
// 调用成功,返回OcrResponseResult对象
Log.e("CameraActivity", "1 result="+result.getJsonRes());
Intent intent = new Intent();
intent.putExtra("result", result.getJsonRes());
setResult(RESULT_OK, intent);
finish();
}
@Override
public void onError(OCRError error) {
// 调用失败,返回OCRError对象
}
});
相关文章推荐
- [置顶] 百度ai—细粒度图像识别
- 【文字识别】百度AI之运行IOS示例(Demo)工程总结
- c# 利用AForge和百度AI开发实时人脸识别
- PHP调用百度AI接口人脸识别-语音技术-文本识别-图像识别
- 【Unity3d】在Unity3d中使用百度AI人脸识别功能
- 【Unity3d】在Unity3d中使用百度AI人脸识别功能
- 基于百度AI的人脸识别-Python
- 用百度AI的OCR文字识别结合JAVA实现了图片的文字识别功能
- 【Unity3d】百度AI人脸识别实例——描绘人脸特征点
- 百度人脸识别AI实践.doc
- 调用百度AI实现人脸识别-Python
- 基于百度AI实现 车牌识别
- 百度AI模板 phpCI框架 通过access_token获取 人脸识别信息
- 百度AI车牌识别测试
- 基于百度AI的文字识别-Python
- java版阿里云,百度ai,讯飞语音识别效果简单对比及demo
- 百度AI开放平台人脸识别学习笔记(2)
- 基于百度AI实现 车牌识别
- powershell 使用百度AI进行文本识别