Add Kotlin and Java API for homophone replacer (#2166)

* Add Kotlin API for homonphone replacer

* Add Java API for homonphone replacer
This commit is contained in:
Fangjun Kuang
2025-04-29 22:55:21 +08:00
committed by GitHub
parent 50b5329572
commit e537094b07
21 changed files with 325 additions and 1 deletions

View File

@@ -284,6 +284,30 @@ static OfflineRecognizerConfig GetOfflineConfig(JNIEnv *env, jobject config) {
ans.model_config.telespeech_ctc = p;
env->ReleaseStringUTFChars(s, p);
// homophone replacer config
fid = env->GetFieldID(cls, "hr",
"Lcom/k2fsa/sherpa/onnx/HomophoneReplacerConfig;");
jobject hr_config = env->GetObjectField(config, fid);
jclass hr_config_cls = env->GetObjectClass(hr_config);
fid = env->GetFieldID(hr_config_cls, "dictDir", "Ljava/lang/String;");
s = (jstring)env->GetObjectField(hr_config, fid);
p = env->GetStringUTFChars(s, nullptr);
ans.hr.dict_dir = p;
env->ReleaseStringUTFChars(s, p);
fid = env->GetFieldID(hr_config_cls, "lexicon", "Ljava/lang/String;");
s = (jstring)env->GetObjectField(hr_config, fid);
p = env->GetStringUTFChars(s, nullptr);
ans.hr.lexicon = p;
env->ReleaseStringUTFChars(s, p);
fid = env->GetFieldID(hr_config_cls, "ruleFsts", "Ljava/lang/String;");
s = (jstring)env->GetObjectField(hr_config, fid);
p = env->GetStringUTFChars(s, nullptr);
ans.hr.rule_fsts = p;
env->ReleaseStringUTFChars(s, p);
return ans;
}

View File

@@ -253,6 +253,30 @@ static OnlineRecognizerConfig GetConfig(JNIEnv *env, jobject config) {
ans.ctc_fst_decoder_config.max_active =
env->GetIntField(fst_decoder_config, fid);
// homophone replacer config
fid = env->GetFieldID(cls, "hr",
"Lcom/k2fsa/sherpa/onnx/HomophoneReplacerConfig;");
jobject hr_config = env->GetObjectField(config, fid);
jclass hr_config_cls = env->GetObjectClass(hr_config);
fid = env->GetFieldID(hr_config_cls, "dictDir", "Ljava/lang/String;");
s = (jstring)env->GetObjectField(hr_config, fid);
p = env->GetStringUTFChars(s, nullptr);
ans.hr.dict_dir = p;
env->ReleaseStringUTFChars(s, p);
fid = env->GetFieldID(hr_config_cls, "lexicon", "Ljava/lang/String;");
s = (jstring)env->GetObjectField(hr_config, fid);
p = env->GetStringUTFChars(s, nullptr);
ans.hr.lexicon = p;
env->ReleaseStringUTFChars(s, p);
fid = env->GetFieldID(hr_config_cls, "ruleFsts", "Ljava/lang/String;");
s = (jstring)env->GetObjectField(hr_config, fid);
p = env->GetStringUTFChars(s, nullptr);
ans.hr.rule_fsts = p;
env->ReleaseStringUTFChars(s, p);
return ans;
}
} // namespace sherpa_onnx