feat(denoise): browser-native default, quality-ordered model picker, wire native-NS
- Model dropdown is now ordered by quality/CPU, best first (DeepFilterNet 3 → DTLN → RNNoise → Speex); fix RNNoise's inaccurate "High" voice-quality label. - When a user opts into the ML tier, default to the highest-quality model (DeepFilterNet 3). The tier default stays browser-native (known-good, best perceived in testing so far). - Wire the "Series Suppression" (native-NS-before-ML) toggle into the real call path — it was applied only in the settings tester, so the tester could sound better than the actual call. Default it OFF (a single NS stage is best practice; it's an opt-in test aid). - isMLDenoiseSupported now also requires WebAssembly, so ML isn't offered on strict-CSP shells where it would silently fall back to the raw mic. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -1,18 +1,14 @@
|
||||
import { test, beforeEach, afterEach } from 'node:test';
|
||||
import assert from 'node:assert/strict';
|
||||
|
||||
import {
|
||||
DENOISE_MODELS,
|
||||
ML_DENOISE_REQUIREMENTS,
|
||||
isMLDenoiseSupported,
|
||||
} from './lotusDenoiseUtils';
|
||||
import { DENOISE_MODELS, ML_DENOISE_REQUIREMENTS, isMLDenoiseSupported } from './lotusDenoiseUtils';
|
||||
|
||||
// ── Model catalog (data integrity) ──────────────────────────────────────────
|
||||
|
||||
test('DENOISE_MODELS lists the four expected models in order', () => {
|
||||
test('DENOISE_MODELS lists the four models ordered best-quality (highest CPU) first', () => {
|
||||
assert.deepEqual(
|
||||
DENOISE_MODELS.map((m) => m.id),
|
||||
['rnnoise', 'speex', 'dtln', 'deepfilternet'],
|
||||
['deepfilternet', 'dtln', 'rnnoise', 'speex'],
|
||||
);
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user