示例#1
0
    def in_training_intent(self, message: Any, sender: RhasspyActor) -> None:
        """Handle messages in training_intent state."""
        if isinstance(message, IntentTrainingComplete):
            self._logger.info("Training complete")

            if self.reload_actors_after_training:
                self._logger.debug("Reloading actors")

                # Wake listener
                self.send(self.wake, ActorExitRequest())
                self._wake = self.createActor(self.wake_class)
                self.actors["wake"] = self.wake

                # Speech decoder
                self.send(self.decoder, ActorExitRequest())
                self._decoder = self.createActor(self.decoder_class)
                self.actors["decoder"] = self.decoder

                # Intent recognizer
                self.send(self.recognizer, ActorExitRequest())
                self._recognizer = self.createActor(self.recognizer_class)
                self.actors["recognizer"] = self.recognizer

                # Configure actors
                self.wait_actors = {
                    "wake": self.wake,
                    "decoder": self.decoder,
                    "recognizer": self.recognizer,
                }

                for actor in self.wait_actors.values():
                    if actor == self.mqtt:
                        continue  # skip

                    self.send(
                        actor,
                        ConfigureEvent(self.profile,
                                       preload=self.preload,
                                       **self.actors),
                    )

                self.transition("training_loading")
            else:
                self.transition("ready")
                self.send(self.training_receiver, ProfileTrainingComplete())
        elif isinstance(message, IntentTrainingFailed):
            self.transition("ready")
            self.send(self.training_receiver,
                      ProfileTrainingFailed(message.reason))
示例#2
0
    def in_training_loading(self, message: Any, sender: RhasspyActor) -> None:
        """Handle messages in training_loading state."""
        if isinstance(message, Configured):
            self.problems[message.name] = message.problems
            self.wait_actors = {
                name: actor
                for name, actor in self.wait_actors.items() if actor != sender
            }

            if not self.wait_actors:
                self._logger.info("Actors reloaded")
                self.transition("ready")
                self.send(self.training_receiver, ProfileTrainingComplete())
        else:
            self.handle_forward(message, sender)