android 科大讯飞语音唤醒的使用

编程入门 行业动态 更新时间:2024-10-06 18:33:14

android 科大讯<a href=https://www.elefans.com/category/jswz/34/1739065.html style=飞语音唤醒的使用"/>

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 科大讯飞语音唤醒的使用

本文发布于:2024-02-14 11:58:10,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1763029.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:飞语   科大   android

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!