mirror of
https://github.com/k2-fsa/sherpa-onnx.git
synced 2026-11-10 21:11:03 +08:00
This pull request significantly refactors the Java Native Interface (JNI) layer and its corresponding Java/Kotlin APIs to improve type safety and code clarity. By introducing dedicated data classes for JNI return types and modifying the JNI C++ implementations to directly construct and return these specific Java/Kotlin objects, the need for explicit and potentially unsafe casting of generic Object[] in the Java/Kotlin code has been eliminated. This change streamlines API usage and reduces potential runtime errors.
47 lines
1.2 KiB
Kotlin
47 lines
1.2 KiB
Kotlin
package com.k2fsa.sherpa.onnx
|
|
|
|
fun main() {
|
|
val recognizer = createOfflineRecognizer()
|
|
val waveFilename = "./sherpa-onnx-nemo-canary-180m-flash-en-es-de-fr-int8/test_wavs/en.wav"
|
|
|
|
val waveData = WaveReader.readWaveFromFile(
|
|
filename = waveFilename,
|
|
)
|
|
|
|
var stream = recognizer.createStream()
|
|
stream.acceptWaveform(waveData.samples, sampleRate=waveData.sampleRate)
|
|
recognizer.decode(stream)
|
|
|
|
var result = recognizer.getResult(stream)
|
|
println("English: $result")
|
|
|
|
stream.release()
|
|
|
|
// now output text in German
|
|
val config = recognizer.config.copy(modelConfig=recognizer.config.modelConfig.copy(
|
|
canary=recognizer.config.modelConfig.canary.copy(
|
|
tgtLang="de"
|
|
)
|
|
))
|
|
recognizer.setConfig(config)
|
|
|
|
stream = recognizer.createStream()
|
|
stream.acceptWaveform(waveData.samples, sampleRate=waveData.sampleRate)
|
|
recognizer.decode(stream)
|
|
|
|
result = recognizer.getResult(stream)
|
|
println("German: $result")
|
|
|
|
stream.release()
|
|
recognizer.release()
|
|
}
|
|
|
|
|
|
fun createOfflineRecognizer(): OfflineRecognizer {
|
|
val config = OfflineRecognizerConfig(
|
|
modelConfig = getOfflineModelConfig(type = 32)!!,
|
|
)
|
|
|
|
return OfflineRecognizer(config = config)
|
|
}
|