mycroft-core [提案] 通过唤醒词实现内置的中断支持

e4eetjau  于 2个月前  发布在  其他
关注(0)|答案(3)|浏览(38)

所以我最近尝试了MyCroft,对于它能够做到的事情感到相当印象深刻!它不像Alexa等那样强大,但它相当可靠,我喜欢它是用Python编写的,似乎很容易扩展。
话虽如此,几年前曾提到的一个主要问题是MyCroft在说某事时不能总是被中断。如果一个技能最终说了很长一段时间而没有实现“停止”命令,这将是一个真正的问题。
当然,#1478是这个问题的主要部分。如果MyCroft一开始就听不到唤醒词,那么它实际上无法对唤醒词做任何事情。
但是除此之外,我想提出另一个建议:在MyCroft核心中内置一个功能,始终监听唤醒词,无论它正在做什么。如果听到唤醒词,中断正在做的事情并执行新的命令。这将使您始终能够依赖于能够说类似“嘿MyCroft,停止”或“嘿MyCroft,没关系”的话,当您不再想听它说什么时,并且它将防止意外卡住做一些您不希望它做的事情的可能性。在这些情况下,“继续”和“继续”等命令可以存在,以便在发生误报的情况下恢复之前正在做的事情。
这个建议的主要原因如下:

  • 一致性。MyCroft用户始终知道他们可以中断MyCroft,并且如果他们错误地中断了,可以在中断后恢复。
  • 简化。技能需要自己实现“停止”命令;现在它已经内置了。

当然,我对MyCroft的内部工作原理知之甚少,所以请让我知道这个建议是否偏离了轨道。😅
🕷️

2exbekwf

2exbekwf1#

你好,Layla,欢迎来到Mycroft,很高兴你喜欢它:)
在这里,这通常被称为“插话”。正如你提到的,最大的障碍是Mycroft能够听到唤醒词。仅在软件中这样做是困难的。我们放出了一段时间的悬赏金,许多人尝试过,但整个公司都存在来解决这个问题,所以这一直是个大胆的想法。
要解决这个问题的最佳方法是使用更好的硬件。我们在Mark II中使用的麦克风阵列为我们提供了一些非常有用的新工具,如声学回声消除(AEC)。查看这个video from Seeed,看看它带来了多大的变化。
因此,插话支持已经存在于Mycroft中,能够听到用户的限制是一个挑战,尤其是在Picroft和其他设备上,用户可能正在使用各种输入设备。
我们一直在讨论一些其他方法来改善在各种环境中的唤醒词检测和与其他背景噪音,但我们的首要关注点是提高对更多样化声音的检测。目前,对于大多数女性和儿童来说,体验是非常糟糕的。
至于“停止”命令,有一个默认的停止功能,它会执行诸如结束媒体播放等操作,然后技能可以添加自己的自定义停止方法,如果他们正在做一些可能需要“停止”的事情。
就语音对话而言,我认为只有发起某些对话的技能才能停止该语音的输出。所以这目前取决于技能开发者是否认为这是他们技能的适当行为。然而,我当然可以看到将其作为通用行为的观点。

cwdobuhd

cwdobuhd2#

我想到的一个想法是,你可以为停止MyCroft正在做的事情创建一个完全独立的API,可能实现为按钮或键盘组合(尽管在PC上如何实现这一点并不清楚,除非你有一个漂亮的GUI界面)。这将更容易实现。

实际上,对话框才是真正的问题所在。你可以通过计数技能轻松地看到它(告诉MyCroft数到500或其他数字)。目前,我们唯一能够让它在那之后停止的方法是通过杀死MyCroft,这并不是理想的解决方案。

9q78igpj

9q78igpj3#

刚刚为Count Skill创建了一个PR,但我确实从更广泛的Angular 看到了你的观点。
这不是我们现在可以优先考虑的事情,所以我会保持这个开放状态,除非其他人有想法或想提出解决方案。

相关问题