Add JavaScript (node-addon) API for speech enhancement GTCRN models (#1996)

This commit is contained in:
Fangjun Kuang
2025-03-12 15:52:01 +08:00
committed by GitHub
parent fd78a482df
commit 6a97f8adcf
21 changed files with 500 additions and 119 deletions

View File

@@ -43,6 +43,12 @@ export LD_LIBRARY_PATH=$PWD/node_modules/.pnpm/sherpa-onnx-node@<REPLACE-THIS-WI
The following tables list the examples in this folder.
## Speech enhancement/denoising
|File| Description|
|---|---|
|[./test_offline_speech_enhancement_gtcrn.js](./test_offline_speech_enhancement_gtcrn.js)| It demonstrates how to use sherpa-onnx JavaScript API for speech enhancement.|
## Speaker diarization
|File| Description|
@@ -159,6 +165,15 @@ curl -SL -O https://github.com/k2-fsa/sherpa-onnx/releases/download/speaker-segm
node ./test_offline_speaker_diarization.js
```
### Speech enhancement/denoising
```bash
wget https://github.com/k2-fsa/sherpa-onnx/releases/download/speech-enhancement-models/gtcrn_simple.onnx
wget https://github.com/k2-fsa/sherpa-onnx/releases/download/speech-enhancement-models/inp_16k.wav
node ./test_offline_speech_enhancement_gtcrn.js
```
### Voice Activity detection (VAD)
```bash

View File

@@ -0,0 +1,32 @@
// Copyright (c) 2025 Xiaomi Corporation (authors: Fangjun Kuang)
const sherpa_onnx = require('sherpa-onnx-node');
function createOfflineSpeechDenoiser() {
// please download models from
// https://github.com/k2-fsa/sherpa-onnx/releases/tag/speech-enhancement-models
const config = {
model: {
gtcrn: {model: './gtcrn_simple.onnx'},
debug: true,
numThreads: 1,
},
};
return new sherpa_onnx.OfflineSpeechDenoiser(config);
}
const sd = createOfflineSpeechDenoiser();
const waveFilename = './inp_16k.wav';
const wave = sherpa_onnx.readWave(waveFilename);
const denoised = sd.run({
samples: wave.samples,
sampleRate: wave.sampleRate,
enableExternalBuffer: true
});
sherpa_onnx.writeWave(
'./enhanced-16k.wav',
{samples: denoised.samples, sampleRate: denoised.sampleRate});
console.log(`Saved to ./enhanced-16k.wav`);