2014-10-27 5 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 в качестве аргумента, вы не можете передавать его в File или URL.

Просто пройти в InputStream:

recognizer.startRecognition(new FileInputStream("D:/audio.mp3")); 
Смежные вопросы