语音识别spinx4切换中文模型时报错IndexOutOfBoundsException

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了语音识别spinx4切换中文模型时报错IndexOutOfBoundsException相关的知识,希望对你有一定的参考价值。

Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 71680, Size: 71680 at java.util.ArrayList.rangeCheck(ArrayList.java:657) at java.util.ArrayList.get(ArrayList.java:433) at edu.cmu.sphinx.linguist.acoustic.tiedstate.Pool.get(Pool.java:61) at edu.cmu.sphinx.linguist.acoustic.tiedstate.Sphinx3Loader.createSenonePool(Sphinx3Loader.java:428) at edu.cmu.sphinx.linguist.acoustic.tiedstate.Sphinx3Loader.loadModelFiles(Sphinx3Loader.java:313) at edu.cmu.sphinx.linguist.acoustic.tiedstate.Sphinx3Loader.load(Sphinx3Loader.java:252) at edu.cmu.sphinx.frontend.AutoCepstrum.newProperties(AutoCepstrum.java:118) at edu.cmu.sphinx.util.props.PropertySheet.getOwner(PropertySheet.java:518) at edu.cmu.sphinx.util.props.ConfigurationManager.lookup(ConfigurationManager.java:163) at edu.cmu.sphinx.util.props.PropertySheet.getComponentList(PropertySheet.java:432) at edu.cmu.sphinx.frontend.FrontEnd.newProperties(FrontEnd.java:160) at edu.cmu.sphinx.util.props.PropertySheet.getOwner(PropertySheet.java:518) at edu.cmu.sphinx.util.props.PropertySheet.getComponent(PropertySheet.java:296) at edu.cmu.sphinx.decoder.scorer.SimpleAcousticScorer.newProperties(SimpleAcousticScorer.java:47) at edu.cmu.sphinx.util.props.PropertySheet.getOwner(PropertySheet.java:518) at edu.cmu.sphinx.util.props.PropertySheet.getComponent(PropertySheet.java:296) at edu.cmu.sphinx.decoder.search.WordPruningBreadthFirstSearchManager.newProperties(WordPruningBreadthFirstSearchManager.java:213) at edu.cmu.sphinx.decoder.search.WordPruningBreadthFirstLookaheadSearchManager.newProperties(WordPruningBreadthFirstLookaheadSearchManager.java:156) at edu.cmu.sphinx.util.props.PropertySheet.getOwner(PropertySheet.java:518) at edu.cmu.sphinx.util.props.PropertySheet.getComponent(PropertySheet.java:296) at edu.cmu.sphinx.decoder.AbstractDecoder.newProperties(AbstractDecoder.java:81) at edu.cmu.sphinx.decoder.Decoder.newProperties(Decoder.java:36) at edu.cmu.sphinx.util.props.PropertySheet.getOwner(PropertySheet.java:518) at edu.cmu.sphinx.util.props.PropertySheet.getComponent(PropertySheet.java:296) at edu.cmu.sphinx.recognizer.Recognizer.newProperties(Recognizer.java:86) at edu.cmu.sphinx.util.props.PropertySheet.getOwner(PropertySheet.java:518) at edu.cmu.sphinx.util.props.ConfigurationManager.lookup(ConfigurationManager.java:163) at edu.cmu.sphinx.api.Context.<init>(Context.java:73) at edu.cmu.sphinx.api.Context.<init>(Context.java:45) at edu.cmu.sphinx.api.AbstractSpeechRecognizer.<init>(AbstractSpeechRecognizer.java:44) at edu.cmu.sphinx.api.LiveSpeechRecognizer.<init>(LiveSpeechRecognizer.java:34) at edu.cmu.sphinx.demo.transcriber.liverecognizer_demo.main(liverecognizer_demo.java:28)

参考技术A 看报错,是数组越界了,具体分析了下可能是加载资源的时候没有找到需要的资源文件,建议查看下是否少加载了文件或者加载错了文件。追问

是在在官网下载的模型文件,这个要怎么查是否少加载了文件或者加载错了文件?

追答

建议再仔细看下官网的说明,可能加载中文模型需要一些特殊设置,可能是字符集,或者特殊处理加载方式,这个错误只是基础的数组越界错误,但看它居然有数万的数组,如果截取数组出错的话肯定会导致数组序列化错误。

    GBK是在国家标准GB2312基础上扩容后兼容GB2312的标准(好像还不是国家标准)。GBK编码专门用来解决中文编码的,是双字节的。不论中英文都是双字节的。

    UTF-8 编码是用以解决国际上字符的一种多字节编码,它对英文使用8位(即一个字节),中文使用24位(三个字节)来编码。

你加载的文件一般肯定是文本格式的,如果使用中文必然会涉及到编码问题,所以你主要关注点就要放在这上面,可以上官网再仔细找找看。

参考技术B 系统软件异常,建议去电脑维修店找软件专家,根据系统情况,修复下系统软件就可能解决问题了。追问

但是换英文模型就正常。

01 介绍

统计语音识别的基本等式

X------声学特征向量序列,观测值

W------单词序列

W*------给定观测值下,概率最大的单词序列

技术分享

应用贝叶斯理论

等价于

技术分享

进而得出统计语音识别的框架

运用声学模型、语言模型、词典得出给定观测值下概率最大的单词序列

技术分享

 

运用单词错误率评价语音识别的好坏

单词错误率=(替换错+删除错+插入错)/单词总数

识别准确率=1-单词错误率

技术分享

 

以上是关于语音识别spinx4切换中文模型时报错IndexOutOfBoundsException的主要内容,如果未能解决你的问题,请参考以下文章

appium---切换webview时报错

语音识别基于matlab GUI HMM中文语音识别含Matlab源码 1385期

springboot(2.0以上) --数据源切换时报错

Git切换分支时报错:you need to resolve your current index first

语音识别系列︱paddlespeech的开源语音识别模型测试

语音识别系列︱paddlespeech的开源语音识别模型测试