-
Notifications
You must be signed in to change notification settings - Fork 473
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
f8d2bf7
commit df322a1
Showing
8 changed files
with
360 additions
and
9 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,2 +1,3 @@ | ||
!run*.sh | ||
circular_buffer | ||
remove_silence |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
# Introduction | ||
|
||
|
||
This directory contains examples for how to use the VAD (voice activity detection) | ||
APIs. | ||
|
||
|Directory| Description| | ||
|---------|------------| | ||
|[run-circular-buffer.sh](./run-circular-buffer.sh)|It shows how to use the circular buffer API.| | ||
|[run-remove-silence.sh](./run-remove-silence.sh)|It shows how to use the VAD API to remove silences from a wave file.| | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,100 @@ | ||
{ Copyright (c) 2024 Xiaomi Corporation } | ||
{ | ||
This file shows how to use the VAD API from sherpa-onnx | ||
to remove silences from a wave file. | ||
} | ||
program main; | ||
|
||
{$mode delphi} | ||
|
||
uses | ||
sherpa_onnx, | ||
SysUtils; | ||
|
||
var | ||
Wave: TSherpaOnnxWave; | ||
|
||
Config: TSherpaOnnxVadModelConfig; | ||
Vad: TSherpaOnnxVoiceActivityDetector; | ||
Offset: Integer; | ||
WindowSize: Integer; | ||
SpeechSegment: TSherpaOnnxSpeechSegment; | ||
|
||
Start: Single; | ||
Duration: Single; | ||
SampleRate: Integer; | ||
|
||
AllSpeechSegment: array of TSherpaOnnxSpeechSegment; | ||
AllSamples: array of Single; | ||
N: Integer; | ||
I: Integer; | ||
begin | ||
|
||
SampleRate := 16000; {Please don't change it unless you know the details} | ||
|
||
Wave := SherpaOnnxReadWave('./lei-jun-test.wav'); | ||
if Wave.SampleRate <> SampleRate then | ||
begin | ||
WriteLn(Format('Expected sample rate: %d. Given: %d', | ||
[SampleRate, Wave.SampleRate])); | ||
|
||
Exit; | ||
end; | ||
|
||
WindowSize := 512; {Please don't change it unless you know the details} | ||
Initialize(Config); | ||
|
||
Config.SileroVad.Model := './silero_vad.onnx'; | ||
Config.SileroVad.MinSpeechDuration := 0.25; | ||
Config.SileroVad.MinSilenceDuration := 0.5; | ||
Config.SileroVad.Threshold := 0.5; | ||
Config.SileroVad.WindowSize := WindowSize; | ||
Config.NumThreads:= 1; | ||
Config.Debug:= True; | ||
Config.Provider:= 'cpu'; | ||
Config.SampleRate := SampleRate; | ||
|
||
Vad := TSherpaOnnxVoiceActivityDetector.Create(Config, 20); | ||
|
||
AllSpeechSegment := nil; | ||
AllSamples := nil; | ||
Offset := 0; | ||
while Offset + WindowSize <= Length(Wave.Samples) do | ||
begin | ||
Vad.AcceptWaveform(Wave.Samples, Offset, WindowSize); | ||
Inc(Offset, WindowSize); | ||
|
||
while not Vad.IsEmpty do | ||
begin | ||
SetLength(AllSpeechSegment, Length(AllSpeechSegment) + 1); | ||
|
||
SpeechSegment := Vad.Front(); | ||
Vad.Pop(); | ||
AllSpeechSegment[Length(AllSpeechSegment)-1] := SpeechSegment; | ||
|
||
Start := SpeechSegment.Start / SampleRate; | ||
Duration := Length(SpeechSegment.Samples) / SampleRate; | ||
WriteLn(Format('%.3f -- %.3f', [Start, Start + Duration])); | ||
end; | ||
end; | ||
|
||
N := 0; | ||
for SpeechSegment in AllSpeechSegment do | ||
Inc(N, Length(SpeechSegment.Samples)); | ||
|
||
SetLength(AllSamples, N); | ||
|
||
N := 0; | ||
for SpeechSegment in AllSpeechSegment do | ||
begin | ||
for I := Low(SpeechSegment.Samples) to High(SpeechSegment.Samples) do | ||
begin | ||
AllSamples[N] := SpeechSegment.Samples[I]; | ||
Inc(N); | ||
end; | ||
end; | ||
|
||
SherpaOnnxWriteWave('./lei-jun-test-no-silence.wav', AllSamples, SampleRate); | ||
WriteLn('Saved to ./lei-jun-test-no-silence.wav'); | ||
|
||
end. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,42 @@ | ||
#!/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 ./silero_vad.onnx ]]; then | ||
curl -SL -O https://github.com/k2-fsa/sherpa-onnx/releases/download/asr-models/silero_vad.onnx | ||
fi | ||
|
||
if [ ! -f ./lei-jun-test.wav ]; then | ||
curl -SL -O https://github.com/k2-fsa/sherpa-onnx/releases/download/asr-models/lei-jun-test.wav | ||
fi | ||
|
||
fpc \ | ||
-Fu$SHERPA_ONNX_DIR/sherpa-onnx/pascal-api \ | ||
-Fl$SHERPA_ONNX_DIR/build/install/lib \ | ||
./remove_silence.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 | ||
|
||
./remove_silence |
Oops, something went wrong.