Metadata-Version: 2.4
Name: fasr-enhancement-dtln
Version: 0.5.7
Summary: DTLN audio enhancement model for fasr
Author-email: fasr <790990241@qq.com>
Requires-Python: <3.13,>=3.10
Description-Content-Type: text/markdown
Requires-Dist: fasr
Requires-Dist: numpy>=1.24
Requires-Dist: onnxruntime>=1.17.0

# fasr-enhancement-dtln

英文文档地址: [README_EN.md](README_EN.md)

DTLN 音频增强插件。该插件内置 `model_1.onnx` 和 `model_2.onnx`，并通过
统一的 `EnhancementModel` 接口同时提供离线 `enhance()` 和流式
`push_chunk()` 降噪能力。

## 安装

```bash
pip install fasr-enhancement-dtln
```

## 注册模型

| 注册名 | 类 | 适用场景 |
|---|---|---|
| `dtln` | `DTLNEnhancement` | 轻量 CPU 离线与实时降噪 |

## 使用方式

```python
from fasr.data import Waveform
from fasr_enhancement_dtln import DTLNEnhancement

model = DTLNEnhancement(sample_rate=16000)
enhanced = model.enhance(Waveform(data=audio, sample_rate=16000))
```

流式用法：

```python
from fasr.data import AudioChunk, Waveform
from fasr_enhancement_dtln import DTLNEnhancement

model = DTLNEnhancement(sample_rate=16000)
for enhanced_chunk in model.push_chunk(
    AudioChunk(
        stream_id="demo",
        waveform=Waveform(data=audio, sample_rate=16000),
        is_last=True,
    )
):
    print(enhanced_chunk.waveform.data.shape)
```

## Confection 配置

```toml
[enhancement_model]
@enhancement_models = "dtln"
sample_rate = 16000
providers = ["CPUExecutionProvider"]
intra_op_num_threads = 1
inter_op_num_threads = 1
```

## 参数

| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| `sample_rate` | `int` | `16000` | 输出采样率 |
| `model_1_path` | `str \| None` | `None` | 可选覆盖内置 stage-1 ONNX 模型路径 |
| `model_2_path` | `str \| None` | `None` | 可选覆盖内置 stage-2 ONNX 模型路径 |
| `providers` | `list[str]` | `["CPUExecutionProvider"]` | ONNX Runtime providers |
| `intra_op_num_threads` | `int >= 1` | `1` | 显式设置 ORT intra-op 线程数，服务端推荐开启以避免默认绑核告警 |
| `inter_op_num_threads` | `int >= 1` | `1` | 显式设置 ORT inter-op 线程数，服务端推荐开启以避免默认绑核告警 |
| `dtln_sample_rate` | `int` | `16000` | DTLN 内部采样率，当前仅支持 16 kHz |

## Realtime 状态

当前版本同时支持离线 `enhance()` 和流式 `push_chunk()`。两条路径共享同一套
512-sample block / 128-sample hop 的状态化 DTLN 推理循环，以优先保证 batch
与 streaming 输出的一致性。
