docs(adr): ADR-0018 — client-side noise suppression, opt-in and self-hosted
sorb's decision after the prototype: integrate DeepFilterNet3 as a LiveKit track processor, off by default, assets fetched only when the user enables it, checkbox plus slider, 35 percent default. Opt-in is what makes the 23.3 MB affordable — only those who benefit pay for it. Three of the source specification's assumptions did not survive measurement and are recorded as rejected alternatives: the dry/wet mixer (the model limits attenuation natively, and mixing raw signal back would return the keystrokes), the Rust/wasm build (a maintained package makes it unnecessary), and loading assets from the vendor CDN (every participant's IP to a third party at call start). Mobile stays untested by choice; since the filter is opt-in it simply stays off on weak devices, so that is a follow-up rather than a blocker. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
9ff6e09b1d
commit
914eb59575
@@ -150,3 +150,25 @@ Die `getUserMedia`-Constraints, die im finalen Spec-Code fehlten, sind im Protot
|
||||
oder Filter auf Mobilgeräten aus).
|
||||
3. **Fork-Wartung** bleibt der ungemessene Posten — die Anpassung muss jeden Upstream-Rebase
|
||||
überleben.
|
||||
|
||||
## Entscheidung 2026-08-15 → ADR-0018
|
||||
|
||||
sorb: **integrieren, opt-in mit Nachladen, Checkbox plus Regler, Standard 35 %.**
|
||||
Festgehalten als [ADR-0018](../adr/0018-ki-geraeuschunterdrueckung-clientseitig-opt-in.md).
|
||||
|
||||
Der Größeneinwand entfällt damit für alle, die den Filter nicht nutzen: erst das Einschalten
|
||||
löst den Download aus. Der Telefontest wurde bewusst ausgesetzt — vertretbar, weil der Filter
|
||||
auf schwachen Geräten schlicht aus bleibt.
|
||||
|
||||
### Umsetzung (offen)
|
||||
|
||||
1. `deepfilternet3-noise-filter` als Abhängigkeit in `threadnet-call`.
|
||||
2. `TrackProcessor` an den lokalen Audio-Track hängen; `assetConfig.cdnUrl` auf das eigene
|
||||
Deployment zeigen (**nicht** auf `cdn.mezon.ai`).
|
||||
3. Assets (23,3 MB) in die Auslieferung aufnehmen.
|
||||
4. Audio-Einstellungen: Checkbox + Regler, Standard aus / 35 %.
|
||||
5. `getUserMedia`: `noiseSuppression: false`, `echoCancellation: true`.
|
||||
6. Eintrag in `threadnet-call:docs/axion1337-fork.md` als Fork-Anpassung mit Portier-Hinweis
|
||||
(§5 dort ergänzen — die Absage galt der Server-Seite und bleibt gültig).
|
||||
|
||||
Der Prototyp liegt außerhalb der Repos und ist Wegwerf-Material; er wird nicht eingecheckt.
|
||||
|
||||
Reference in New Issue
Block a user