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_bi_series-sherpa-onnx/.github/scripts/SherpaOnnx.kt
Fangjun Kuang ef93dcd733 Add JNI (#57)
2023-02-22 21:14:57 +08:00

90 lines
2.2 KiB
Kotlin

package com.k2fsa.sherpa.onnx
import android.content.res.AssetManager
data class EndpointRule(
var mustContainNonSilence: Boolean,
var minTrailingSilence: Float,
var minUtteranceLength: Float,
)
data class EndpointConfig(
var rule1: EndpointRule = EndpointRule(false, 2.4f, 0.0f),
var rule2: EndpointRule = EndpointRule(true, 1.4f, 0.0f),
var rule3: EndpointRule = EndpointRule(false, 0.0f, 20.0f)
)
data class OnlineTransducerModelConfig(
var encoder: String,
var decoder: String,
var joiner: String,
var numThreads: Int = 4,
var debug: Boolean = false,
)
data class FeatureConfig(
var sampleRate: Float = 16000.0f,
var featureDim: Int = 80,
)
data class OnlineRecognizerConfig(
var featConfig: FeatureConfig = FeatureConfig(),
var modelConfig: OnlineTransducerModelConfig,
var tokens: String,
var endpointConfig: EndpointConfig = EndpointConfig(),
var enableEndpoint: Boolean,
)
class SherpaOnnx(
assetManager: AssetManager,
var config: OnlineRecognizerConfig
) {
private val ptr: Long
init {
ptr = new(assetManager, config)
}
protected fun finalize() {
delete(ptr)
}
fun decodeSamples(samples: FloatArray) =
decodeSamples(ptr, samples, sampleRate = config.featConfig.sampleRate)
fun inputFinished() = inputFinished(ptr)
fun reset() = reset(ptr)
fun isEndpoint(): Boolean = isEndpoint(ptr)
val text: String
get() = getText(ptr)
private external fun delete(ptr: Long)
private external fun new(
assetManager: AssetManager,
config: OnlineRecognizerConfig,
): Long
private external fun decodeSamples(ptr: Long, samples: FloatArray, sampleRate: Float)
private external fun inputFinished(ptr: Long)
private external fun getText(ptr: Long): String
private external fun reset(ptr: Long)
private external fun isEndpoint(ptr: Long): Boolean
companion object {
init {
System.loadLibrary("sherpa-onnx-jni")
}
}
}
fun getFeatureConfig(): FeatureConfig {
val featConfig = FeatureConfig()
featConfig.sampleRate = 16000.0f
featConfig.featureDim = 80
return featConfig
}