Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions kotlin-api-examples/OfflineDiacritization.kt
21 changes: 21 additions & 0 deletions kotlin-api-examples/run.sh
Original file line number Diff line number Diff line change
Expand Up @@ -430,6 +430,26 @@ function testOfflinePunctuation() {
java -Djava.library.path=../build/lib -jar $out_filename
}

function testOfflineDiacritization() {
if [[ ! -f ./catt_eo_model_onnx/encoder.onnx || ! -f ./catt_eo_model_onnx/decoder.onnx ]]; then
curl -SL -O https://github.com/abjadai/catt/releases/download/v2/eo_model_onnx.zip
rm -rf catt_eo_model_onnx
unzip -o eo_model_onnx.zip -d catt_eo_model_onnx
rm eo_model_onnx.zip
fi

out_filename=test_offline_diacritization.jar
kotlinc-jvm -include-runtime -d $out_filename \
./test_offline_diacritization.kt \
./OfflineDiacritization.kt \
faked-asset-manager.kt \
faked-log.kt

ls -lh $out_filename

java -Djava.library.path=../build/lib -jar $out_filename
}

function testOnlinePunctuation() {
if [ ! -f ./sherpa-onnx-online-punct-en-2024-08-06/model.int8.onnx ]; then
curl -SL -O https://github.com/k2-fsa/sherpa-onnx/releases/download/punctuation-models/sherpa-onnx-online-punct-en-2024-08-06.tar.bz2
Expand Down Expand Up @@ -807,6 +827,7 @@ testAudioTagging
testSpokenLanguageIdentification
testOfflineAsr
testOfflinePunctuation
testOfflineDiacritization
testOnlinePunctuation
testInverseTextNormalizationOfflineAsr
testInverseTextNormalizationOnlineAsr
33 changes: 33 additions & 0 deletions kotlin-api-examples/test_offline_diacritization.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
package com.k2fsa.sherpa.onnx

fun main() {
testDiacritization()
}

fun testDiacritization() {
// please download the model from
// https://github.com/abjadai/catt/releases/download/v2/eo_model_onnx.zip
val config = OfflineDiacritizationConfig(
model = OfflineDiacritizationModelConfig(
cattEncoder = "./catt_eo_model_onnx/encoder.onnx",
cattDecoder = "./catt_eo_model_onnx/decoder.onnx",
numThreads = 1,
debug = true,
provider = "cpu",
)
)
val diacrt = OfflineDiacritization(config = config)
val sentences = arrayOf(
"وقالت مجلة نيوزويك الأمريكية التحديث الجديد ل إنستجرام يمكن أن يساهم في إيقاف وكشف الحسابات المزورة بسهولة شديدة",
"اللغة العربية من أقدم اللغات السامية",
)
println("---")
for (text in sentences) {
val out = diacrt.addDiacritics(text)
println("Input: $text")
println("Output: $out")
println("---")
}

diacrt.release()
}
64 changes: 64 additions & 0 deletions sherpa-onnx/kotlin-api/OfflineDiacritization.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
package com.k2fsa.sherpa.onnx

import android.content.res.AssetManager

data class OfflineDiacritizationModelConfig(
var cattEncoder: String = "",
var cattDecoder: String = "",
var numThreads: Int = 1,
var debug: Boolean = false,
var provider: String = "cpu",
)


data class OfflineDiacritizationConfig(
var model: OfflineDiacritizationModelConfig,
)

class OfflineDiacritization(
assetManager: AssetManager? = null,
config: OfflineDiacritizationConfig,
) {
private var ptr: Long

init {
ptr = if (assetManager != null) {
newFromAsset(assetManager, config)
} else {
newFromFile(config)
}
require(ptr != 0L) {
"Invalid OfflineDiacritizationConfig: failed to create native OfflineDiacritization"
}
}

protected fun finalize() {
if (ptr != 0L) {
delete(ptr)
ptr = 0
}
}

fun release() = finalize()

fun addDiacritics(text: String) = addDiacritics(ptr, text)

private external fun delete(ptr: Long)

private external fun addDiacritics(ptr: Long, text: String): String

private external fun newFromAsset(
assetManager: AssetManager,
config: OfflineDiacritizationConfig,
): Long

private external fun newFromFile(
config: OfflineDiacritizationConfig,
): Long

companion object {
init {
System.loadLibrary("sherpa-onnx-jni")
}
}
}