Skip to content

Commit 45fb4f5

Browse files
authored
Add online speech denoiser for GTCRN and examples (k2-fsa#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.
1 parent 6dd171d commit 45fb4f5

189 files changed

Lines changed: 5791 additions & 851 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/scripts/test-dart.sh

Lines changed: 24 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,30 @@ set -ex
44

55
cd dart-api-examples
66

7+
pushd speech-enhancement-gtcrn
8+
echo "speech enhancement with gtcrn models"
9+
./run.sh
10+
ls -lh
11+
popd
12+
13+
pushd speech-enhancement-dpdfnet
14+
echo "speech enhancement with dpdfnet models"
15+
./run.sh
16+
ls -lh
17+
popd
18+
19+
pushd streaming-speech-enhancement-gtcrn
20+
echo "streaming speech enhancement with gtcrn models"
21+
./run.sh
22+
ls -lh
23+
popd
24+
25+
pushd streaming-speech-enhancement-dpdfnet
26+
echo "streaming speech enhancement with dpdfnet models"
27+
./run.sh
28+
ls -lh
29+
popd
30+
731
pushd non-streaming-asr
832

933
echo '----------Moonshine v2----------'
@@ -154,12 +178,6 @@ pushd vad
154178
rm *.onnx
155179
popd
156180

157-
pushd speech-enhancement-gtcrn
158-
echo "speech enhancement with gtcrn models"
159-
./run.sh
160-
ls -lh
161-
popd
162-
163181
pushd speaker-diarization
164182
echo '----------speaker diarization----------'
165183
./run.sh

.github/scripts/test-dot-net.sh

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,18 @@ cd ../speech-enhancement-gtcrn
119119
./run.sh
120120
ls -lh
121121

122+
cd ../speech-enhancement-dpdfnet
123+
./run.sh
124+
ls -lh
125+
126+
cd ../streaming-speech-enhancement-gtcrn
127+
./run.sh
128+
ls -lh
129+
130+
cd ../streaming-speech-enhancement-dpdfnet
131+
./run.sh
132+
ls -lh
133+
122134
cd ../kokoro-tts
123135
./run-kokoro.sh
124136
ls -lh

.github/scripts/test-nodejs-addon-npm.sh

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -150,10 +150,15 @@ rm -rf sherpa-onnx-dolphin-base-ctc-multi-lang-int8-2025-04-02
150150
echo "----------non-streaming speech denoiser----------"
151151

152152
curl -SL -O https://github.com/k2-fsa/sherpa-onnx/releases/download/speech-enhancement-models/gtcrn_simple.onnx
153+
curl -SL -O https://github.com/k2-fsa/sherpa-onnx/releases/download/speech-enhancement-models/dpdfnet_baseline.onnx
153154
curl -SL -O https://github.com/k2-fsa/sherpa-onnx/releases/download/speech-enhancement-models/inp_16k.wav
154155

155156
node ./test_offline_speech_enhancement_gtcrn.js
157+
node ./test_offline_speech_enhancement_dpdfnet.js
158+
node ./test_online_speech_enhancement_gtcrn.js
159+
node ./test_online_speech_enhancement_dpdfnet.js
156160
rm gtcrn_simple.onnx
161+
rm dpdfnet_baseline.onnx
157162
ls -lh *.wav
158163

159164
echo "----------non-streaming asr FireRedAsr----------"

.github/scripts/test-nodejs-npm.sh

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -143,12 +143,17 @@ rm -rf sherpa-onnx-dolphin-base-ctc-multi-lang-int8-2025-04-02
143143

144144
# speech enhancement
145145
curl -SL -O https://github.com/k2-fsa/sherpa-onnx/releases/download/speech-enhancement-models/gtcrn_simple.onnx
146+
curl -SL -O https://github.com/k2-fsa/sherpa-onnx/releases/download/speech-enhancement-models/dpdfnet_baseline.onnx
146147
curl -SL -O https://github.com/k2-fsa/sherpa-onnx/releases/download/speech-enhancement-models/inp_16k.wav
147148
node ./test-offline-speech-enhancement-gtcrn.js
149+
node ./test-offline-speech-enhancement-dpdfnet.js
150+
node ./test-online-speech-enhancement-gtcrn.js
151+
node ./test-online-speech-enhancement-dpdfnet.js
148152
ls -lh *.wav
149153
rm gtcrn_simple.onnx
150-
rm inp_16k.wav
151-
rm enhanced-16k.wav
154+
rm dpdfnet_baseline.onnx
155+
rm -fv inp_16k.wav
156+
rm -fv enhanced*.wav
152157

153158
# offline tts
154159

.github/scripts/test-python.sh

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -140,8 +140,12 @@ rm -rf sherpa-onnx-dolphin-base-ctc-multi-lang-int8-2025-04-02
140140
log "test offline speech enhancement (GTCRN)"
141141

142142
curl -SL -O https://github.com/k2-fsa/sherpa-onnx/releases/download/speech-enhancement-models/gtcrn_simple.onnx
143+
curl -SL -O https://github.com/k2-fsa/sherpa-onnx/releases/download/speech-enhancement-models/dpdfnet_baseline.onnx
143144
curl -SL -O https://github.com/k2-fsa/sherpa-onnx/releases/download/speech-enhancement-models/speech_with_noise.wav
144145
python3 ./python-api-examples/offline-speech-enhancement-gtcrn.py
146+
python3 ./python-api-examples/offline-speech-enhancement-dpdfnet.py
147+
python3 ./python-api-examples/online-speech-enhancement-gtcrn.py
148+
python3 ./python-api-examples/online-speech-enhancement-dpdfnet.py
145149
ls -lh *.wav
146150

147151
log "test offline zipformer (byte-level bpe, Chinese+English)"

.github/scripts/test-rust.sh

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,3 +27,8 @@ rm -rf sherpa-onnx-supertonic-*
2727

2828
./run-streaming-zipformer-en.sh
2929
./run-streaming-zipformer-zh-en.sh
30+
31+
./run-offline-speech-enhancement-gtcrn.sh
32+
./run-offline-speech-enhancement-dpdfnet.sh
33+
./run-streaming-speech-enhancement-gtcrn.sh
34+
./run-streaming-speech-enhancement-dpdfnet.sh

.github/scripts/test-swift.sh

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,9 @@ rm -rf dict lexicon.txt replace.fst test-hr.wav
5656
rm -rf sherpa-onnx-dolphin-*
5757

5858
./run-speech-enhancement-gtcrn.sh
59+
./run-speech-enhancement-dpdfnet.sh
60+
./run-online-speech-enhancement-gtcrn.sh
61+
./run-online-speech-enhancement-dpdfnet.sh
5962
ls -lh *.wav
6063

6164
./run-fire-red-asr.sh

.github/workflows/c-api.yaml

Lines changed: 64 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -549,7 +549,7 @@ jobs:
549549
550550
./$name
551551
rm -rf denoised-wavs
552-
mkdir denoised-wavs
552+
mkdir -p denoised-wavs
553553
cp -v inp_16k.wav denoised-wavs
554554
cp -v enhanced.wav denoised-wavs/enhanced-gtcrn.wav
555555
rm -fv *.onnx enhanced.wav
@@ -573,18 +573,80 @@ jobs:
573573
echo "----"
574574
readelf -d ./$name
575575
fi
576-
curl -SL -O https://huggingface.co/Ceva-IP/DPDFNet/resolve/main/onnx/baseline.onnx
576+
curl -SL -O https://github.com/k2-fsa/sherpa-onnx/releases/download/speech-enhancement-models/dpdfnet_baseline.onnx
577577
curl -SL -O https://github.com/k2-fsa/sherpa-onnx/releases/download/speech-enhancement-models/inp_16k.wav
578578
579579
export LD_LIBRARY_PATH=$PWD/build/install/lib:$LD_LIBRARY_PATH
580580
export DYLD_LIBRARY_PATH=$PWD/build/install/lib:$DYLD_LIBRARY_PATH
581581
582582
./$name
583+
584+
mkdir -p denoised-wavs
583585
cp -v enhanced.wav denoised-wavs/enhanced-dpdfnet.wav
584586
rm -fv *.onnx enhanced.wav
585587
586588
rm $name
587589
590+
- name: Test online speech enhancement (GTCRN)
591+
shell: bash
592+
run: |
593+
name=online-speech-enhancement-gtcrn-c-api
594+
gcc -o $name ./c-api-examples/$name.c \
595+
-I ./build/install/include \
596+
-L ./build/install/lib/ \
597+
-l sherpa-onnx-c-api \
598+
-l onnxruntime
599+
600+
ls -lh $name
601+
602+
if [[ ${{ matrix.os }} == ubuntu-latest || ${{ matrix.os }} == ubuntu-22.04-arm ]]; then
603+
ldd ./$name
604+
echo "----"
605+
readelf -d ./$name
606+
fi
607+
curl -SL -O https://github.com/k2-fsa/sherpa-onnx/releases/download/speech-enhancement-models/gtcrn_simple.onnx
608+
curl -SL -O https://github.com/k2-fsa/sherpa-onnx/releases/download/speech-enhancement-models/inp_16k.wav
609+
610+
export LD_LIBRARY_PATH=$PWD/build/install/lib:$LD_LIBRARY_PATH
611+
export DYLD_LIBRARY_PATH=$PWD/build/install/lib:$DYLD_LIBRARY_PATH
612+
613+
./$name
614+
mkdir -p denoised-wavs
615+
cp -v enhanced-online-gtcrn.wav denoised-wavs/
616+
rm -fv *.onnx enhanced-online-gtcrn.wav
617+
618+
rm $name
619+
620+
- name: Test online speech enhancement (DPDFNet)
621+
shell: bash
622+
run: |
623+
name=online-speech-enhancement-dpdfnet-c-api
624+
gcc -o $name ./c-api-examples/$name.c \
625+
-I ./build/install/include \
626+
-L ./build/install/lib/ \
627+
-l sherpa-onnx-c-api \
628+
-l onnxruntime
629+
630+
ls -lh $name
631+
632+
if [[ ${{ matrix.os }} == ubuntu-latest || ${{ matrix.os }} == ubuntu-22.04-arm ]]; then
633+
ldd ./$name
634+
echo "----"
635+
readelf -d ./$name
636+
fi
637+
curl -SL -O https://github.com/k2-fsa/sherpa-onnx/releases/download/speech-enhancement-models/dpdfnet_baseline.onnx
638+
curl -SL -O https://github.com/k2-fsa/sherpa-onnx/releases/download/speech-enhancement-models/inp_16k.wav
639+
640+
export LD_LIBRARY_PATH=$PWD/build/install/lib:$LD_LIBRARY_PATH
641+
export DYLD_LIBRARY_PATH=$PWD/build/install/lib:$DYLD_LIBRARY_PATH
642+
643+
./$name
644+
mkdir -p denoised-wavs
645+
cp -v enhanced-online-dpdfnet.wav denoised-wavs/
646+
rm -fv *.onnx enhanced-online-dpdfnet.wav
647+
648+
rm $name
649+
588650
- uses: actions/upload-artifact@v4
589651
with:
590652
name: denoised-wavs-${{ matrix.os }}

.github/workflows/cxx-api.yaml

Lines changed: 52 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -764,38 +764,81 @@ jobs:
764764
name: ten-vad-test-wavs-cxx-${{ matrix.os }}
765765
path: ./vad-test-ten-vad/*.wav
766766

767-
- name: Test Speech Enhancement (GTCRN)
767+
- name: Test Speech Enhancement
768768
shell: bash
769769
run: |
770-
name=speech-enhancement-gtcrn-cxx-api
771-
g++ -std=c++17 -o $name ./cxx-api-examples/$name.cc \
770+
gtcrn_name=speech-enhancement-gtcrn-cxx-api
771+
g++ -std=c++17 -o $gtcrn_name ./cxx-api-examples/$gtcrn_name.cc \
772772
-I ./build/install/include \
773773
-L ./build/install/lib/ \
774774
-l sherpa-onnx-cxx-api \
775775
-l sherpa-onnx-c-api \
776776
-l onnxruntime
777777
778-
ls -lh $name
778+
dpdfnet_name=speech-enhancement-dpdfnet-cxx-api
779+
g++ -std=c++17 -o $dpdfnet_name ./cxx-api-examples/$dpdfnet_name.cc \
780+
-I ./build/install/include \
781+
-L ./build/install/lib/ \
782+
-l sherpa-onnx-cxx-api \
783+
-l sherpa-onnx-c-api \
784+
-l onnxruntime
785+
786+
online_gtcrn_name=online-speech-enhancement-gtcrn-cxx-api
787+
g++ -std=c++17 -o $online_gtcrn_name ./cxx-api-examples/$online_gtcrn_name.cc \
788+
-I ./build/install/include \
789+
-L ./build/install/lib/ \
790+
-l sherpa-onnx-cxx-api \
791+
-l sherpa-onnx-c-api \
792+
-l onnxruntime
793+
794+
online_dpdfnet_name=online-speech-enhancement-dpdfnet-cxx-api
795+
g++ -std=c++17 -o $online_dpdfnet_name ./cxx-api-examples/$online_dpdfnet_name.cc \
796+
-I ./build/install/include \
797+
-L ./build/install/lib/ \
798+
-l sherpa-onnx-cxx-api \
799+
-l sherpa-onnx-c-api \
800+
-l onnxruntime
801+
802+
ls -lh $gtcrn_name $dpdfnet_name $online_gtcrn_name $online_dpdfnet_name
779803
780804
export LD_LIBRARY_PATH=$PWD/build/install/lib:$LD_LIBRARY_PATH
781805
export DYLD_LIBRARY_PATH=$PWD/build/install/lib:$DYLD_LIBRARY_PATH
782806
783807
if [[ ${{ matrix.os }} == ubuntu-latest || ${{ matrix.os }} == ubuntu-22.04-arm ]]; then
784-
ldd ./$name
808+
ldd ./$gtcrn_name
785809
echo "----"
786-
readelf -d ./$name
810+
readelf -d ./$gtcrn_name
811+
echo "----"
812+
ldd ./$dpdfnet_name
813+
echo "----"
814+
readelf -d ./$dpdfnet_name
815+
echo "----"
816+
ldd ./$online_gtcrn_name
817+
echo "----"
818+
readelf -d ./$online_gtcrn_name
819+
echo "----"
820+
ldd ./$online_dpdfnet_name
821+
echo "----"
822+
readelf -d ./$online_dpdfnet_name
787823
fi
788824
789825
curl -SL -O https://github.com/k2-fsa/sherpa-onnx/releases/download/speech-enhancement-models/gtcrn_simple.onnx
826+
curl -SL -O https://github.com/k2-fsa/sherpa-onnx/releases/download/speech-enhancement-models/dpdfnet_baseline.onnx
790827
curl -SL -O https://github.com/k2-fsa/sherpa-onnx/releases/download/speech-enhancement-models/inp_16k.wav
791828
792-
./$name
829+
./$gtcrn_name
830+
./$dpdfnet_name
831+
./$online_gtcrn_name
832+
./$online_dpdfnet_name
793833
794834
mkdir denoised-wavs
795835
cp -v inp_16k.wav denoised-wavs
796-
cp -v enhanced_16k.wav denoised-wavs
836+
cp -v enhanced-gtcrn.wav denoised-wavs
837+
cp -v enhanced-dpdfnet.wav denoised-wavs
838+
cp -v enhanced-online-gtcrn.wav denoised-wavs
839+
cp -v enhanced-online-dpdfnet.wav denoised-wavs
797840
798-
rm $name
841+
rm $gtcrn_name $dpdfnet_name $online_gtcrn_name $online_dpdfnet_name
799842
800843
- uses: actions/upload-artifact@v4
801844
with:

.github/workflows/pascal.yaml

Lines changed: 33 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,10 @@ jobs:
111111
cp -v install/lib/*.dll ../pascal-api-examples/read-wav
112112
cp -v install/lib/*.dll ../pascal-api-examples/speaker-diarization
113113
cp -v install/lib/*.dll ../pascal-api-examples/speech-enhancement-gtcrn
114+
cp -v install/lib/*.dll ../pascal-api-examples/speech-enhancement-dpdfnet
114115
cp -v install/lib/*.dll ../pascal-api-examples/streaming-asr
116+
cp -v install/lib/*.dll ../pascal-api-examples/streaming-speech-enhancement-gtcrn
117+
cp -v install/lib/*.dll ../pascal-api-examples/streaming-speech-enhancement-dpdfnet
115118
cp -v install/lib/*.dll ../pascal-api-examples/tts
116119
cp -v install/lib/*.dll ../pascal-api-examples/vad
117120
cp -v install/lib/*.dll ../pascal-api-examples/vad-with-non-streaming-asr
@@ -120,12 +123,42 @@ jobs:
120123
cp -v ../sherpa-onnx/pascal-api/*.pas ../pascal-api-examples/read-wav
121124
cp -v ../sherpa-onnx/pascal-api/*.pas ../pascal-api-examples/speaker-diarization
122125
cp -v ../sherpa-onnx/pascal-api/*.pas ../pascal-api-examples/speech-enhancement-gtcrn
126+
cp -v ../sherpa-onnx/pascal-api/*.pas ../pascal-api-examples/speech-enhancement-dpdfnet
123127
cp -v ../sherpa-onnx/pascal-api/*.pas ../pascal-api-examples/streaming-asr
128+
cp -v ../sherpa-onnx/pascal-api/*.pas ../pascal-api-examples/streaming-speech-enhancement-gtcrn
129+
cp -v ../sherpa-onnx/pascal-api/*.pas ../pascal-api-examples/streaming-speech-enhancement-dpdfnet
124130
cp -v ../sherpa-onnx/pascal-api/*.pas ../pascal-api-examples/tts
125131
cp -v ../sherpa-onnx/pascal-api/*.pas ../pascal-api-examples/vad
126132
cp -v ../sherpa-onnx/pascal-api/*.pas ../pascal-api-examples/vad-with-non-streaming-asr
127133
fi
128134
135+
- name: Run Speech Enhancement test
136+
shell: bash
137+
run: |
138+
export PATH=/c/lazarus/fpc/3.2.2/bin/x86_64-win64:$PATH
139+
140+
cd ./pascal-api-examples
141+
142+
pushd speech-enhancement-gtcrn
143+
./run-gtcrn.sh
144+
ls -lh
145+
popd
146+
147+
pushd speech-enhancement-dpdfnet
148+
./run-dpdfnet.sh
149+
ls -lh
150+
popd
151+
152+
pushd streaming-speech-enhancement-gtcrn
153+
./run-gtcrn.sh
154+
ls -lh
155+
popd
156+
157+
pushd streaming-speech-enhancement-dpdfnet
158+
./run-dpdfnet.sh
159+
ls -lh
160+
popd
161+
129162
- name: Run Pascal test (TTS)
130163
shell: bash
131164
run: |
@@ -323,17 +356,6 @@ jobs:
323356
324357
popd
325358
326-
- name: Run Speech Enhancement test (GTCRN)
327-
shell: bash
328-
run: |
329-
export PATH=/c/lazarus/fpc/3.2.2/bin/x86_64-win64:$PATH
330-
331-
cd ./pascal-api-examples
332-
333-
pushd speech-enhancement-gtcrn
334-
./run-gtcrn.sh
335-
ls -lh
336-
337359
- name: Run Pascal test (Speaker diarization)
338360
shell: bash
339361
run: |

0 commit comments

Comments
 (0)