This repository has been archived on 2025-08-26. You can view files and clone it, but cannot push or open issues or pull requests.
Files
enginex-mr_series-sherpa-onnx/kotlin-api-examples/Main.kt

63 lines
1.9 KiB
Kotlin
Raw Normal View History

2023-02-22 21:14:57 +08:00
package com.k2fsa.sherpa.onnx
import android.content.res.AssetManager
fun main() {
2023-02-24 13:57:03 +08:00
var featConfig = FeatureConfig(
sampleRate = 16000,
2023-02-24 13:57:03 +08:00
featureDim = 80,
)
2023-04-19 17:29:35 +08:00
// please refer to
// https://k2-fsa.github.io/sherpa/onnx/pretrained_models/index.html
// to dowload pre-trained models
var modelConfig = OnlineModelConfig(
transducer = 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",
),
2023-02-24 13:57:03 +08:00
tokens = "./sherpa-onnx-streaming-zipformer-en-2023-02-21/tokens.txt",
numThreads = 1,
2023-02-24 13:57:03 +08:00
debug = false,
)
var endpointConfig = EndpointConfig()
var lmConfig = OnlineLMConfig()
2023-02-24 13:57:03 +08:00
var config = OnlineRecognizerConfig(
modelConfig = modelConfig,
lmConfig = lmConfig,
2023-02-24 13:57:03 +08:00
featConfig = featConfig,
endpointConfig = endpointConfig,
enableEndpoint = true,
decodingMethod = "greedy_search",
maxActivePaths = 4,
2023-02-24 13:57:03 +08:00
)
var model = SherpaOnnx(
config = config,
)
2023-04-19 17:29:35 +08:00
var objArray = WaveReader.readWaveFromFile(
filename = "./sherpa-onnx-streaming-zipformer-en-2023-02-21/test_wavs/0.wav",
2023-02-24 13:57:03 +08:00
)
var samples: FloatArray = objArray[0] as FloatArray
var sampleRate: Int = objArray[1] as Int
2023-02-24 13:57:03 +08:00
model.acceptWaveform(samples, sampleRate = sampleRate)
while (model.isReady()) {
model.decode()
}
2023-02-24 13:57:03 +08:00
2023-04-19 17:29:35 +08:00
var tailPaddings = FloatArray((sampleRate * 0.5).toInt()) // 0.5 seconds
model.acceptWaveform(tailPaddings, sampleRate = sampleRate)
2023-02-24 13:57:03 +08:00
model.inputFinished()
while (model.isReady()) {
model.decode()
}
2023-02-24 13:57:03 +08:00
println("results: ${model.text}")
2023-02-22 21:14:57 +08:00
}