基于Aispeech的智能对话APP(七)--唤醒相关设置

    技术2022-07-11  139

    基于Aispeech的智能对话APP(七)--唤醒相关设置

    一.开关唤醒1.1 开启语音唤醒1.2 关闭语音唤醒 二.主唤醒词操作2.1 添加/更新/删除一条主唤醒词2.2 添加/更新/删除多条主唤醒词2.3 获取主唤醒词 三.副唤醒词操作3.1 更行/获取副唤醒词 四.命令唤醒词操作4.1 添加/移除/更新一条/多条命令唤醒词4.5 清空命令唤醒词 五.打断唤醒词操作5.1 添加/移除/更新一条/多条打断唤醒词5.2 清空打断唤醒词 六.快速唤醒词操作6.1 添加/移除/更新一条/多条快速唤醒词6.2 清空快速唤醒词 七.代码下载 本篇博文是我自己在学习Aispeech的过程中,分享我遇到的问题以及如何解决。在文章的最后我会上传其代码。感兴趣的小伙伴,请自行下载。

    一.开关唤醒

    唤醒词介绍:当前除了主唤醒,唤醒词的类型还包括了 副唤醒词、命令唤醒词(快捷唤醒词)、打断唤醒词、快速唤醒词。

    副唤醒词:如果您期望为设备增加一个别名,可以通过设置该类型唤醒词来完成。

    命令唤醒词(快捷唤醒词): 如果您期望在唤醒的时候执行一条指令,可以通过设置该类型唤醒词来完成。

    打断唤醒词:如果您期望在唤醒的时候能同时打断语音播报,可以通过设置该类型唤醒词来完成。

    快速唤醒词:您想通过代码来控制快速唤醒,QuickStart词为类似“导航去”、“我想听”等,此类唤醒词只在oneshot模式下生效,作用为在未唤醒状态下语音输入“导航去天安门”,可直接进入对话流程。

    1.1 开启语音唤醒

    开启语音唤醒代码:

    public void enableWakeup() { // 开启语音唤醒 try { DDS.getInstance().getAgent().getWakeupEngine().enableWakeup(); toMain(); } catch (DDSNotInitCompleteException e) { e.printStackTrace(); } }

    1.2 关闭语音唤醒

    关闭语音唤醒代码:

    public void disableWakeup() { // 关闭语音唤醒 try { DDS.getInstance().getAgent().getWakeupEngine().disableWakeup(); toMain(); } catch (DDSNotInitCompleteException e) { e.printStackTrace(); } }

    二.主唤醒词操作

    2.1 添加/更新/删除一条主唤醒词

    添加/更新/删除一条主唤醒词代码:

    public void addMain() { try { WakeupWord minorWord = new WakeupWord() .setPinyin("ni hao xiao ming") .setWord("你好小明") .setThreshold("0.25") .addGreeting("小明又回来了"); DDS.getInstance().getAgent().getWakeupEngine().addMainWakeupWord(minorWord); toMain(); } catch (DDSNotInitCompleteException e) { e.printStackTrace(); } } public void addMain1() { try { WakeupWord minorWord = new WakeupWord() .setPinyin("ni hao xiao mei") .setWord("你好小美") .setThreshold("0.15") .addGreeting("小美回来了"); DDS.getInstance().getAgent().getWakeupEngine().addMainWakeupWord(minorWord); toMain(); } catch (DDSNotInitCompleteException e) { e.printStackTrace(); } } public void removeMainWakeupWord() { try { WakeupWord minorWord = new WakeupWord() .setPinyin("ni hao xiao ming") .setWord("你好小明"); DDS.getInstance().getAgent().getWakeupEngine().removeMainWakeupWord(minorWord); toMain(); } catch (DDSNotInitCompleteException e) { e.printStackTrace(); } }

    2.2 添加/更新/删除多条主唤醒词

    添加/更新/删除多条主唤醒词代码:

    public void addMainWakeupWords() { try { //实时添加主唤醒词-添加多条主唤醒词(最新支持) WakeupWord mainWord = new WakeupWord() .setPinyin("ni hao xiao hong") .setWord("你好小红") .addGreeting("小红在") .setThreshold("0.25"); WakeupWord mainWord2 = new WakeupWord() .setPinyin("ni hao tian tian") .setWord("你好天天") .addGreeting("天天在") .setThreshold("0.15"); List<WakeupWord> mainWordList = new ArrayList<>(); mainWordList.add(mainWord); mainWordList.add(mainWord2); DDS.getInstance().getAgent().getWakeupEngine().addMainWakeupWords(mainWordList); toMain(); } catch (DDSNotInitCompleteException e) { e.printStackTrace(); } } public void updateMain() { WakeupWord mainWord = new WakeupWord() .setPinyin("ni hao xiao gang") .setWord("你好小刚").setThreshold("0.15") .addGreeting("小刚在"); WakeupWord mainWord2 = new WakeupWord() .setPinyin("ni hao le le") .setWord("你好乐乐") .setThreshold("0.25") .addGreeting("乐乐在"); List<WakeupWord> mainWordList = new ArrayList<>(); mainWordList.add(mainWord); mainWordList.add(mainWord2); try { DDS.getInstance().getAgent().getWakeupEngine().updateMainWakeupWords(mainWordList); toMain(); } catch (DDSNotInitCompleteException e) { e.printStackTrace(); } } public void removeMain1() { try { WakeupWord mainWord1 = new WakeupWord() .setWord("你好小刚") .setPinyin("ni hao xiao gang"); WakeupWord mainWord2 = new WakeupWord() .setWord("你好乐乐") .setPinyin("ni hao le le"); List<WakeupWord> mainWordList1 = new ArrayList<>(); mainWordList1.add(mainWord1); mainWordList1.add(mainWord2); DDS.getInstance().getAgent().getWakeupEngine().removeMainWakeupWords(mainWordList1); toMain(); } catch (DDSNotInitCompleteException e) { e.printStackTrace(); } } public void removeMain2() { try { WakeupWord mainWord3 = new WakeupWord() .setWord("你好小红") .setPinyin("ni hao xiao hong"); WakeupWord mainWord4 = new WakeupWord() .setWord("你好天天") .setPinyin("ni hao tian tian"); List<WakeupWord> mainWordList = new ArrayList<>(); mainWordList.add(mainWord3); mainWordList.add(mainWord4); DDS.getInstance().getAgent().getWakeupEngine().removeMainWakeupWords(mainWordList); toMain(); } catch (DDSNotInitCompleteException e) { e.printStackTrace(); } }

    2.3 获取主唤醒词

    获取主唤醒词代码:

    public void getMain() { try { List<WakeupWord> wordList = DDS.getInstance().getAgent().getWakeupEngine().getMainWakeupWords(); Log.d(TAG, "wordList = " + wordList.toString()); } catch (DDSNotInitCompleteException e) { e.printStackTrace(); } }

    三.副唤醒词操作

    3.1 更行/获取副唤醒词

    更行/获取副唤醒词代码:

    public void updateMinorWakeupWord() { // 实时更新副唤醒词(最新支持) WakeupWord minorWord = new WakeupWord() .setPinyin("ni hao xiao le") .setWord("你好小乐") .setThreshold("0.25") .addGreeting("小乐在"); try { DDS.getInstance().getAgent().getWakeupEngine().updateMinorWakeupWord(minorWord); toMain(); } catch (DDSNotInitCompleteException e) { e.printStackTrace(); } } public void getMinorWord() { //获取当前的副唤醒词 try { String minorWakeupWord = DDS.getInstance().getAgent().getWakeupEngine().getMinorWakeupWord(); Log.d(TAG, "minorWakeupWord: " + minorWakeupWord); } catch (DDSNotInitCompleteException e) { e.printStackTrace(); } }

    四.命令唤醒词操作

    4.1 添加/移除/更新一条/多条命令唤醒词

    添加/移除/更新一条/多条命令唤醒词代码:

    public void addCommandWakeupWord() { // 实时添加命令唤醒词-添加一条命令唤醒词(最新支持) WakeupWord commandWord = new WakeupWord() .setPinyin("kai shi bo fang") .setWord("开始播放") .setThreshold("0.18") .addGreeting("好的请稍后") .setAction("sys.play"); try { DDS.getInstance().getAgent().getWakeupEngine().addCommandWakeupWord(commandWord); toMain(); } catch (DDSNotInitCompleteException e) { e.printStackTrace(); } } public void removeCommandWakeupWord() { // 实时移除命令唤醒词-移除一条命令唤醒词(最新支持) WakeupWord commandWord = new WakeupWord() .setWord("开始播放"); // .setPinyin("kai shi bo fang"); try { DDS.getInstance().getAgent().getWakeupEngine().removeCommandWakeupWord(commandWord); toMain(); } catch (DDSNotInitCompleteException e) { e.printStackTrace(); } } public void removeCommandWakeupWords() { // 实时移除命令唤醒词-移除多条命令唤醒词(最新支持) WakeupWord commandWord = new WakeupWord() .setWord("开始播放"); // .setPinyin("kai shi bo fang"); WakeupWord commandWord1 = new WakeupWord() .setWord("暂停播放"); // .setPinyin("zan ting bo fang"); List<WakeupWord> commandList = new ArrayList<>(); commandList.add(commandWord); commandList.add(commandWord1); try { DDS.getInstance().getAgent().getWakeupEngine().removeCommandWakeupWords(commandList); toMain(); } catch (DDSNotInitCompleteException e) { e.printStackTrace(); } } public void addCommandWakeupWords() { // 实时添加命令唤醒词-添加多条命令唤醒词(最新支持) WakeupWord commandWord = new WakeupWord() .setPinyin("kai shi bo fang") .setWord("开始播放") .setThreshold("0.18") .addGreeting("好的,开始播放") .setAction("sys.play"); WakeupWord commandWord1 = new WakeupWord() .setPinyin("zan ting bo fang") .setWord("暂停播放") .addGreeting("好的,暂停播放") .setThreshold("0.20") .setAction("sys.pause"); List<WakeupWord> commandList = new ArrayList<>(); commandList.add(commandWord); commandList.add(commandWord1); try { DDS.getInstance().getAgent().getWakeupEngine().addCommandWakeupWords(commandList); toMain(); } catch (DDSNotInitCompleteException e) { e.printStackTrace(); } } public void updateCommandWakeupWord() { // 实时更新命令唤醒词-更新一条命令唤醒词(最新支持) WakeupWord commandWord = new WakeupWord() .setPinyin("xia yi shou") .setWord("下一首") .setThreshold("0.18") .addGreeting("播放下一首") .setAction("sys.next"); try { DDS.getInstance().getAgent().getWakeupEngine().updateCommandWakeupWord(commandWord); toMain(); } catch (DDSNotInitCompleteException e) { e.printStackTrace(); } } public void updateCommandWakeupWords() { // 实时更新命令唤醒词-更新多条命令唤醒词(最新支持) WakeupWord commandWord = new WakeupWord() .setPinyin("xia yi shou") .setWord("下一首") .setThreshold("0.18") .addGreeting("播放下一首") .setAction("sys.next"); WakeupWord commandWord1 = new WakeupWord() .setPinyin("shang yi shou") .setWord("上一首") .addGreeting("播放上一首") .setThreshold("0.20") .setAction("sys.last"); List<WakeupWord> commandList = new ArrayList<>(); commandList.add(commandWord); commandList.add(commandWord1); try { DDS.getInstance().getAgent().getWakeupEngine().updateCommandWakeupWords(commandList); toMain(); } catch (DDSNotInitCompleteException e) { e.printStackTrace(); } }

    4.5 清空命令唤醒词

    清空命令唤醒词代码:

    public void clearCommandWakeupWord() { //清空当前设置的命令唤醒词 try { DDS.getInstance().getAgent().getWakeupEngine().clearCommandWakeupWord(); toMain(); } catch (DDSNotInitCompleteException e) { e.printStackTrace(); } }

    五.打断唤醒词操作

    5.1 添加/移除/更新一条/多条打断唤醒词

    添加/移除/更新一条/多条打断唤醒词代码:

    public void addShortcutWakeupWord() { //实时添加打断唤醒词-添加一条打断唤醒词(最新支持) WakeupWord fixWord = new WakeupWord() .setPinyin("da duan") .setWord("打断") .setThreshold("0.18"); try { DDS.getInstance().getAgent().getWakeupEngine().addShortcutWakeupWord(fixWord); toMain(); } catch (DDSNotInitCompleteException e) { e.printStackTrace(); } } public void addShortcutWakeupWords() { //实时添加打断唤醒词-添加多条打断唤醒词(最新支持) WakeupWord fixWord = new WakeupWord() .setPinyin("da duan") .setWord("打断") .setThreshold("0.18"); WakeupWord fixWord1 = new WakeupWord() .setPinyin("ting zhi") .setWord("停止") .setThreshold("0.16"); List<WakeupWord> fixList = new ArrayList<>(); fixList.add(fixWord); fixList.add(fixWord1); try { DDS.getInstance().getAgent().getWakeupEngine().addShortcutWakeupWords(fixList); toMain(); } catch (DDSNotInitCompleteException e) { e.printStackTrace(); } } public void removeShortcutWakeupWord() { //实时移除打断唤醒词-移除一条打断唤醒词(最新支持) WakeupWord fixWord = new WakeupWord() .setWord("打断"); // .setPinyin("da duan"); try { DDS.getInstance().getAgent().getWakeupEngine().removeShortcutWakeupWord(fixWord); toMain(); } catch (DDSNotInitCompleteException e) { e.printStackTrace(); } } public void removeShortcutWakeupWords() { //实时移除打断唤醒词-移除多条打断唤醒词(最新支持) WakeupWord fixWord = new WakeupWord() .setWord("打断"); // .setPinyin("da duan"); WakeupWord fixWord1 = new WakeupWord() .setWord("停止"); // .setPinyin("ting zhi"); List<WakeupWord> fixList = new ArrayList<>(); fixList.add(fixWord); fixList.add(fixWord1); try { DDS.getInstance().getAgent().getWakeupEngine().removeShortcutWakeupWords(fixList); toMain(); } catch (DDSNotInitCompleteException e) { e.printStackTrace(); } } public void updateShortcutWakeupWord() { //实时更新打断唤醒词-更新一条打断唤醒词(最新支持) WakeupWord fixWord = new WakeupWord() .setPinyin("zhong duan") .setWord("中断") .setThreshold("0.18"); try { DDS.getInstance().getAgent().getWakeupEngine().updateShortcutWakeupWord(fixWord); toMain(); } catch (DDSNotInitCompleteException e) { e.printStackTrace(); } } public void updateShortcutWakeupWords() { //实时更新打断唤醒词-更新多条打断唤醒词(最新支持) WakeupWord fixWord = new WakeupWord() .setPinyin("zhong duan") .setWord("中断") .setThreshold("0.18"); WakeupWord fixWord1 = new WakeupWord() .setPinyin("zan ting") .setWord("暂停") .setThreshold("0.16"); List<WakeupWord> fixList = new ArrayList<>(); fixList.add(fixWord); fixList.add(fixWord1); try { DDS.getInstance().getAgent().getWakeupEngine().updateShortcutWakeupWords(fixList); toMain(); } catch (DDSNotInitCompleteException e) { e.printStackTrace(); } }

    5.2 清空打断唤醒词

    清空打断唤醒词代码:

    public void clearShortCutWakeupWord() { //清空当前设置的打断唤醒词 try { DDS.getInstance().getAgent().getWakeupEngine().clearShortCutWakeupWord(); toMain(); } catch (DDSNotInitCompleteException e) { e.printStackTrace(); } }

    六.快速唤醒词操作

    6.1 添加/移除/更新一条/多条快速唤醒词

    添加/移除/更新一条/多条快速唤醒词代码:

    public void addQuickStartWords() { WakeupWord quickStartWord = new WakeupWord() .setPinyin("dao hang qu") .setWord("导航去") .setThreshold("0.15"); WakeupWord quickStartWord1 = new WakeupWord() .setPinyin("wo xiang ting") .setWord("我想听") .setThreshold("0.15"); List<WakeupWord> quickStartWordList = new ArrayList<>(); quickStartWordList.add(quickStartWord); quickStartWordList.add(quickStartWord1); try { DDS.getInstance().getAgent().getWakeupEngine().addQuickStartWords(quickStartWordList); toMain(); } catch (DDSNotInitCompleteException e) { e.printStackTrace(); } } public void removeQuickStartWord() { //实时移除一条QuickStart词 WakeupWord quickStartWord = new WakeupWord() .setWord("我想听"); // .setPinyin("wo xiang ting"); try { DDS.getInstance().getAgent().getWakeupEngine().removeQuickStartWord(quickStartWord); toMain(); } catch (DDSNotInitCompleteException e) { e.printStackTrace(); } } public void removeQuickStartWords() { WakeupWord quickStartWord = new WakeupWord() .setWord("导航去"); // .setPinyin("dao hang qu"); WakeupWord quickStartWord1 = new WakeupWord() .setWord("我想听"); // .setPinyin("wo xiang ting"); List<WakeupWord> quickStartWordList = new ArrayList<>(); quickStartWordList.add(quickStartWord); quickStartWordList.add(quickStartWord1); try { DDS.getInstance().getAgent().getWakeupEngine().removeQuickStartWords(quickStartWordList); toMain(); } catch (DDSNotInitCompleteException e) { e.printStackTrace(); } } public void updateQuickStartWords() { //更新多条QuickStart词的接口,覆盖原有的QuickStart词 WakeupWord quickStartWord = new WakeupWord() .setPinyin("dao hang dao") .setWord("导航到") .setThreshold("0.15"); List<WakeupWord> quickStartWordList = new ArrayList<>(); quickStartWordList.add(quickStartWord); try { DDS.getInstance().getAgent().getWakeupEngine().updateQuickStartWords(quickStartWordList); toMain(); } catch (DDSNotInitCompleteException e) { e.printStackTrace(); } }

    6.2 清空快速唤醒词

    清空快速唤醒词代码:

    public void clearQuickStartWords() { //清空QuickStart词 try { DDS.getInstance().getAgent().getWakeupEngine().clearQuickStartWords(); toMain(); } catch (DDSNotInitCompleteException e) { e.printStackTrace(); } }

    七.代码下载

    如果有问题无法解决或者对代码有兴趣的小伙伴,可以直接下载DUIdemo2.7.zip。

    Processed: 0.015, SQL: 10