示例#1
0
    def _listen(self, hello: str, voice) -> tuple:
        lvl = 5  # Включаем монопольный режим
        commands = None

        if self.cfg.gts('alarmkwactivated'):
            self.own.play(self.cfg.path['ding'], lvl, blocking=2)
        else:
            self.own.set_lvl(lvl)
            self.own.kill_popen()
        self.log('audio devices: {}'.format(pyaudio.PyAudio().get_device_count() - 1), logger.DEBUG)

        hello = hello or self.sys_say.hello
        file_path = self.own.tts(hello) if not voice and hello else None

        if self.cfg.gts('blocking_listener'):
            audio, record_time, energy, rms = self._block_listen(hello, lvl, file_path)
        else:
            audio, record_time, energy, rms = self._non_block_listen(hello, lvl, file_path)

        self.log(F('Голос записан за {}', utils.pretty_time(record_time)), logger.INFO)
        # Выключаем монопольный режим
        self.own.clear_lvl()

        if self.cfg.gts('alarmstt'):
            self.own.play(self.cfg.path['dong'])
        if audio is not None:
            commands = self.voice_recognition(audio)

        if commands:
            self.log(utils.recognition_msg(commands, energy, rms), logger.INFO)
        return commands, rms
示例#2
0
 def _detected_sr(self, msg: str, model_name: str, model_msg: str or None, vad, cb=None):
     energy, rms = (vad.energy_threshold, vad.rms()) if vad is not None else (None, None)
     if not cb:
         msg = 'Activation error: \'{}\', trigger: {}{}'.format(msg, model_name, model_msg)
         msg = recognition_msg(msg, energy, rms)
         self.log(msg, logger.DEBUG)
         return
     self._recognition_sr_action(msg, energy, rms, model_name, model_msg, cb)
示例#3
0
 def _recognition_sr_action(self, msg, energy, rms, model_name, model_msg, cb):
     self.log(recognition_msg(msg, energy, rms), logger.INFO)
     self.log(F('Голосовая активация по {}{}', model_name, model_msg), logger.INFO)
     cb(False, msg, rms, model_name)