【问题标题】:Using Sphinx4: java.lang.IncompatibleClassChangeError使用 Sphinx4:java.lang.IncompatibleClassChangeError
【发布时间】:2014-11-10 01:02:26
【问题描述】:

我正在尝试构建一个使用基本语音识别的程序。尝试在 voice.config.xml 文件中查找“识别器”组件时遇到问题。我对使用 Sphinx4 比较陌生,所以这可能是一个非常简单的错误。我花了几个小时试图找到它,因此非常感谢您提供详细解释和详细的回复。

这是我将用来翻译输入的方法。

    public static void translate() {

    URL url = S2T.class.getResource("voice.config.xml");

    ConfigurationManager cm = new ConfigurationManager(url);
    PropertySheet ps = cm.getPropertySheet("voice.config.xml");


    Microphone microphone = (Microphone) cm.lookup("microphone");
    Recognizer recognizer = (Recognizer) cm.lookup("recognizer");


     recognizer.allocate();

     if(microphone.startRecording()) {
         while(true) {
              Result result = recognizer.recognize();
              String resultText = result.getBestResultNoFiller();
              System.out.println("You said: " + resultText);
         }
     }
}

这是我从另一个类调用方法时遇到的错误:

Exception in thread "main" java.lang.IncompatibleClassChangeError: Found class edu.cmu.sphinx.util.props.PropertySheet, but interface was expected
    at edu.cmu.sphinx.model.acoustic.WSJ_8gau_13dCep_16k_40mel_130Hz_6800Hz.Model.newProperties(Model.java:158)
    at edu.cmu.sphinx.util.props.PropertySheet.getOwner(PropertySheet.java:505)
    at edu.cmu.sphinx.util.props.PropertySheet.getComponent(PropertySheet.java:287)
    at edu.cmu.sphinx.linguist.flat.FlatLinguist.setupAcousticModel(FlatLinguist.java:278)
    at edu.cmu.sphinx.linguist.flat.FlatLinguist.newProperties(FlatLinguist.java:244)
    at edu.cmu.sphinx.util.props.PropertySheet.getOwner(PropertySheet.java:505)
    at edu.cmu.sphinx.util.props.PropertySheet.getComponent(PropertySheet.java:287)
    at edu.cmu.sphinx.decoder.search.SimpleBreadthFirstSearchManager.newProperties(SimpleBreadthFirstSearchManager.java:182)
    at edu.cmu.sphinx.util.props.PropertySheet.getOwner(PropertySheet.java:505)
    at edu.cmu.sphinx.util.props.PropertySheet.getComponent(PropertySheet.java:287)
    at edu.cmu.sphinx.decoder.AbstractDecoder.newProperties(AbstractDecoder.java:65)
    at edu.cmu.sphinx.decoder.Decoder.newProperties(Decoder.java:37)
    at edu.cmu.sphinx.util.props.PropertySheet.getOwner(PropertySheet.java:505)
    at edu.cmu.sphinx.util.props.PropertySheet.getComponent(PropertySheet.java:287)
    at edu.cmu.sphinx.recognizer.Recognizer.newProperties(Recognizer.java:90)
    at edu.cmu.sphinx.util.props.PropertySheet.getOwner(PropertySheet.java:505)
    at edu.cmu.sphinx.util.props.ConfigurationManager.lookup(ConfigurationManager.java:161)
    at LukeTrujillo.CAB.Voice.S2T.translate(S2T.java:25)
    at LukeTrujllo.CAB.Main.Main.main(Main.java:14)

这是该类所在包的当前构建路径:

LukeTrujillo/CAB/Voice/
- Main.java
- S2T.gram
- voice.config.xml
- voice.Manifest

类路径中的 Sphinx JAR:

  • js.jar
  • jsapi-1.0-base.jar
  • sphinx4.jar
  • tags.jar
  • jl1.01.jar
  • resty-0.3.2.jar
  • WSJ_8gau_13dCep_16k_40mel_130Hz_6800Hz.jar
  • TIDIGITS_8gau_13dCep_16k_40mel_130Hz_6800Hz.jar

【问题讨论】:

  • 您能否列出您的类路径中的 Sphinx 项目中的 JAR。看起来 edu.cmu.sphinx.util.props.PropertySheet 应该是一个接口,但正在找到一个类。
  • 将其添加到主要问题中。
  • 您确定WSJ_8gau_13dCep_16k_40mel_130Hz_6800Hz.jar 与Sphinx4 兼容吗?我不能给你细节,但错误似乎是那个 JAR 中的一个类(准确地说是:edu.cmu.sphinx.model.acoustic.WSJ_8gau_13dCep_16k_40mel_130Hz_6800Hz.Model)期望edu.cmu.sphinx.util.props.PropertySheet 是一个接口,但它实际上是一个类。

标签: java sphinx4


【解决方案1】:

您正在使用版本不兼容的过时 sphinx4。你可以找到教程 以及 CMUSphinx 网站上的最新下载:

http://cmusphinx.sourceforge.net/wiki/tutorialsphinx4

【讨论】:

    猜你喜欢
    • 2011-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-20
    • 1970-01-01
    相关资源
    最近更新 更多