liumaolin
refactor(core): Architecturally decouple Audio, ASR, and TTS modules
60f8238
import threading
from abc import ABC, abstractmethod
from multiprocessing import Queue
from voice_dialogue.core.base import BaseThread
class BaseCapture(BaseThread, ABC):
"""
抽象音频捕获器基类。
定义了所有音频捕获策略应遵循的通用接口。
"""
def __init__(
self,
audio_frames_queue: Queue,
group=None, target=None, name=None, args=(), kwargs=None, *, daemon=None
):
"""
初始化音频捕获器。
Args:
audio_frames_queue (Queue): 用于存放捕获的音频帧的队列。
"""
super().__init__(group, target, name, args, kwargs, daemon=daemon)
self.audio_frames_queue = audio_frames_queue
self._pause_event = threading.Event()
@property
def is_paused(self) -> bool:
"""检查捕获器是否已暂停。"""
return self._pause_event.is_set()
def pause(self):
"""暂停音频捕获。"""
self._pause_event.set()
def resume(self):
"""恢复音频捕获。"""
self._pause_event.clear()
@abstractmethod
def run(self):
"""
线程主循环。
子类必须实现此方法以提供具体的音频捕获逻辑。
"""
raise NotImplementedError