k2-fsa/sherpa-ncnn

Cannot resolve corresponding JNI function.

Closed this issue · 7 comments

我可以在Windows上用预编译so文件成功单独运行android kotlin demo, 但是我把它集成到我自己的 java 项目中,就会有如下错误
image
找不到C++实现了,这是否意味着我要把整个sherpa-ncnn和ncnn的头文件全部引入我的项目,且要对照 sherpa-ncnn/jni/jni.cpp实现对应方法呢,望大佬指条明路,感谢

就会有如下错误

错误在哪里?

请帖 error log 截图

这是否意味着我要把整个sherpa-ncnn和ncnn的头文件全部引入我的项目

no no no.

你只需要

  • .so 文件
  • 我们提供的 kotlin 文件

就够了。不需要任何的 c++ 文件(不需要 c++ 头文件,不需要 c++ 源代码)

好的,这个问题已经解决了,我是修改了包名称和这个项目中的一样,想是so文件的函数签名不对了。还有一个问题,model.isReady的判定条件是什么?我想设置成长按按钮进行识别并像这个项目一样流式输出,结果发现好像识别不出结果来

model.isReady的判定条件是什么

当模型发现,特征队列里面存储的未识别的数据足够多时,is ready 就会返回 true.

我是修改了包名称和这个项目中的一样

你不需要修改的。

你可以用任意的 package name, 只要保留我们提供的 .kt 文件中的 package name 不变就可以了.

注意, koltin 里面的 package name, 并不一定要存在对应的文件夹里面。你可以存到任意的文件夹,这个和 java 是不一样的。

你不需要把你自己的 package name 改成我们的。

你不需要修改的。

你可以用任意的 package name, 只要保留我们提供的 .kt 文件中的 package name 不变就可以了.

注意, koltin 里面的 package name, 并不一定要存在对应的文件夹里面。你可以存到任意的文件夹,这个和 java 是不一样的。

你不需要把你自己的 package name 改成我们的

倒也没有,我新建了一个包存放这个文件。至于识别不出来的问题,现在已解决了,是我代码的问题。谢谢大佬,就喜欢这样有issue马上回复的collaborator!

欢迎使用新一代 Kaldi!