Add deepfilternet

This commit is contained in:
Xin Wang
2026-05-27 16:37:14 +08:00
parent c4a53b5205
commit 673a54049a
6 changed files with 307 additions and 0 deletions

View File

@@ -28,6 +28,20 @@ class AudioConfig:
return int(self.sample_rate_hz * self.frame_ms / 1000) * self.channels * 2
@dataclass(frozen=True)
class AudioFilterConfig:
"""Optional input audio filter applied by the Pipecat transport before VAD/STT."""
enabled: bool = False
provider: str = "none"
lib_path: str | None = None
model_path: str | None = None
model_sample_rate_hz: int = 48000
atten_lim_db: float = 100.0
post_filter_beta: float = 0.0
log_level: str | None = None
@dataclass(frozen=True)
class SessionConfig:
inactivity_timeout_sec: int = 60
@@ -180,6 +194,7 @@ class ServicesConfig:
class EngineConfig:
server: ServerConfig = field(default_factory=ServerConfig)
audio: AudioConfig = field(default_factory=AudioConfig)
audio_filter: AudioFilterConfig = field(default_factory=AudioFilterConfig)
session: SessionConfig = field(default_factory=SessionConfig)
turn: TurnConfig = field(default_factory=TurnConfig)
agent: AgentConfig = field(default_factory=AgentConfig)
@@ -223,6 +238,7 @@ def config_from_dict(data: dict) -> EngineConfig:
return EngineConfig(
server=ServerConfig(**_dict(data.get("server"))),
audio=AudioConfig(**_dict(data.get("audio"))),
audio_filter=AudioFilterConfig(**_normalize_audio_filter(_dict(data.get("audio_filter")))),
session=SessionConfig(**_dict(data.get("session"))),
turn=TurnConfig(
vad=VADConfig(**vad),
@@ -255,6 +271,18 @@ def _dict(value: object) -> dict:
return dict(value) if isinstance(value, dict) else {}
def _normalize_audio_filter(value: dict) -> dict:
if value.get("lib_path") == "":
value["lib_path"] = None
if value.get("model_path") == "":
value["model_path"] = None
if value.get("log_level") == "":
value["log_level"] = None
if "provider" in value:
value["provider"] = str(value["provider"]).strip().lower()
return value
def _normalize_llm_provider(value: object) -> str:
provider = str(value or LLMConfig().provider).strip().lower()
normalized = _LLM_PROVIDER_ALIASES.get(provider)