Download python/pipelines/base.py from hzeng8/vad_cpp: direct link, hf CLI and curl.
- Browser
- Download file 1.85 kB
-
https://huggingface.co/hzeng8/vad_cpp/resolve/main/python/pipelines/base.py
- Command line
-
hf download hf://hzeng8/vad_cpp/python/pipelines/base.py
-
curl -L -o base.py https://huggingface.co/hzeng8/vad_cpp/resolve/main/python/pipelines/base.py
1.85 kB
| from dataclasses import dataclass, field | |
| from multiprocessing import Process, Queue | |
| from multiprocessing import Event | |
| from logging import getLogger | |
| logger = getLogger(__name__) | |
| class Segment: | |
| t0: int | |
| t1: int | |
| text: str | |
| class MetaItem: | |
| segments: list[Segment] = field(default_factory=list) | |
| source_audio: bytes = b"" | |
| audio: bytes = b'' | |
| transcribe_content: str = '' | |
| translate_content: str = '' | |
| source_language: str = 'zh' | |
| destination_language: str = 'en' | |
| speech_status: str = 'END' # "END", "START" | |
| class BasePipe(Process): | |
| def __init__(self, in_queue=None, out_queue=None) -> None: | |
| super().__init__() # Initialize the Process class | |
| self._in_queue = in_queue if in_queue else Queue() | |
| self._out_queue = out_queue if out_queue else Queue() | |
| self._ready = Event() | |
| def set_ready(self): | |
| self._ready.set() | |
| def is_ready(self): | |
| return self._ready.is_set() | |
| def wait(self): | |
| self._ready.wait() | |
| def output_queue(self): | |
| return self._out_queue | |
| def input_queue(self): | |
| return self._in_queue | |
| def process(self, in_data: MetaItem) -> MetaItem: | |
| raise NotImplementedError("Subclasses should implement this method.") | |
| def init(cls): | |
| raise NotImplementedError | |
| def run(self): | |
| logger.info(f"start initial {self.__class__.__name__}") | |
| self.init() | |
| logger.info(f"finish initial {self.__class__.__name__}") | |
| self.set_ready() | |
| while True: | |
| item = self.input_queue.get() | |
| if item is None: # Check for termination signal | |
| break | |
| out_item = self.process(item) | |
| if out_item: | |
| self.output_queue.put(out_item) | |