Add Kotlin API for speech enhancement GTCRN models (#2008)

This commit is contained in:
Fangjun Kuang
2025-03-16 10:41:01 +08:00
committed by GitHub
parent c972554ad1
commit ed8e6c9aed
8 changed files with 326 additions and 17 deletions

View File

@@ -0,0 +1 @@
../sherpa-onnx/kotlin-api/OfflineSpeechDenoiser.kt

View File

@@ -371,6 +371,31 @@ function testOfflineSpeakerDiarization() {
java -Djava.library.path=../build/lib -jar $out_filename
}
function testOfflineSpeechDenoiser() {
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
out_filename=test_offline_speech_denoiser.jar
kotlinc-jvm -include-runtime -d $out_filename \
test_offline_speech_denoiser.kt \
OfflineSpeechDenoiser.kt \
WaveReader.kt \
faked-asset-manager.kt \
faked-log.kt
ls -lh $out_filename
java -Djava.library.path=../build/lib -jar $out_filename
ls -lh *.wav
}
testOfflineSpeechDenoiser
testOfflineSpeakerDiarization
testSpeakerEmbeddingExtractor
testOnlineAsr

View File

@@ -0,0 +1,41 @@
package com.k2fsa.sherpa.onnx
// Please download test files in this script from
// https://github.com/k2-fsa/sherpa-onnx/releases/tag/speech-enhancement-models
fun main() {
test()
}
fun test() {
val denoiser = createOfflineSpeechDenoiser()
val waveFilename = "./inp_16k.wav";
val objArray = WaveReader.readWaveFromFile(
filename = waveFilename,
)
val samples: FloatArray = objArray[0] as FloatArray
val sampleRate: Int = objArray[1] as Int
val denoised = denoiser.run(samples, sampleRate);
denoised.save(filename="./enhanced-16k.wav")
println("saved to ./enhanced-16k.wav")
}
fun createOfflineSpeechDenoiser(): OfflineSpeechDenoiser {
val config = OfflineSpeechDenoiserConfig(
model = OfflineSpeechDenoiserModelConfig(
gtcrn = OfflineSpeechDenoiserGtcrnModelConfig(
model = "./gtcrn_simple.onnx"
),
provider = "cpu",
numThreads = 1,
),
)
println(config)
return OfflineSpeechDenoiser(config = config)
}