Mycroft-core: يتعارض حظر Mycroft للكلمات النابية `` **** '' مع عمليات البحث والوظائف الأخرى

تم إنشاؤها على ١١ نوفمبر ٢٠١٧  ·  8تعليقات  ·  مصدر: MycroftAI/mycroft-core

(بالنسبة لتقرير الخطأ هذا ، سيشير #### إلى رقابتي المختارة ذاتيًا ، لأنني لا أعرف سياسات هذا المشروع فيما يتعلق باللعن. سيشير **** إلى كلمات Mycroft للرقابة.)

أثناء اختبار إحدى المهارات ، أدركت أنه في مكان ما أثناء تحليل إدخالاتي ، يتم تحويل كلمات اللعنات المكتشفة إلى علامات نجمية ، مثل تفسير الاستعلام " #### you" على أنه " **** you". قد يكون هذا افتراضيًا معقولاً ، لكنني أريد تشغيل ألبومات تحتوي على عناوين صريحة ، وهذه الميزة تكسر هذه الوظيفة.

يبدو أن هذا يؤثر على الجوهر ، وليس فقط على مهارة طرف ثالث:

خطوات التكاثر:

  1. قل كلمة بذيئة بعد كلمة الاستيقاظ. على سبيل المثال ، "يا Mycroft ، #### أنت." (إذا كنت تبحث عن عنوان أغنية ، فقد تقول شيئًا مثل ، "مرحبًا Mycroft ، العب #### the police by NWA")

السلوك المرصود:
تقارير Mycroft وتفسر " #### you" كـ " **** أنت."

سلوك متوقع:
لا يقوم 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'] 
Bug - quick hacktoberfest help wanted

التعليق الأكثر فائدة

أنا من جيرسي وأقسم كثيرًا ، هذه مشكلة بالنسبة لي أيضًا.

ال 8 كومينتر

(هذا في الواقع خطأ حقيقي على الرغم من حداثتي في المشروع وطبيعته غير العادية.)

جريت في هذا أيضا. سيكون من الأفضل أن يكون خيارًا فقط بدلاً من الخيار الافتراضي.

كان هذا قيد المناقشة الأسبوع الماضي ، وأعتقد أن النتيجة كانت إجراء تغييرات للسماح بإيقاف هذا. @ matheuslima هل يمكنك التعليق على هذا؟

أنا من جيرسي وأقسم كثيرًا ، هذه مشكلة بالنسبة لي أيضًا.

أي تقدم في هذه المسألة؟ الرقابة أمر مزعج حقًا.

مرحبًا ، لم أكن موجودًا عندما أثيرت هذه المشكلة لأول مرة ، لذا لم تكن جزءًا من تلك المناقشات ، ولكن هذه في الواقع خدمة Google STT التي نستخدمها للقيام بالرقابة. سنحتاج إلى معرفة ما إذا كان هناك علم يمكننا تعيينه على الطلبات لإيقاف تشغيله. إذا كان أي شخص يعرف بالفعل ، يرجى الاتصال.

من خلال عرض موجز لهذه المشكلة ، تمكنت من تحديد ما يلي:

  • معظم خدمات STT التي تدعمها Mycroft (مع Google STT حاليًا هي الافتراضي) لها علامة profanity_filter والتي يتم تمريرها إلى API.

  • في فئات Mycroft's STT ، يتم تعيين هذا على false لفئة IBMWatson STT حسب: هذا السطر من التعليمات البرمجية ، ولكن لا يبدو أن هذه المعلمة معيّنة لـ GoogleSTT فئة

  • في فئة GoogleSTT ، لم يتم تعيين هذه المعلمة ، وأعتقد أن هذا هو السبب الأساسي لهذه المشكلة. هذه هي المستندات الخاصة بـ STT من Google - ويطلق على المعلمة اسم ProfanityFilter .

  • ومع ذلك ، لا أعتقد أن الإجابة هي فقط تعيين profanity_filter ليكون false في فئة GoogleSTT . أعتقد أنه يجب أن نمنح المستخدمين القدرة على تعيين هذا على أساس كل جهاز ، تمامًا كما يمكن تعيين محركات Wake Words و STT وأصوات TTS على أساس كل جهاز على: https://account.mycroft.ai/ الأجهزة/

  • لذلك أعتقد أن هذا يتطلب تغييرات في الواجهة الخلفية لـ Mycroft Home للحصول على تطبيق مثالي.

ما حاولت القيام به كحل بديل هو تنفيذ متغير self.config في mycroft.conf :

  // 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 cloud لاستخدامه.

واجهة برمجة التطبيقات المستخدمة من قبل Mycroft الخلفية (وهي ليست خدمة Google Cloud Speech to Text ، ولكن إحدى واجهات برمجة التطبيقات الأقدم من Google) تم تمكينها دائمًا ولا تسمح بإيقاف تشغيلها إذا كنت أتذكر بشكل صحيح.

ربما يكون إعداد التكوين فكرة جيدة على الرغم من ذلك. يجب إيقاف التقصير في رأيي.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات

القضايا ذات الصلة

mghoffmann picture mghoffmann  ·  6تعليقات

Ahmed-Benj picture Ahmed-Benj  ·  7تعليقات

el-tocino picture el-tocino  ·  4تعليقات

forslund picture forslund  ·  6تعليقات

AMDphreak picture AMDphreak  ·  10تعليقات