""" AEC回音消除处理器 支持Windows和Linux平台的系统级回音消除功能 """ import platform from typing import Optional import numpy as np class AECProcessor: """音频回声消除处理器(Windows/Linux系统级AEC)""" def __init__(self, sample_rate: int = 16000, channels: int = 1): """ 初始化AEC处理器 Args: sample_rate: 采样率 channels: 声道数 """ # 平台信息 self._platform = platform.system().lower() self._is_windows = self._platform == "windows" self._is_linux = self._platform == "linux" # 音频参数 self.sample_rate = sample_rate self.channels = channels # 状态标志 self._is_initialized = False self._is_closing = False async def initialize(self): """初始化AEC处理器""" try: if self._is_windows or self._is_linux: # Windows 和 Linux 平台使用系统级AEC,无需额外处理 print(f"{self._platform.capitalize()} 平台使用系统级回声消除") self._is_initialized = True return print("AEC处理器初始化完成") else: print(f"当前平台 {self._platform} 暂不支持AEC功能") print("提示: 本模块仅支持Windows和Linux平台") self._is_initialized = True return print("AEC处理器初始化失败") except Exception as e: print(f"AEC处理器初始化失败: {e}") await self.close() raise def process_audio(self, capture_audio: np.ndarray) -> np.ndarray: """处理音频帧,应用AEC Args: capture_audio: 麦克风采集的音频数据 (16kHz, int16) Returns: 处理后的音频数据 """ if not self._is_initialized: return capture_audio # Windows 和 Linux 平台直接返回原始音频(系统级处理) if self._is_windows or self._is_linux: # 系统级AEC已自动处理,无需额外处理 return capture_audio # 其他平台直接返回原始音频 return capture_audio async def close(self): """关闭AEC处理器""" if self._is_closing: return self._is_closing = True print("开始关闭AEC处理器...") try: # Windows/Linux平台无需清理额外资源 print("AEC处理器已关闭(系统级AEC无需额外清理)") self._is_initialized = False except Exception as e: print(f"关闭AEC处理器时发生错误: {e}") @property def is_initialized(self) -> bool: """返回是否已初始化""" return self._is_initialized @property def platform(self) -> str: """返回当前平台""" return self._platform