Mycroft-core: Le blocage par Mycroft des mots maudits «****» interfère avec les recherches et autres fonctionnalités

Créé le 11 nov. 2017  ·  8Commentaires  ·  Source: MycroftAI/mycroft-core

(Pour ce rapport de bogue, #### indiquera ma propre censure auto-sélectionnée, car je ne connais pas les politiques de ce projet concernant la malédiction. **** indiquera les mots de censure de Mycroft.)

En testant une compétence, j'ai réalisé que quelque part dans l'analyse de mon entrée, il transformait les mots malédictions détectés en astérisques, comme la requête " #### vous" étant interprétée comme " **** vous". Cela peut être une valeur par défaut raisonnable, mais je souhaite lire des albums contenant des titres explicites, et cette fonctionnalité rompt cette fonctionnalité.

Cela semble affecter le noyau, pas seulement une compétence tierce:

Étapes à suivre pour reproduire:

  1. Dites un mot maudit après le mot de réveil. Par exemple, "hé Mycroft, #### vous." (Si vous recherchiez un titre de chanson, vous pourriez dire quelque chose comme "Hey Mycroft, joue #### the police by NWA")

Comportement observé:
Mycroft signale et interprète « #### vous» comme « **** vous».

Comportement prévisible:
Mycroft ne censure pas les mots maudits, car ils sont nécessaires pour jouer des chansons avec des titres explicites. En option, cela devrait être un comportement configurable et documenté.

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'] 
Bug - quick hacktoberfest help wanted

Commentaire le plus utile

Je viens de Jersey et jure beaucoup, c'est aussi un problème pour moi.

Tous les 8 commentaires

(Il s'agit en fait d'un vrai bug malgré ma nouveauté dans le projet et sa nature inhabituelle.)

J'ai rencontré ça aussi. Ce serait beaucoup mieux de l'avoir simplement comme une option plutôt que par défaut.

C'était à discuter la semaine dernière, je pense que la conclusion était de faire des changements pour permettre de désactiver cette option. @matheuslima pouvez-vous commenter cela?

Je viens de Jersey et jure beaucoup, c'est aussi un problème pour moi.

des progrès sur cette question? la censure est vraiment agaçante.

Hé, je n'étais pas là lorsque ce problème a été soulevé pour la première fois, donc je ne faisais pas partie de ces discussions, mais c'est en fait le service Google STT que nous utilisons pour la censure. Aurait besoin de voir s'il y a un indicateur que nous pouvons définir sur les demandes de le désactiver. Si quelqu'un le sait déjà, veuillez intervenir.

À partir d'un bref aperçu de ce problème, j'ai pu déterminer ce qui suit:

  • La plupart des services STT pris en charge par Mycroft (Google STT étant actuellement la valeur par défaut) ont un indicateur profanity_filter qui est transmis à l'API.

  • Dans les classes STT de Mycroft, ceci est défini sur false pour la classe IBMWatson STT selon: cette ligne de code , mais ce paramètre ne semble pas être défini pour le GoogleSTT classe.

  • Dans la classe GoogleSTT , ce paramètre ne semble pas être défini , et je pense que c'est la cause première de ce problème. Voici la documentation du STT de Google - le paramètre s'appelle ProfanityFilter .

  • Cependant, je ne pense pas que la réponse soit simplement de définir profanity_filter pour être false dans la classe GoogleSTT . Je pense que nous devrions donner aux utilisateurs la possibilité de définir cela par appareil, tout comme Wake Words, les moteurs STT et les voix TTS peuvent être définis par appareil à l'adresse: https://account.mycroft.ai/ dispositifs/

  • Par conséquent, je pense que cela nécessite des modifications du backend Mycroft Home pour avoir une implémentation idéale.

Ce que j'ai essayé de faire comme solution de contournement était d'implémenter une nouvelle variable self.config dans mycroft.conf :

  // Profanity filter
  "profanity_filter": false,

Cela nécessite alors un support dans les classes STT , c'est-à-dire que c'est ce que j'ai essayé dans la classe de base STT, mais cela n'a pas fonctionné;

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

(À ce stade, mon microphone a cessé de fonctionner avec Mycroft pour une raison étrange, et rien de ce que j'ai fait n'a pu le faire reprendre le microphone, donc je n'ai pas pu continuer à tester)

Cela n'a pas fonctionné - le ProfanityFilter est toujours défini sur True , et le *** reste. Mais cela pourrait être un indice pour d'autres qui veulent s'attaquer à cela.

J'ai testé le module Google STT et le filtre de blasphème semble être désactivé par défaut, mais il faut que vous ayez un compte Google Cloud à utiliser.

L'API utilisée par le backend Mycroft (qui n'est pas le service Google Cloud Speech to Text, mais une autre API plus ancienne de Google) l'a toujours activée et ne permet pas de la désactiver si je me souviens bien.

Un réglage de configuration est probablement une bonne idée cependant. Le défaut devrait être désactivé à mon avis.

Cette page vous a été utile?
0 / 5 - 0 notes