(对于此错误报告, ####
将指示我自己的审查制度,因为我不知道该项目的有关诅咒的政策。 ****
将指示Mycroft审查字词。)
在测试一项技能时,我意识到在解析输入内容时,它会将检测到的诅咒词变成星号,例如查询“ ####
you”被解释为“ ****
you”。 这可能是一个合理的默认值,但是我想播放包含显式标题的专辑,并且此功能破坏了该功能。
这似乎影响了核心技能,而不仅仅是第三方技能:
重现步骤:
####
您。” (如果您正在搜索歌曲标题,您可能会说类似“嘿,Mycroft,扮演NWA的####
警察”)观察到的行为:
Mycroft报告并将“ ####
您”解释为“ ****
您”。
预期行为:
Mycroft不会审查单词,因为播放带有明确标题的歌曲是必需的。 (可选)这应该是可配置的并记录在案的行为。
16:50:56.682 - mycroft.client.speech.listener:transcribe:144 - DEBUG - STT: f*** you
16:50:56.682 - __main__:handle_utterance:55 - INFO - Utterance: [u'f*** you']
(尽管我是该项目的新手,而且它的性质与众不同,但这实际上是一个真正的错误。)
我也遇到了这个。 将其作为选项而不是默认值会更好。
这是上周要讨论的问题,我认为结论是要进行更改以使此功能可以关闭。 @matheuslima您可以对此发表评论吗?
我来自泽西岛,经常发誓,这对我来说也是一个问题。
在这个问题上有什么进展吗? 审查真的很烦人。
嘿,我什么时候第一次提出这个问题的,所以不在讨论范围之内,但这实际上是我们用来进行审查的Google STT服务。 需要查看是否存在可以在请求上将其关闭的标志。 如果有人知道,请发出提示。
从这个问题的简短摘要中,我已经能够确定以下内容:
Mycroft支持的大多数STT服务(当前默认为Google STT)具有profanity_filter
标志,该标志将传递给API。
在Mycroft的STT类中,对于IBMWatson
STT类,将其设置为false
,如下所示:这行代码,但是似乎未为GoogleSTT
设置此参数。
在GoogleSTT
类中,似乎未设置此参数,我认为这是此Issue的根本原因。 这些是Google STT的ProfanityFilter
。
但是,我不认为答案只是在GoogleSTT
类中将profanity_filter
设置为false
。 我认为我们应该让用户能够按设备设置此功能,就像可以在以下位置按设备设置唤醒单词和STT引擎以及TTS语音一样:https://account.mycroft.ai/设备/
因此,我认为这需要更改Mycroft Home后端才能实现理想的实现。
作为解决方法,我试图在mycroft.conf
实现一个新的self.config
变量:
// Profanity filter
"profanity_filter": false,
然后,这需要在STT
类中提供支持,即这是我在STT基类中尝试过的方法,但是没有用;
class STT(metaclass=ABCMeta):
""" STT Base class, all STT backends derives from this one. """
def __init__(self):
config_core = Configuration.get()
self.lang = str(self.init_language(config_core))
config_stt = config_core.get("stt", {})
self.config = config_stt.get(config_stt.get("module"), {})
self.credential = self.config.get("credential", {})
self.recognizer = Recognizer()
self.can_stream = False
# set profanity filter
self.profanity_filter = self.config.get('profanity_filter')
<strong i="36">@staticmethod</strong>
def init_language(config_core):
lang = config_core.get("lang", "en-US")
langs = lang.split("-")
if len(langs) == 2:
return langs[0].lower() + "-" + langs[1].upper()
return lang
<strong i="37">@abstractmethod</strong>
def execute(self, audio, language=None, ProfanityFilter=self.profanity_filter):
pass
(这时我的麦克风由于某种奇怪的原因而停止与Mycroft一起工作,并且我什么也做不了,无法再次拿起麦克风,因此无法继续测试)
这不起作用- ProfanityFilter
仍设置为True
,而***
保留。 但是,这可能是其他想要解决此问题的线索。
我测试了Google STT模块,亵渎过滤器默认情况下处于关闭状态,但需要一个人才能使用Google云帐户。
Mycroft后端使用的API(不是Google云语音转换为文本服务,而是Google的另一个较旧的API)始终启用了该API,并且如果我没有记错的话,也不允许将其关闭。
配置设置可能是一个好主意。 我认为默认值应该关闭。
最有用的评论
我来自泽西岛,经常发誓,这对我来说也是一个问题。