Add Pascal API for speech enhancement GTCRN models (#1992)
This commit is contained in:
1
pascal-api-examples/speech-enhancement-gtcrn/.gitignore
vendored
Normal file
1
pascal-api-examples/speech-enhancement-gtcrn/.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
||||
gtcrn
|
||||
43
pascal-api-examples/speech-enhancement-gtcrn/gtcrn.pas
Normal file
43
pascal-api-examples/speech-enhancement-gtcrn/gtcrn.pas
Normal file
@@ -0,0 +1,43 @@
|
||||
{ Copyright (c) 2025 Xiaomi Corporation }
|
||||
{
|
||||
This file shows how to use the speech enhancement API from sherpa-onnx
|
||||
|
||||
Please first download files used in this script before you run it.
|
||||
|
||||
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
|
||||
}
|
||||
program main;
|
||||
|
||||
{$mode delphi}
|
||||
|
||||
uses
|
||||
sherpa_onnx,
|
||||
SysUtils;
|
||||
|
||||
var
|
||||
Wave: TSherpaOnnxWave;
|
||||
|
||||
Config: TSherpaOnnxOfflineSpeechDenoiserConfig;
|
||||
Sd: TSherpaOnnxOfflineSpeechDenoiser;
|
||||
Audio: TSherpaOnnxDenoisedAudio;
|
||||
begin
|
||||
Wave := SherpaOnnxReadWave('./inp_16k.wav');
|
||||
|
||||
Initialize(Config);
|
||||
|
||||
Config.Model.Gtcrn.Model := './gtcrn_simple.onnx';
|
||||
Config.Model.NumThreads:= 1;
|
||||
Config.Model.Debug:= True;
|
||||
Config.Model.Provider:= 'cpu';
|
||||
|
||||
Sd := TSherpaOnnxOfflineSpeechDenoiser.Create(Config);
|
||||
|
||||
Audio := Sd.Run(Wave.Samples, Wave.SampleRate);
|
||||
|
||||
SherpaOnnxWriteWave('./enhanced-16k.wav', Audio.Samples, Audio.SampleRate);
|
||||
WriteLn('Saved to ./enhanced-16k.wav');
|
||||
|
||||
FreeAndNil(Sd);
|
||||
end.
|
||||
|
||||
44
pascal-api-examples/speech-enhancement-gtcrn/run-gtcrn.sh
Executable file
44
pascal-api-examples/speech-enhancement-gtcrn/run-gtcrn.sh
Executable file
@@ -0,0 +1,44 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -ex
|
||||
|
||||
SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
|
||||
SHERPA_ONNX_DIR=$(cd $SCRIPT_DIR/../.. && pwd)
|
||||
|
||||
echo "SHERPA_ONNX_DIR: $SHERPA_ONNX_DIR"
|
||||
|
||||
if [[ ! -f ../../build/install/lib/libsherpa-onnx-c-api.dylib && ! -f ../../build/install/lib/libsherpa-onnx-c-api.so && ! -f ../../build/install/lib/sherpa-onnx-c-api.dll ]]; then
|
||||
mkdir -p ../../build
|
||||
pushd ../../build
|
||||
cmake \
|
||||
-DCMAKE_INSTALL_PREFIX=./install \
|
||||
-DSHERPA_ONNX_ENABLE_PYTHON=OFF \
|
||||
-DSHERPA_ONNX_ENABLE_TESTS=OFF \
|
||||
-DSHERPA_ONNX_ENABLE_CHECK=OFF \
|
||||
-DBUILD_SHARED_LIBS=ON \
|
||||
-DSHERPA_ONNX_ENABLE_PORTAUDIO=OFF \
|
||||
..
|
||||
|
||||
cmake --build . --target install --config Release
|
||||
popd
|
||||
fi
|
||||
|
||||
if [ ! -f ./gtcrn_simple.onnx ]; then
|
||||
curl -SL -O https://github.com/k2-fsa/sherpa-onnx/releases/download/speech-enhancement-models/gtcrn_simple.onnx
|
||||
fi
|
||||
|
||||
if [ ! -f ./inp_16k.wav ]; then
|
||||
curl -SL -O https://github.com/k2-fsa/sherpa-onnx/releases/download/speech-enhancement-models/inp_16k.wav
|
||||
fi
|
||||
|
||||
fpc \
|
||||
-dSHERPA_ONNX_USE_SHARED_LIBS \
|
||||
-Fu$SHERPA_ONNX_DIR/sherpa-onnx/pascal-api \
|
||||
-Fl$SHERPA_ONNX_DIR/build/install/lib \
|
||||
./gtcrn.pas
|
||||
|
||||
export LD_LIBRARY_PATH=$SHERPA_ONNX_DIR/build/install/lib:$LD_LIBRARY_PATH
|
||||
export DYLD_LIBRARY_PATH=$SHERPA_ONNX_DIR/build/install/lib:$DYLD_LIBRARY_PATH
|
||||
|
||||
./gtcrn
|
||||
|
||||
Reference in New Issue
Block a user