2015-12-18 58 views
0

我實現語音使用sphinx4的文字和我的代碼如下:UnsupportedClassVersionError同時使用CMU Sphinx的4 Maven項目

public class TranscriberDemo {  

     public static void main(String[] args) throws Exception { 

      Configuration configuration = new Configuration(); 

      configuration 
        .setAcousticModelPath("resource:/edu/cmu/sphinx/models/en-us/en-us"); 
      configuration 
        .setDictionaryPath("resource:/edu/cmu/sphinx/models/en-us/cmudict-en-us.dict"); 
      configuration 
        .setLanguageModelPath("resource:/edu/cmu/sphinx/models/en-us/en-us.lm.bin"); 

      StreamSpeechRecognizer recognizer = new StreamSpeechRecognizer(
        configuration); 
      InputStream stream = new FileInputStream(new File("BrookBentonAMillionMilesFromNowhere.wav")); 

      recognizer.startRecognition(stream); 
      SpeechResult result; 
      while ((result = recognizer.getResult()) != null) { 
       System.out.format("Hypothesis: %s\n", result.getHypothesis()); 
      } 
      recognizer.stopRecognition(); 
     } 
    } 

我收到以下錯誤:

Exception in thread "main" java.lang.UnsupportedClassVersionError: edu/cmu/sphinx/api/Configuration : Unsupported major.minor version 52.0 
    at java.lang.ClassLoader.defineClass1(Native Method) 
    at java.lang.ClassLoader.defineClass(ClassLoader.java:800) 
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) 
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:449) 
    at java.net.URLClassLoader.access$100(URLClassLoader.java:71) 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:361) 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:425) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:358) 
    at com.pericent.test.TranscriberDemo.main(TranscriberDemo.java:16) 

我的聚甲醛。 xml如下:

<dependencies> 
    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>3.8.1</version> 
     <scope>test</scope> 
    </dependency> 
    <!-- servlet api jar for servlets --> 
     <dependency> 
      <groupId>javax.servlet</groupId> 
      <artifactId>javax.servlet-api</artifactId> 
      <version>3.1.0</version> 
     </dependency> 

     <dependency> 
      <groupId>edu.cmu.sphinx</groupId> 
      <artifactId>sphinx4-core</artifactId> 
      <version>5prealpha-SNAPSHOT</version> 
     </dependency> 
     <dependency> 
      <groupId>edu.cmu.sphinx</groupId> 
      <artifactId>sphinx4-data</artifactId> 
      <version>5prealpha-SNAPSHOT</version> 
     </dependency> 
    </dependencies> 
    <repositories> 
     <repository> 
      <id>snapshots-repo</id> 
      <url>https://oss.sonatype.org/content/repositories/snapshots</url> 
      <releases><enabled>false</enabled></releases> 
     <snapshots><enabled>true</enabled></snapshots> 
     </repository> 
    </repositories> 

我使用的是java7,無法升級到java8。我也試圖找到獅身人面像4的舊版本,但沒有成功。那麼還有什麼解決方案可以解決這個問題嗎?

+0

您將不得不使用JDK版本編譯代碼,該版本的舊版本或等於將執行代碼的Java版本。 – Berger

回答

0

我剛剛在sphinx4中提交了一個修復程序,現在它強制執行java 1.7。我還將更新的jar部署到Maven,您可以更新並且它應該可以工作。

+0

它給與以前一樣的錯誤。 – Jennifer

+0

你能再看看嗎? – Jennifer

+0

運行'mvn install -U',它應該更新sphinx4 jar。你也可以從你當地的.m2倉庫中刪除sphinx4罐子。 –

1

您的代碼已經被使用Java 8和Java 8的目標版本正因爲如此,它不能對Java 7的運行(只能支持類文件的最高版本爲51(details here)編譯。

你需要或者使用編譯代碼的Java 7:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-compiler-plugin</artifactId> 
    <version>3.3</version> 
    <configuration> 
     <source>1.7</source> 
     <target>1.7</target> 
    </configuration> 
</plugin> 

here

或通過設置

<properties> 
    <maven.compiler.source>1.7</maven.compiler.source> 
    <maven.compiler.target>1.7</maven.compiler.target> 
</properties> 

的主要屬性。