// Copyright (c) 2026, CIIL Anuvani-LID. Apache-2.0. // The sample wrapper android/LanguageIdentifier.kt in ART (tests/android/run_on_emulator.sh): identify() on a long // recording and classify() on clips, printed as the JSON lines of tests/bindings. package com.example.anuvanilid import com.k2fsa.sherpa.onnx.WaveReader import java.io.File fun main(args: Array) { val modelDir = File(args[0]) val accelerator = Accelerator.valueOf(args[1]) val longWav = args[2] val work = File(modelDir, "work").apply { mkdirs() } LanguageIdentifier(modelDir, work, accelerator, threads = 4).use { lid -> for (path in args.drop(3)) { val w = WaveReader.readWaveFromFile(path) val ev = lid.classify(w.samples, w.sampleRate).joinToString(",") { "[\"${it.language}\",-1,${it.probability}]" } println("{\"file\":\"${File(path).name}\",\"events\":[$ev]}") } val w = WaveReader.readWaveFromFile(longWav) val r = lid.identify(w.samples, w.sampleRate) println("{\"pipeline_file\":\"${File(longWav).name}\",\"pipeline\":${r.json}}") System.err.println("wrapper: ${r.language} ${r.confidence} dominant ${r.dominantByTime} ${r.segments.size} segments") } }