Mycroft-core: Pemblokiran kata-kata kutukan Mycroft `` **** `mengganggu pencarian dan fungsi lainnya

Dibuat pada 11 Nov 2017  ·  8Komentar  ·  Sumber: MycroftAI/mycroft-core

(Untuk laporan bug ini #### akan menunjukkan penyensoran pilihan saya sendiri, karena saya tidak tahu kebijakan proyek ini tentang pengutukan. **** akan menunjukkan kata-kata penyensoran Mycroft.)

Saat menguji keterampilan, saya menyadari bahwa di suatu tempat dalam penguraian masukan saya, kata-kata kutukan yang terdeteksi berubah menjadi tanda bintang, seperti kueri " #### you" ditafsirkan sebagai " **** Anda". Ini mungkin default yang wajar, tetapi saya ingin memutar album yang berisi judul eksplisit, dan fitur ini merusak fungsionalitas itu.

Ini sepertinya memengaruhi inti, bukan hanya keterampilan pihak ketiga:

Langkah-langkah untuk mereproduksi:

  1. Ucapkan kata kutukan setelah kata bangun. Misalnya, "hai Mycroft, #### Anda." (Jika Anda mencari judul lagu, Anda bisa mengatakan sesuatu seperti, "hai Mycroft, putar #### polisi oleh NWA")

Perilaku yang diamati:
Mycroft melaporkan dan mengartikan " #### you" sebagai " **** you."

Perilaku yang diharapkan:
Mycroft tidak menyensor kata-kata kutukan, karena itu diperlukan untuk memutar lagu dengan judul eksplisit. Secara opsional, ini harus merupakan perilaku yang dapat dikonfigurasi dan didokumentasikan.

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

Komentar yang paling membantu

Saya dari Jersey dan banyak bersumpah, ini adalah masalah bagi saya juga.

Semua 8 komentar

(Ini sebenarnya bug nyata meskipun saya baru pada proyek dan sifatnya yang tidak biasa.)

Saya mengalami ini juga. Akan jauh lebih baik untuk memilikinya hanya sebagai pilihan daripada sebagai default.

Ini untuk diskusi minggu lalu, saya pikir kesimpulannya adalah membuat perubahan untuk memungkinkan ini dimatikan. @matheuslima dapat mengomentari ini?

Saya dari Jersey dan banyak bersumpah, ini adalah masalah bagi saya juga.

ada kemajuan dalam masalah ini? penyensoran benar-benar mengganggu.

Hei, saya tidak ada ketika masalah ini pertama kali diangkat jadi bukan bagian dari diskusi itu, tetapi ini sebenarnya adalah layanan Google STT yang kami gunakan untuk melakukan penyensoran. Akan perlu melihat apakah ada bendera yang bisa kita setel pada permintaan untuk mematikannya. Jika ada yang sudah tahu, silakan bergabung.

Dari sekilas masalah ini, saya dapat menentukan yang berikut ini:

  • Kebanyakan layanan STT yang didukung Mycroft (dengan Google STT saat ini menjadi default) memiliki tanda profanity_filter yang diteruskan ke API.

  • Di kelas STT Mycroft, ini disetel ke false untuk kelas IBMWatson STT sesuai: baris kode ini , namun parameter ini tampaknya tidak disetel untuk GoogleSTT class.

  • Di kelas GoogleSTT , parameter ini tampaknya tidak disetel , dan menurut saya ini adalah penyebab utama Masalah ini. Ini adalah dokumen untuk Google STT - parameternya disebut ProfanityFilter .

  • Namun, menurut saya jawabannya bukan hanya dengan menyetel profanity_filter menjadi false di kelas GoogleSTT . Saya pikir kita harus memberi pengguna kemampuan untuk mengatur ini pada basis per perangkat, seperti Wake Words dan mesin STT dan suara TTS dapat diatur pada basis per perangkat di: https://account.mycroft.ai/ perangkat /

  • Oleh karena itu saya pikir ini membutuhkan perubahan pada backend Beranda Mycroft untuk memiliki implementasi yang ideal.

Apa yang saya coba lakukan sebagai solusi adalah menerapkan variabel self.config di mycroft.conf :

  // Profanity filter
  "profanity_filter": false,

Ini kemudian membutuhkan dukungan di kelas STT , yaitu ini adalah apa yang saya coba di kelas dasar STT, tetapi tidak berhasil;

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

(Pada titik ini mikrofon saya berhenti berfungsi dengan Mycroft karena beberapa alasan aneh, dan tidak ada yang saya lakukan yang dapat membuatnya mengambil mikrofon lagi, jadi saya tidak dapat melanjutkan pengujian)

Ini tidak berhasil - ProfanityFilter masih diset ke True , dan sisa *** . Tapi, ini mungkin menjadi petunjuk bagi orang lain yang ingin mengatasinya.

Saya menguji modul Google STT dan filter kata-kata kotor tampaknya dinonaktifkan secara default, tetapi mengharuskan seseorang untuk memiliki akun cloud google untuk digunakan.

API yang digunakan oleh backend Mycroft (yang bukan layanan Google Cloud Speech to Text, tetapi API lama Google lainnya) selalu mengaktifkannya dan tidak memungkinkan untuk dimatikan jika saya mengingatnya dengan benar.

Pengaturan konfigurasi mungkin merupakan ide yang bagus. Default harus mati menurut saya.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat