""" Copyright (c) 2022, salesforce.com, inc. All rights reserved. SPDX-License-Identifier: BSD-3-Clause For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/BSD-3-Clause """ from omegaconf import OmegaConf from abc import abstractmethod from speakers.load.serializable import Serializable class ProcessorData(Serializable): """ The base abstract ProcessorData class. """ @property @abstractmethod def type(self) -> str: """Type of the Message, used for serialization.""" @property def lc_serializable(self) -> bool: """Whether this class is Processor serializable.""" return True class BaseProcessor: """ 音频处理器有抽象处理器Processor,通过单独的Processor配置, 通过from_config工厂方法预加载音频处理器 """ def __init__(self): self.transform = lambda x: x return def __call__(self, data: ProcessorData): return self.transform(data) @classmethod def match(cls, data: ProcessorData): """ 匹配处理器 :param data: :return: """ raise NotImplementedError @classmethod def from_config(cls, cfg=None): return cls() def build(self, **kwargs): cfg = OmegaConf.create(kwargs) return self.from_config(cfg)