文档章节

调用科大讯飞语义识别报20021,引擎错误处理

时光不再
 时光不再
发布于 2017/02/14 16:20
字数 839
阅读 354
收藏 0

      科大讯飞语义识别,需要依赖 msc32.dllmsc64.dlllibmsc32.solibmsc64.so 四个文件(Windows下为msc32.dll或msc64.dll文件,Linux下libmsc32.so或libmsc64.so文件)。报【20021引擎错误】,很可能就是缺少这四个依赖文件或者依赖文件没有正常加载。

        关于集成科大讯飞语音SDK后报错 20021引擎错误  ,在官网也有相关说明,不过个人感觉说的相对比较繁琐,尤其是针对linux平台的说明。下面是个人感觉比较简单的解决方式,在文后会附上官网的说明。

-------------------个人觉得比较简单的解决方式----------------------

        1、windows平台:找到对应的tomcat文件夹,放到该tomcat的 bin 文件夹中。

        2、linux32位平台:找到依赖的JDK文件夹,放到该JDK文件夹中的 jre>lib>amd32 文件夹中。

        3、linux64位平台:找到依赖的JDK文件夹,放到该JDK文件夹中的 jre>lib>amd64 文件夹中。

-------------------官网针对错误20021的相关说明-------------------

Q:集成sdk后运行,出现java.lang.Unsatisfie.lang.UnsatisfiedLinkError no injava.library.path,或报20021的错误?
A:Java SDK 使用了 JNI 形式,在初始化 SDK 时,SDK 将加载共享库(Windows下为msc32.dll或msc64.dll文件,Linux下libmsc32.so或libmsc64.so文件),报错是因为系统找不到共享库。

一般来说,在 Windows 下,系统加载共享库时的优先级将按以下的顺序:

1,应用的当前运行目录;

2,由系统环境参数 Path 指定的目录;

3,System32 目录;

而在Linux下,系统加载共享库时的优先级将按以下顺序:

1,LD_LIBRARY_PATH指定的目录;

2,/lib/ 和 /lib64/ 目录;

根据上面:

在Windows下,把 dll 文件,放在应用的当前运行目录(一般为应用所在的目录),或在 Path 把 dll 所在目录加入此环境参数中,或者把dll复制到 System32 目录(不建议);

在Linux下,则把 .so 所在目录,通过 export 加入 LD_LIBRARY_PATH 中(在Terminal或在“.bashrc”等启动时会加载的脚本中),或把 .so 文件复制到 lib 文件夹中(不建议);(另外,确保linux的glibc版本为2.11以上;可以执行命令 ldd  libmsc32.so <如64位系统,则命令为 ldd libmsc64.so>,如果有执行结果有`GLIBC_2.11' not found,则需要把 glibc 版本升级到2.11版)

◆一般来说,web项目的当前运行目录,并不项目的根目录,而是由tomcat等 server 指定的目录。所以具体当前运行目录应视 server 而定——即使在 windows 下,也不能把dll文件简单的放在项目根目录下就完事。同时,根据 server 把库文件配置好后,应重启 WebServer 才会生效。

另外,在 Linux 下 eclipse 调试时,可能通过Terminal 来 export LD_LIBRARY_PATH  并不起作用,此时,因为运行的调试环境不在 Terminal 中,需要在项目属性中,设置调试和运行的环境参数,在其中,增加 LD_LIBRARY_PATH ,并指定 so 文件所在的目录,如下图为指定 so 所在目录为当前运行的目录:

错误20021

关于JNI的更多说明,请通过各大搜索引擎获取更多的资料。

附:官网说明地址链接:http://bbs.xfyun.cn/forum.php?mod=viewthread&tid=9864

© 著作权归作者所有

共有 人打赏支持
时光不再
粉丝 0
博文 4
码字总数 3358
作品 0
昌平
程序员
传译员揭发科大讯飞AI同传翻译造假:官方回应

众所周知,在不同语言的翻译中,同声传译是最难的,机器很难做到。如今随着AI的兴起,人工智能真的能做到的同声传译了吗?日前,有同声传译员在知乎爆料称,在近期举办的一场国际会议上,科大...

快科技
昨天
0
0
TokuDB · 引擎特性 · REPLACE 语句优化

背景 MySQL 在标准 SQL 外,会扩展一些好用的语法,本文关注的 REPLACE 和 INSERT IGNORE 就属于这类。这 2 个语法都是对 INSERT 的扩展,语义是向表中插入数据,不同之处在于遇到 PK 或者 ...

阿里云RDS-数据库内核组
2016/08/07
0
0
科大讯飞AIUI3.0带来三大革新,还有一份免费的“厚礼”

5月17日,科大讯飞在深圳举办了名为「AI·飞无界」的新品发布会。三年前,科大讯飞首次将AIUI推向市场,去年AIUI开放平台的发布,那么今年的AIUI3.0将有哪些值得期待的革新?另外,发布会上还...

包永刚
05/18
0
0
科大讯飞:AI巨人,顶天立地的追光者

2018年5月17日,在科大讯飞主题为“AI·飞无界”的新品发布会末尾,科大讯飞消费者BG执行总裁于继栋将拥有80万用户的“全球首个面向移动开发者提供智能交互的讯飞开发平台”在过去8年的发展形...

智科技
05/22
0
0
不会俄语的他闯荡世界杯:科大讯飞这样铸造秘密武器

各位天台上的朋友,这几天过的好嘛? 据说这届世界杯,是个土豪变生蚝的神秘节日,各路强队的诡异表现已经惹得天怒人怨。票圈有朋友表示,早知道输成这样,还不如直接花钱去现场看世界杯呢,...

脑极体
06/22
0
0

没有更多内容

加载失败,请刷新页面

加载更多

TypeScript基础入门之高级类型的多态的 this类型

转发 TypeScript基础入门之高级类型的多态的 this类型 高级类型 多态的this类型 多态的this类型表示的是某个包含类或接口的子类型。 这被称做F-bounded多态性。 它能很容易的表现连贯接口间的...

durban
14分钟前
0
0
tomcat中的几种log catalina localhost

体会 catalina.out catalina.log 是tomcat的标准输出(stdout)和标准出错(stderr) cataliana.{yyyy-MM-dd}.log和localhost.{yyyy-MM-dd}.log 是通过logging.properties配置的tomcat自己运行的......

onedotdot
35分钟前
1
0
Oracle return exit continue

常在循环体中看到下面3种语句: return exit continue 举例说明 啥都没有 -- none begin for i in 1 .. 10 loop if i < 5 then dbms_output.put_line('i < 5, i = ' || to_char......

taadis
今天
3
0
JSONObject 转换时出错 InvocationTargetException

JSONObject 转换时出错java.lang.reflect.InvocationTargetException 一时看不出来是什么问题。 挺奇怪的。 百度参考了一下这个 网页的解决方案 说是类型不对,空? 仔细查看代码,果然是有一...

之渊
今天
3
0
no such module 'pop'问题

在github上 clone 了一个 swift 项目,编译时提示"no such module 'POP'"错误,查了一下居然是因为podfile中指定的最低版本是iOS 11.0,大于我测试手机的iOS版本10.3.3,将Podfile中的最低版...

yoyoso
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部