2014-10-27 78 views
1

我在Eclipse Helios Java 1.6中工作。我已经下载了CMU Sphinx-4并添加到Java项目中。下面的代码是将音频文件转换为文本文件。InputStream和URL不兼容

import java.io.File; 

import edu.cmu.sphinx.api.Configuration; 
import edu.cmu.sphinx.api.SpeechResult; 
import edu.cmu.sphinx.api.StreamSpeechRecognizer; 

public class AudioToText { 
    public static void main(String [] args){ 
     Configuration configuration = new Configuration(); 

     // Set path to acoustic model. 
     configuration.setAcousticModelPath("C:/Program Files/eclipse/sphinx4-5prealpha/models/acoustic"); 
     // Set path to dictionary. 
     configuration.setDictionaryPath("C:/Program Files/eclipse/sphinx4-5prealpha/models/acoustic/wsj/dict/cmudict.0.6d"); 
     // Set language model. 
     configuration.setLanguageModelPath("C:/Program Files/eclipse/sphinx4-5prealpha/models/language/en-us.lm.dmp"); 

     StreamSpeechRecognizer recognizer = new StreamSpeechRecognizer(configuration); 
     recognizer.startRecognition(new File("D:/audio.mp3").toURI().toURL()); 
     SpeechResult result = recognizer.getResult(); 
     recognizer.stopRecognition(); 
    } 
} 

错误是路线:

recognizer.startRecognition(new File("D:/audio.mp3").toURI().toURL()); 

错误:

- The method startRecognition(InputStream) in the type StreamSpeechRecognizer is not applicable for the 
arguments (URL) 
- The method startRecognition(InputStream) in the type StreamSpeechRecognizer is not applicable for the 
arguments (File) 
- Line breakpoint:AudioToText [line: 19] - main(String[]) 

当我看着startRecognition()的定义,

public void startRecognition(InputStream stream) { 
    recognizer.allocate(); 
    context.setSpeechSource(stream); 
} 

如何解决这个兼容性问题?代码取自here

从Helios升级到升级版本或从Java 1.6升级到更高版本可能会很昂贵,因为之前的代码很多都是在Helios和Java 1.6上编写的。

回答

3

该方法需要一个InputStream作为参数,您不能传入FileURL

简单地传递一个InputStream

recognizer.startRecognition(new FileInputStream("D:/audio.mp3"));