Metadata-Version: 2.3
Name: fasr-enhancement-rnnoise
Version: 0.5.8
Summary: RNNoise audio enhancement model for fasr
Author: fasr
Author-email: fasr <790990241@qq.com>
Requires-Dist: fasr
Requires-Dist: numpy>=1.24
Requires-Dist: pyrnnoise>=0.4.0
Requires-Python: >=3.10, <3.13
Description-Content-Type: text/markdown

# fasr-enhancement-rnnoise

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

RNNoise 音频增强插件。该插件基于 `pyrnnoise`，把 RNNoise 封装为
fasr 的 `EnhancementModel`，同时支持离线 `enhance()` 和流式 `push_chunk()`。

## 安装

```bash
pip install fasr-enhancement-rnnoise
```

## 注册模型

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

## 使用方式

```python
from fasr.data import Waveform
from fasr_enhancement_rnnoise import RNNoiseEnhancement

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

## Realtime 服务配置

```toml
[service.models.rnnoise]
@enhancement_models = "rnnoise"

[service.realtime_router.model_map]
enhancement_model = "rnnoise"
vad_model = "fsmn_online"
asr_model = "qwen3_asr"
```

启用后 realtime 链路会变成：

```text
AudioChunk -> RNNoiseEnhancement -> streaming VAD -> streaming ASR
```

## 参数

| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| `sample_rate` | `int` | `16000` | 输出给下游 VAD/ASR 的采样率 |
| `rnnoise_sample_rate` | `int` | `48000` | RNNoise 内部采样率，通常保持 48 kHz |

## 说明

- RNNoise 很轻，适合先验证 realtime 降噪链路。
- 插件会先把输入音频重采样到 48 kHz 给 RNNoise，再重采样回 `sample_rate`。
- 插件会保留 `stream_id` 和 chunk 元数据，避免破坏 VAD/ASR 的流式状态。
- 离线 `enhance()` 复用同一套 RNNoise 处理路径，因此和流式包装保持一致。
