Files
sherpa-onnx/nodejs-addon-examples/test_online_speech_enhancement_dpdfnet.js
Fangjun Kuang 45fb4f5f0b Add online speech denoiser for GTCRN and examples (#3324)
This PR adds online (streaming) speech denoising support for GTCRN alongside existing DPDFNet support, and updates multi-language bindings/examples to expose and validate the new capability.
2026-03-17 11:56:56 +08:00

41 lines
1.1 KiB
JavaScript

// Copyright (c) 2026 Xiaomi Corporation (authors: Fangjun Kuang)
const sherpa_onnx = require('sherpa-onnx-node');
function createOnlineSpeechDenoiser() {
const config = {
model: {
dpdfnet: {model: './dpdfnet_baseline.onnx'},
debug: true,
numThreads: 1,
},
};
return new sherpa_onnx.OnlineSpeechDenoiser(config);
}
const sd = createOnlineSpeechDenoiser();
const wave = sherpa_onnx.readWave('./inp_16k.wav');
const output = [];
const frameShift = sd.frameShiftInSamples;
for (let start = 0; start < wave.samples.length; start += frameShift) {
const end = Math.min(start + frameShift, wave.samples.length);
const chunk = wave.samples.slice(start, end);
const denoised = sd.run({
samples: chunk,
sampleRate: wave.sampleRate,
enableExternalBuffer: true
});
output.push(...denoised.samples);
}
const tail = sd.flush(true);
output.push(...tail.samples);
sherpa_onnx.writeWave(
'./enhanced-online-dpdfnet.wav',
{samples: Float32Array.from(output), sampleRate: sd.sampleRate});
console.log('Saved to ./enhanced-online-dpdfnet.wav');