@newgameplusinc/odyssey-audio-video-sdk-dev 1.0.310 → 1.0.312
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -257,7 +257,7 @@ class MLNoiseSuppressor {
|
|
|
257
257
|
// Temporal smoothing state — per-participant to avoid cross-participant corruption
|
|
258
258
|
// when multiple async computeGainsFromFeatures() calls run concurrently.
|
|
259
259
|
this.prevMaskMap = new Map();
|
|
260
|
-
this.SMOOTHING_ALPHA = 0.
|
|
260
|
+
this.SMOOTHING_ALPHA = 0.92;
|
|
261
261
|
// Mel filterbank cache (built once, reused every frame)
|
|
262
262
|
this.melFilterbank = null;
|
|
263
263
|
// ── Google Meet-style ring buffer architecture ─────────────────────────────
|
|
@@ -1021,12 +1021,15 @@ class MLNoiseSuppressor {
|
|
|
1021
1021
|
// gain=0.05 (noise) → sqrt → 0.22 (78% suppressed, not 95%)
|
|
1022
1022
|
// gain=0.0 (silent) → sqrt → 0.0 (still fully suppressed)
|
|
1023
1023
|
//
|
|
1024
|
-
//
|
|
1025
|
-
//
|
|
1024
|
+
// Use speech-band-aware floors to keep voice natural while still reducing
|
|
1025
|
+
// non-speech noise (fan/keyboard/vehicle) in low/high bands.
|
|
1026
|
+
const speechLowBin = Math.floor((250 * N_FFT) / SR);
|
|
1027
|
+
const speechHighBin = Math.ceil((3600 * N_FFT) / SR);
|
|
1026
1028
|
for (let k = 0; k < bins; k++) {
|
|
1027
1029
|
gains[k] = Math.sqrt(gains[k]);
|
|
1028
1030
|
if (filtTotal[k] > 1e-8) {
|
|
1029
|
-
|
|
1031
|
+
const floor = k >= speechLowBin && k <= speechHighBin ? 0.4 : 0.2;
|
|
1032
|
+
gains[k] = Math.max(floor, gains[k]);
|
|
1030
1033
|
}
|
|
1031
1034
|
}
|
|
1032
1035
|
// ── Diagnostic: throttled log showing ML is actively processing ─────────
|
package/package.json
CHANGED