飞语音唤醒的使用"/>
android 科大讯飞语音唤醒的使用
这篇博客主要讲解一下科大讯飞的语音唤醒的使用
科大讯飞语音唤醒可以运用到很多场景也是AI的第一步 , 比如叮咚音响 ,智能风扇一些之类的,我之前项目需要做这样的一个需求!然后根据科大讯飞的Dome去集成的!
那我们现在开始讲该怎么用了 ! 前面集成SDK就不说了,网上有很多这种集成的案列 , 或者跟着官网的API去做也可以,我这里主要写一下代码的实现!
代码:
@Override public void onCreate() {StringBuffer param = new StringBuffer();param.append("appid=" + getString(R.string.app_id));param.append(",");// 设置使用v5+ param.append(SpeechConstant.ENGINE_MODE + "=" + SpeechConstant.MODE_MSC);SpeechUtility.createUtility(Global.this, param.toString());// 初始化唤醒对象 mIvw = VoiceWakeuper.createWakeuper(Global.this, null);initData();super.onCreate(); }private void initData() {//非空判断,防止因空指针使程序崩溃 mIvw = VoiceWakeuper.getWakeuper();if (mIvw != null) {// 清空参数 mIvw.setParameter(SpeechConstant.PARAMS, null);// 唤醒门限值,根据资源携带的唤醒词个数按照“id:门限;id:门限”的格式传入 mIvw.setParameter(SpeechConstant.IVW_THRESHOLD, "0:" + curThresh);// 设置唤醒模式 mIvw.setParameter(SpeechConstant.IVW_SST, "wakeup");// 设置持续进行唤醒 mIvw.setParameter(SpeechConstant.KEEP_ALIVE, keep_alive);// 设置闭环优化网络模式 mIvw.setParameter(SpeechConstant.IVW_NET_MODE, ivwNetMode);// 设置唤醒资源路径 mIvw.setParameter(SpeechConstant.IVW_RES_PATH, getResource());// 设置唤醒录音保存路径,保存最近一分钟的音频 mIvw.setParameter(SpeechConstant.IVW_AUDIO_PATH, Environment.getExternalStorageDirectory().getPath() + "/msc/ivw.wav");mIvw.setParameter(SpeechConstant.AUDIO_FORMAT, "wav");// 如有需要,设置 NOTIFY_RECORD_DATA 以实时通过 onEvent 返回录音音频流字节 //mIvw.setParameter( SpeechConstant.NOTIFY_RECORD_DATA, "1" ); // 启动唤醒 mIvw.startListening(mWakeuperListener);} else {} } /** * 唤醒后的回调 */ private WakeuperListener mWakeuperListener = new WakeuperListener() {/** * 唤醒完成 * @param result */ @Override public void onResult(WakeuperResult result) { //在这里面做你唤醒后的操作 }/** *唤醒失败 * @param error */ @Override public void onError(SpeechError error) {}/** * 唤醒开始 */ @Override public void onBeginOfSpeech() {}@Override public void onEvent(int eventType, int isLast, int arg2, Bundle obj) {switch (eventType) {// EVENT_RECORD_DATA 事件仅在 NOTIFY_RECORD_DATA 参数值为 真 时返回 case SpeechEvent.EVENT_RECORD_DATA:final byte[] audio = obj.getByteArray(SpeechEvent.KEY_EVENT_RECORD_DATA);Log.i(TAG, "ivw audio length: " + audio.length);break;}}@Override public void onVolumeChanged(int volume) {} };private String getResource() {final String resPath = ResourceUtil.generateResourcePath(Global.this, ResourceUtil.RESOURCE_TYPE.assets, "ivw/" + getString(R.string.app_id) + ".jet");Log.d(TAG, "resPath: " + resPath);return resPath; }/** * 唤醒手机屏幕并解锁 */ public void wakeUpAndUnlock() {// 获取电源管理器对象 PowerManager pm = (PowerManager) Global.this.getSystemService(Context.POWER_SERVICE);boolean screenOn = pm.isScreenOn();if (!screenOn) {// 获取PowerManager.WakeLock对象,后面的参数|表示同时传入两个值,最后的是LogCat里用的Tag PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.ACQUIRE_CAUSES_WAKEUP |PowerManager.SCREEN_BRIGHT_WAKE_LOCK, "bright");wl.acquire(10000); // 点亮屏幕 wl.release(); // 释放 }// 屏幕解锁 KeyguardManager keyguardManager = (KeyguardManager) Global.this.getSystemService(KEYGUARD_SERVICE);KeyguardManager.KeyguardLock keyguardLock = keyguardManager.newKeyguardLock("unLock");// 屏幕锁定 keyguardLock.reenableKeyguard();keyguardLock.disableKeyguard(); // 解锁 }
以上就是唤醒的代码实现
如果还有不清楚的可以在下评论,留言!
更多推荐
android 科大讯飞语音唤醒的使用
发布评论