feat(settings): make DTLN the default ML noise-suppression model #482

Merged
jared merged 1 commits from feat/denoise-dtln-default into lotus 2026-10-30 15:42:48 -04:00
Owner

Browser-native stays the overall default. This only changes which model the "ML (Advanced)" option starts on. Users who already picked a model keep it.

Measurements

Real speech was mixed with fan, keyboard, street and babble noise (SNR 5 and 15 dB), run through each model exactly as Lotus Call runs it, and scored against the clean voice (PESQ/STOI):

Model Voice Fan Keyboard Street Background talking CPU (1 core)
DTLN most natural −22 to −30 dB −22 to −32 dB ~−1 dB ~−3 dB ~9%
DeepFilterNet 3 slightly muffled −30 to −36 dB −46 to −60 dB −8 to −12 dB ~−3 dB ~30%
RNNoise small cost −16 dB −7 dB −16 dB ~−2 dB ~3%
Speex slight cost −5 dB −2 dB ~0 dB ~−2 dB ~2%

On clean speech none of them change the voice level by more than 1.2 dB.

Changes

  • callDenoiseModel default: deepfilternet → dtln.
  • The model list is ordered by recommendation: DTLN (recommended), DeepFilterNet 3 (strongest), RNNoise, Speex (legacy). Descriptions and ratings now reflect the results above.
  • The "Transients" stat and column are renamed "Typing & clicks". The model description now says that no model removes background voices.

Related: LotusGuild/element-call#64 (DeepFilterNet silently bypassed when its model is served with Content-Encoding: gzip).

🤖 Generated with Claude Code

https://claude.ai/code/session_017PCb59uY3UKqDqt7B6hzd5

**Browser-native stays the overall default.** This only changes which model the "ML (Advanced)" option starts on. Users who already picked a model keep it. ## Measurements Real speech was mixed with fan, keyboard, street and babble noise (SNR 5 and 15 dB), run through each model exactly as Lotus Call runs it, and scored against the clean voice (PESQ/STOI): | Model | Voice | Fan | Keyboard | Street | Background talking | CPU (1 core) | |---|---|---|---|---|---|---| | **DTLN** | most natural | −22 to −30 dB | −22 to −32 dB | ~−1 dB | ~−3 dB | ~9% | | DeepFilterNet 3 | slightly muffled | −30 to −36 dB | −46 to −60 dB | −8 to −12 dB | ~−3 dB | ~30% | | RNNoise | small cost | −16 dB | −7 dB | −16 dB | ~−2 dB | ~3% | | Speex | slight cost | −5 dB | −2 dB | ~0 dB | ~−2 dB | ~2% | On clean speech none of them change the voice level by more than 1.2 dB. ## Changes - `callDenoiseModel` default: `deepfilternet` → `dtln`. - The model list is ordered by recommendation: DTLN (recommended), DeepFilterNet 3 (strongest), RNNoise, Speex (legacy). Descriptions and ratings now reflect the results above. - The "Transients" stat and column are renamed "Typing & clicks". The model description now says that no model removes background voices. Related: LotusGuild/element-call#64 (DeepFilterNet silently bypassed when its model is served with `Content-Encoding: gzip`). 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_017PCb59uY3UKqDqt7B6hzd5
jared added 1 commit 2026-10-30 15:05:47 -04:00
feat(settings): make DTLN the default ML noise-suppression model
CI / Build & Quality Checks (push) Skipped
CI / Secret scan (gitleaks) (push) Skipped
CI / Playwright smoke (e2e) (push) Skipped
CI / Secret scan (gitleaks) (pull_request) Successful in 17s
CI / Build & Quality Checks (pull_request) Successful in 3m45s
CI / Trigger Desktop Build (pull_request) Skipped
CI / Docker image build & smoke test (pull_request) Skipped
CI / Playwright smoke (e2e) (pull_request) Successful in 33m3s
9ab01ff6f6
Browser-native stays the overall default; this only changes which model
the ML option starts on.

Measured on real speech mixed with fan, keyboard, street and babble noise
(SNR 5/15 dB), scored against the clean voice:
- DTLN: most natural voice (best PESQ/STOI of the four), strong on fans
  and typing, ~9% of one core.
- DeepFilterNet 3: removes the most noise (typing, traffic) but voices
  can sound slightly muffled, ~30% of one core.
- RNNoise: steady noise only; little help with typing.
- Speex: barely reduces noise.
- No model removes other people talking in the background.

The model list is now ordered by recommendation, with descriptions and
ratings from these results. The "Transients" column is renamed
"Typing & clicks".

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017PCb59uY3UKqDqt7B6hzd5
jared scheduled this pull request to auto merge when all checks succeed 2026-10-30 15:05:52 -04:00
jared merged commit d1a9625b1c into lotus 2026-10-30 15:42:48 -04:00
jared deleted branch feat/denoise-dtln-default 2026-10-30 15:42:49 -04:00
Sign in to join this conversation.
No Reviewers
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: LotusGuild/cinny#482