您的位置:首页 > 大数据 > 人工智能

百度AI识别

2017-12-02 15:00 501 查看
AndroidManifest.xml配置
<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