Add examples for Kotlin API (#124)
This commit is contained in:
57
kotlin-api-examples/Main.kt
Normal file
57
kotlin-api-examples/Main.kt
Normal file
@@ -0,0 +1,57 @@
|
||||
package com.k2fsa.sherpa.onnx
|
||||
|
||||
import android.content.res.AssetManager
|
||||
|
||||
fun main() {
|
||||
var featConfig = FeatureConfig(
|
||||
sampleRate = 16000,
|
||||
featureDim = 80,
|
||||
)
|
||||
|
||||
// please refer to
|
||||
// https://k2-fsa.github.io/sherpa/onnx/pretrained_models/index.html
|
||||
// to dowload pre-trained models
|
||||
var modelConfig = OnlineTransducerModelConfig(
|
||||
encoder = "./sherpa-onnx-streaming-zipformer-en-2023-02-21/encoder-epoch-99-avg-1.onnx",
|
||||
decoder = "./sherpa-onnx-streaming-zipformer-en-2023-02-21/decoder-epoch-99-avg-1.onnx",
|
||||
joiner = "./sherpa-onnx-streaming-zipformer-en-2023-02-21/joiner-epoch-99-avg-1.onnx",
|
||||
tokens = "./sherpa-onnx-streaming-zipformer-en-2023-02-21/tokens.txt",
|
||||
numThreads = 1,
|
||||
debug = false,
|
||||
)
|
||||
|
||||
var endpointConfig = EndpointConfig()
|
||||
|
||||
var config = OnlineRecognizerConfig(
|
||||
modelConfig = modelConfig,
|
||||
featConfig = featConfig,
|
||||
endpointConfig = endpointConfig,
|
||||
enableEndpoint = true,
|
||||
decodingMethod = "greedy_search",
|
||||
maxActivePaths = 4,
|
||||
)
|
||||
|
||||
var model = SherpaOnnx(
|
||||
config = config,
|
||||
)
|
||||
|
||||
var objArray = WaveReader.readWaveFromFile(
|
||||
filename = "./sherpa-onnx-streaming-zipformer-en-2023-02-21/test_wavs/0.wav",
|
||||
)
|
||||
var samples : FloatArray = objArray[0] as FloatArray
|
||||
var sampleRate : Int = objArray[1] as Int
|
||||
|
||||
model.acceptWaveform(samples, sampleRate=sampleRate)
|
||||
while (model.isReady()) {
|
||||
model.decode()
|
||||
}
|
||||
|
||||
var tailPaddings = FloatArray((sampleRate * 0.5).toInt()) // 0.5 seconds
|
||||
model.acceptWaveform(tailPaddings, sampleRate=sampleRate)
|
||||
model.inputFinished()
|
||||
while (model.isReady()) {
|
||||
model.decode()
|
||||
}
|
||||
|
||||
println("results: ${model.text}")
|
||||
}
|
||||
1
kotlin-api-examples/SherpaOnnx.kt
Symbolic link
1
kotlin-api-examples/SherpaOnnx.kt
Symbolic link
@@ -0,0 +1 @@
|
||||
../android/SherpaOnnx/app/src/main/java/com/k2fsa/sherpa/onnx/SherpaOnnx.kt
|
||||
1
kotlin-api-examples/WaveReader.kt
Symbolic link
1
kotlin-api-examples/WaveReader.kt
Symbolic link
@@ -0,0 +1 @@
|
||||
../android/SherpaOnnx/app/src/main/java/com/k2fsa/sherpa/onnx/WaveReader.kt
|
||||
3
kotlin-api-examples/faked-asset-manager.kt
Normal file
3
kotlin-api-examples/faked-asset-manager.kt
Normal file
@@ -0,0 +1,3 @@
|
||||
package android.content.res
|
||||
|
||||
class AssetManager {}
|
||||
38
kotlin-api-examples/run.sh
Executable file
38
kotlin-api-examples/run.sh
Executable file
@@ -0,0 +1,38 @@
|
||||
#!/usr/bin/env bash
|
||||
#
|
||||
# This scripts shows how to build JNI libs for sherpa-onnx
|
||||
# Note: This scripts runs only on Linux and macOS, though sherpa-onnx
|
||||
# supports building JNI libs for Windows.
|
||||
|
||||
set -e
|
||||
|
||||
cd ..
|
||||
mkdir -p build
|
||||
cd build
|
||||
|
||||
cmake \
|
||||
-DSHERPA_ONNX_ENABLE_PYTHON=OFF \
|
||||
-DSHERPA_ONNX_ENABLE_TESTS=OFF \
|
||||
-DSHERPA_ONNX_ENABLE_CHECK=OFF \
|
||||
-DBUILD_SHARED_LIBS=ON \
|
||||
-DSHERPA_ONNX_ENABLE_PORTAUDIO=OFF \
|
||||
-DSHERPA_ONNX_ENABLE_JNI=ON \
|
||||
..
|
||||
|
||||
make -j4
|
||||
ls -lh lib
|
||||
|
||||
export LD_LIBRARY_PATH=$PWD/build/lib:$LD_LIBRARY_PATH
|
||||
|
||||
cd ../kotlin-api-examples
|
||||
|
||||
if [ ! -f ./sherpa-onnx-streaming-zipformer-en-2023-02-21/tokens.txt ]; then
|
||||
git lfs install
|
||||
git clone https://huggingface.co/csukuangfj/sherpa-onnx-streaming-zipformer-en-2023-02-21
|
||||
fi
|
||||
|
||||
kotlinc-jvm -include-runtime -d main.jar Main.kt WaveReader.kt SherpaOnnx.kt faked-asset-manager.kt
|
||||
|
||||
ls -lh main.jar
|
||||
|
||||
java -Djava.library.path=../build/lib -jar main.jar
|
||||
Reference in New Issue
Block a user