Enable to stop TTS generation (#1041)
This commit is contained in:
@@ -186,14 +186,42 @@ Java_com_k2fsa_sherpa_onnx_OfflineTts_generateWithCallbackImpl(
|
||||
const char *p_text = env->GetStringUTFChars(text, nullptr);
|
||||
SHERPA_ONNX_LOGE("string is: %s", p_text);
|
||||
|
||||
std::function<void(const float *, int32_t, float)> callback_wrapper =
|
||||
std::function<int32_t(const float *, int32_t, float)> callback_wrapper =
|
||||
[env, callback](const float *samples, int32_t n, float /*progress*/) {
|
||||
jclass cls = env->GetObjectClass(callback);
|
||||
jmethodID mid = env->GetMethodID(cls, "invoke", "([F)V");
|
||||
|
||||
#if 0
|
||||
// this block is for debugging only
|
||||
// see also
|
||||
// https://jnjosh.com/posts/kotlinfromcpp/
|
||||
jmethodID classMethodId =
|
||||
env->GetMethodID(cls, "getClass", "()Ljava/lang/Class;");
|
||||
jobject klassObj = env->CallObjectMethod(callback, classMethodId);
|
||||
auto klassObject = env->GetObjectClass(klassObj);
|
||||
auto nameMethodId =
|
||||
env->GetMethodID(klassObject, "getName", "()Ljava/lang/String;");
|
||||
jstring classString =
|
||||
(jstring)env->CallObjectMethod(klassObj, nameMethodId);
|
||||
auto className = env->GetStringUTFChars(classString, NULL);
|
||||
SHERPA_ONNX_LOGE("name is: %s", className);
|
||||
env->ReleaseStringUTFChars(classString, className);
|
||||
#endif
|
||||
|
||||
jmethodID mid =
|
||||
env->GetMethodID(cls, "invoke", "([F)Ljava/lang/Integer;");
|
||||
if (mid == nullptr) {
|
||||
SHERPA_ONNX_LOGE("Failed to get the callback. Ignore it.");
|
||||
return 1;
|
||||
}
|
||||
|
||||
jfloatArray samples_arr = env->NewFloatArray(n);
|
||||
env->SetFloatArrayRegion(samples_arr, 0, n, samples);
|
||||
env->CallVoidMethod(callback, mid, samples_arr);
|
||||
|
||||
jobject should_continue =
|
||||
env->CallObjectMethod(callback, mid, samples_arr);
|
||||
jclass jklass = env->GetObjectClass(should_continue);
|
||||
jmethodID int_value_mid = env->GetMethodID(jklass, "intValue", "()I");
|
||||
return env->CallIntMethod(should_continue, int_value_mid);
|
||||
};
|
||||
|
||||
auto audio = reinterpret_cast<sherpa_onnx::OfflineTts *>(ptr)->Generate(
|
||||
|
||||
Reference in New Issue
Block a user