2013-06-27 3 views
0

Java에서 Sphinx4을 입력하고 네트워크를 통해 InputStream의 입력을 사용하려고합니다. 현재 내 프로그램은 네트워크에서 들어오는 임의의 수의 패킷을 all_data이라는 배열로 읽도록 설정되어 있습니다. 그로부터 ByteArrayInputStream을 만듭니다. 내가 할 수 있기를 바랄 수있는 것은 그것을 인식하기 위해 스핑크스에 전달하는 것입니다.Sphinx4에서 StreamDataSource 사용

내가 지금까지 가지고있는 코드입니다 : 내가 입력으로 마이크를 사용하는 경우

InputStream audioToPlay = new ByteArrayInputStream(all_data); 
ConfigurationManager cm; 
cm = new ConfigurationManager(BTsend.class.getResource("roila.config.xml")); 
System.out.println("Loading Recognizer..."); 
Recognizer recognizer = (Recognizer) cm.lookup("recognizer"); 
recognizer.allocate(); 

StreamDataSource streamDataSource = (StreamDataSource) cm.lookup("streamDataSource"); 
streamDataSource.setInputStream(audioToPlay, "Main Stream"); 

System.out.println("Start speaking.\n"); 
Result result = recognizer.recognize(); 
if (result != null) 
{ 
    String resultText = result.getBestResultNoFiller(); 
    System.out.println("You said: " + resultText + "\n"); 
} 
else 
{ 
    System.out.println("I can't hear what you said.\n"); 
    //break; 
} 

이 동일한 코드가 작동합니다. 다음 샘플을 수행하는 모든 것을 기초로합니다 : http://roila.org/wp-content/uploads/2010/04/roila_java.txt. 이 코드는 작동하며, 내가 한 모든 것은 마이크를 StreamDataSource으로 바꾸고 작동 시키려고했습니다.

불행히도 내가 시도한 결과는 항상 null을 반환하지만 마이크 입력 (위의 샘플은 roila.org 참조)을 사용하면 멋지게 작동합니다! 내가 널 포인터 예외를 받고했지만 이후 streamDataSource이 포착되고 그것을 추가하기 전에

<component name="streamDataSource" type="edu.cmu.sphinx.frontend.util.StreamDataSource"> 
    <property name="sampleRate" value="16000" /> 
    <property name="bigendianData" value="false" /> 
</component> 

:

나는 내 roila.confg.xml 파일에 다음을 추가했다.

어떤 도움을 주실 수 있습니까? 궁극적으로 할 수 있기를 원하는 것은 데이터를 처리하는 과정에서 데이터가 계속 들어 오면 인식됩니다. 당신이 대신 마이크 구성 요소의 프론트 엔드 파이프 라인의 구성 요소 목록에 추가해야 xml 파일로 구성 요소를 추가 옆에

+0

NullPointerException에 문제가있는 경우 NullPointerException에서 스택 추적을 제공하는 방법을 배웁니다. 문제에 대한 모든 중요한 정보는 스택 트레이스에 포함되어 있습니다. 스택 트레이스를 읽는 것만으로도됩니다. –

답변

1

는 :

<component name="epFrontEnd" type="edu.cmu.sphinx.frontend.FrontEnd"> 
    <propertylist name="pipeline"> 
     <item>streamDataSource </item> 
     <item>dataBlocker</item> 
     <item>....</item> 
     <item>featureExtraction </item> 
    </propertylist> 
</component> 

내가 의심 당신은 변화를 잊어 버렸습니다.