test_offline_nemo_canary.kt 1.2 KB
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 objArray = WaveReader.readWaveFromFile(
      filename = waveFilename,
  )
  val samples: FloatArray = objArray[0] as FloatArray
  val sampleRate: Int = objArray[1] as Int

  var stream = recognizer.createStream()
  stream.acceptWaveform(samples, sampleRate=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(samples, sampleRate=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)
}