图灵机器人快速接入教程

来源:互联网 发布:hough变换算法 编辑:程序博客网 时间:2024/05/03 09:24

图灵机器人快速接入Android APP教程

修改日期:160806,
急用的直接下项目TulingDemo

准备:

0、创建安卓或ios项目,让开发工具先编译环境,利用这段时间打开浏览器完成注册什么的
1、注册登录,创建机器人
2、在机器人昵称右侧 有个“查看详情” ,进去按电脑键盘“end”键,到页面末尾,下载安卓或者ios文档;
3、解压缩下载的文件。苹果的我不清楚,安卓的解压缩,把libs这个文件夹复制到项目中,位置自己决定,能把各种jar包添加依赖即可
4、添加好以后,让他编译,利用这段时间,进入百度语音 创建应用,把三个key值保存到项目常量类中 ;对照官方文档之后的操作请对照官方文档吧,他们说不定啥时候会更新 这是文档 ,一步一步走;添加权限,添加代码什么的(文档中有纰漏,权限没写好,直接复制我的吧
<uses-ermissionandroid:name="android.permission.ACCESS_NETWORK_STATE" /> </br> 

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
//如果需要使用蓝牙设备作为输入源, 需要额外在AndroidManifest.xml 文件添加下列权限:-
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.BROADCAST_STICKY" /> </br> 

<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.WRITE_SETTINGS"/>
请在程序清单添加上)
5、注意:配置分为语音识别、语义理解、语音合成三大模块
6、我在application中完成了三部分的初始化,包括监听,然后懵逼的发现他们没有解耦…………

注意事项

1、如果报错:java.lang.UnsatisfiedLinkError: com.android.tools.fd.runtime.IncrementalClassLoader$DelegateClassLoader[DexPathList[[dex file “/data/data/com.czh.assistant/files/instant-run/dex/slice-volley_fb8c39d7ceaeba89900705620c454ab7fe731a84-classes.dex”, dex file “/data/data/ 以上是由于so’文件加载失败造成,解决方案:
在module级别的gradle文件,android级别标签(花括号)添加如下标签,方括号里面的路径一定要看准了,差一级菜单都没用;

 sourceSets {        main {            jniLibs.srcDirs = ['src/main/java/jniLibs']        jni.srcDirs = [] // This prevents the auto generation of Android.mk        }}

原文解决方案点击这里
识别返回码处理
{“code”:40002,”text”:”亲爱的,不明白你说的什么意思。”}
{“code”:200000,”text”:”亲,已帮你找到图片”,”url”:”http:\/\/m.image.so.com\/i?q=%E7%BE%8E%E5%A5%B3”}

近期上代码,今天没时间了
160809:添加代码,如果想免去自己写代码的麻烦,快速出效果,请复制代码:
布局文件
<?xml version="1.0" encoding="utf-8"?> <br><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".ui.MainActivity">

<Button    android:layout_width="match_parent"    android:layout_height="wrap_content"    android:onClick="reqVoice"    android:text="开始识别" /><Button    android:layout_width="match_parent"    android:layout_height="wrap_content"    android:onClick="stopVoice"    android:text="结束识别" /><Button    android:layout_width="match_parent"    android:layout_height="wrap_content"    android:onClick="introduce"    android:text="介绍晨之晖" /><Button    android:layout_width="match_parent"    android:layout_height="wrap_content"    android:onClick="bequiet"    android:text="一键静音" /><Button    android:layout_width="match_parent"    android:layout_height="wrap_content"    android:onClick="cover"    android:text="恢复音量" />

</LinearLayout>
activity :

/************************************************* * @desc 改包名 com.czh.myrob * 1 语义识别解析 :requestTuringAPI(String requestInfo) * 2 语音合成播报:TTSManager.startTTS(String ttsContent) * 3 * @auther LiJianfei * @time 2016/8/6 9:41 ************************************/public class MainActivity extends BaseActivity {    private InitListener initListener;    private TuringApiManager m;    private TTSListener ttsListener;    private TTSManager ttsManager;    private VoiceRecognizeManager voiceRecognizeManager;    private String ttsString;// 将要播报的语音    private AudioManager audioManager;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);        audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, 5, 0);        setRecognize();    }    /**     * 启动语音识别     *     * @param v     */    public void reqVoice(View v) {        voiceRecognizeManager.startRecognize();// 开始收集语音        showSnack(v, "语音识别已启动");    }    public void stopVoice(View v) {        voiceRecognizeManager.stopRecognize();        showSnack(v, "语音识别已关闭");    }    public void introduce(View v) {        m.requestTuringAPI("晨之晖");//        showSnack(v, "语音识别已关闭");    }    public void bequiet(View v) {        audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, 0, 0);//        showSnack(v, "语音识别已关闭");    }    public void cover(View v) {        audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, 5, 0);//        showSnack(v, "语音识别已关闭");    }    private void initTuling() {        /**         *E 初始化图灵组件         */        SDKInitBuilder sdkInitBuilder = new SDKInitBuilder(this);        sdkInitBuilder.context = this;        sdkInitBuilder.setTuringKey(Constant.TULING_KEY);        sdkInitBuilder.setSecret(Constant.TULING_SECRET);        sdkInitBuilder.setUniqueId(Constant.UniqueId);        SDKInit.init(sdkInitBuilder, initListener);    }    private void setRecognize() {        //  A      初始化ASR语音识别状态监听        VoiceRecognizeListener listener = new VoiceRecognizeListener() {            @Override            public void onStartRecognize() {//                DebugLogUtil.getInstance().Info("onStartRecognize=");            }            @Override            public void onRecordStart() {//                DebugLogUtil.getInstance().Info("onRecordStart=");            }            @Override            public void onRecordEnd() {                DebugLogUtil.getInstance().Info("onRecordEnd=");            }            @Override            public void onRecognizeResult(String s) {//        获取识别结果,在步骤2里listener的回调方法onRecognizeResult中获取识别结果。然后传入语义解析                m.requestTuringAPI(s);                DebugLogUtil.getInstance().Info("onRecognizeResult 获取语音识别结果=" + s);            }            @Override            public void onRecognizeError(String s) {//                TODO  这里应该做人性化判断  提醒用户说话                if (s == null || s.equals("") || s.equals("没有说话")) {                    ttsManager.startTTS("亲,说两句呗");                }                DebugLogUtil.getInstance().Info("onRecognizeError=" + s);            }            @Override            public void onVolumeChange(int i) {                DebugLogUtil.getInstance().Info("onVolumeChange=" + i);            }        };        //        初始化百度语音        voiceRecognizeManager = new VoiceRecognizeManager(this, Constant.BDtuisongAPIKey, Constant.BDtuisongSecret_Key);//        设定ASR状态监听        voiceRecognizeManager.setVoiceRecognizeListener(listener);        /*B  网络请求状态监听*/        final HttpConnectionListener httpConnectionListener = new HttpConnectionListener() {            @Override            public void onError(ErrorMessage errorMessage) {                DebugLogUtil.getInstance().Info("网络请求监听onError");            }            @Override            public void onSuccess(RequestResult requestResult) {//                TODO 在这里应该做解析和判断                ttsString = requestResult.getContent().toString();                String text;                String code;                String url;                JSONObject object = (JSONObject) requestResult.getContent();                try {                    code = object.getString("code");                    if (code.equals(200000)) {// 解析图片和其他生活帮助等信息返回的页面                        url = object.getString("url");                    }                    text = object.getString("text");                    ttsManager.startTTS(text);// 合成 播报                } catch (JSONException e) {                    e.printStackTrace();                    DebugLogUtil.getInstance().Info("objec解析失败");                }                DebugLogUtil.getInstance().Info(requestResult.getType() + "网络请求成功" + requestResult.getContent());            }        };        /*C  组件状态监听*/        initListener = new InitListener() {            @Override            public void onComplete() {//                实例化TuringApiManager类                m = new TuringApiManager(App.getInstance());                m.setHttpListener(httpConnectionListener);            }            @Override            public void onFail(String s) {                DebugLogUtil.getInstance().Error("图灵初始化onFail");            }        };        initTTSListner();    }    /**     * 2  初始化语音识别     */    private void initTTSListner() {    /*D 初始化语音合成监听*/        ttsListener = new TTSListener() {            @Override            public void onSpeechStart() {                DebugLogUtil.getInstance().Error("语音识别onSpeechStart");            }            @Override            public void onSpeechProgressChanged() {//                DebugLogUtil.getInstance().Error("语音识别onSpeechProgressChanged");            }            @Override            public void onSpeechPause() {                DebugLogUtil.getInstance().Error("语音识别onSpeechPause");            }            @Override            public void onSpeechFinish() {                /*语音合成后,就会触发onSpeechFinish(),这样即可在其方法中添加相应的逻辑。*/                DebugLogUtil.getInstance().Error("语音识别结束Finish");//                TODO  能在这里调用语音识别  不用再按启动语音识别吗   能!                voiceRecognizeManager.startRecognize();// 重新开始收集语音            }            @Override            public void onSpeechError(int i) {                DebugLogUtil.getInstance().Error("语音识别onSpeechError" + i);            }            @Override            public void onSpeechCancel() {                DebugLogUtil.getInstance().Error("语音识别 onSpeechCancel");            }        };        ttsManager = new TTSManager(this, Constant.BDtuisongAPIKey, Constant.BDtuisongSecret_Key);        ttsManager.setTTSListener(ttsListener);        initTuling();// 最后调用这里    }    @Override    protected void onPause() {//        退出界面要提升系统音量  最完美的应该是进入时判断目前音量 退出app时 恢复这个音量!        audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, 5, 0);        super.onPause();    }}
3 0
原创粉丝点击