Exemple #1
0
class PorcupineEngine(Engine):
    def __init__(self, keyword, sensitivity):
        self._porcupine = Porcupine(
            library_path=os.path.join(self._repo_path,
                                      'lib/linux/x86_64/libpv_porcupine.so'),
            model_file_path=os.path.join(self._repo_path,
                                         'lib/common/porcupine_params.pv'),
            keyword_file_path=os.path.join(
                self._repo_path, 'resources/keyword_files/linux/%s_linux.ppn' %
                keyword.lower()),
            sensitivity=sensitivity)

    def process(self, pcm):
        assert pcm.dtype == np.int16

        return self._porcupine.process(pcm)

    def release(self):
        self._porcupine.delete()

    def __str__(self):
        return 'Porcupine'

    @property
    def _repo_path(self):
        return os.path.join(os.path.dirname(__file__), 'engines/porcupine')
Exemple #2
0
class PorcupineEngineBase(Engine):
    """Base class for different variants of Porcupine engine."""
    def __init__(self, sensitivity, model_file_path, keyword_file_path):
        """
        Constructor.

        :param sensitivity: detection sensitivity.
        :param model_file_path: path to model file.
        :param keyword_file_path: path to keyword file.
        """

        library_path = os.path.join(
            os.path.dirname(__file__),
            'engines/porcupine/lib/linux/%s/libpv_porcupine.so' %
            platform.machine())

        self._porcupine = Porcupine(library_path=library_path,
                                    model_file_path=model_file_path,
                                    keyword_file_path=keyword_file_path,
                                    sensitivity=sensitivity)

    def process(self, pcm):
        pcm = (np.iinfo(np.int16).max * pcm).astype(np.int16)
        return self._porcupine.process(pcm)

    def release(self):
        self._porcupine.delete()

    def __str__(self):
        raise NotImplementedError()
Exemple #3
0
class PorcupineEngine(Engine):
    """Porcupine engine."""
    def __init__(self, engine_type, keyword, sensitivity):
        """Initializer.

        :param engine_type: type of the engine.
        :param keyword: keyword being used for detection.
        :param sensitivity: sensitivity passed to the engine.
        """
        super().__init__(engine_type, keyword, sensitivity)
        library_path = os.path.join(
            os.path.dirname(__file__),
            'engines/porcupine/lib/linux/%s/libpv_porcupine.so' %
            platform.machine())
        model_file_path = os.path.join(
            os.path.dirname(__file__),
            'engines/porcupine/lib/common/porcupine_params.pv')
        keyword_file_path = os.path.join(
            os.path.dirname(__file__),
            'engines/porcupine/resources/keyword_files/%s_linux.ppn' %
            keyword.lower())
        self._porcupine = Porcupine(library_path=library_path,
                                    model_file_path=model_file_path,
                                    keyword_file_path=keyword_file_path,
                                    sensitivity=sensitivity)

    @prepare_pcm
    def process(self, pcm):
        """Process the PCM data for the keyword."""
        return self._porcupine.process(pcm)

    def release(self):
        """Release the resources hold by the engine."""
        self._porcupine.delete()
class PorcupineEngineBase(Engine):
    def __init__(self, model_file_path, keyword_file_path, sensitivity):
        self._porcupine = Porcupine(library_path=os.path.join(
            self._repo_path, 'lib/linux/x86_64/libpv_porcupine.so'),
                                    model_file_path=model_file_path,
                                    keyword_file_path=keyword_file_path,
                                    sensitivity=sensitivity)

    def process(self, pcm):
        assert pcm.dtype == np.int16

        return self._porcupine.process(pcm)

    def release(self):
        self._porcupine.delete()

    def __str__(self):
        raise NotImplementedError()

    @property
    def _repo_path(self):
        return os.path.join(os.path.dirname(__file__), 'engines/porcupine')