2013-04-15 4 views
2

Я новичок в Sphinx 4 и пытаюсь сделать приложение для простого распознавания цифр. У меня есть набор wavs с тремя цифрами, выраженный с короткой паузой (например, one_five_nine.wav) для теста. Проблема заключается в том, что распознавание файла останавливается после обнаружения первой цифры, поэтому у меня есть только «один» в качестве вывода для one_five_nine.wav.Sphinx 4: узнайте wav со словами, произносящимися с короткой паузой

Вот мой передний конец конфигурации

<component name="epFrontEnd16k" type="edu.cmu.sphinx.frontend.FrontEnd"> 
    <propertylist name="pipeline"> 
     <item>audioFileDataSource</item> 
     <item>dataBlocker </item> 
     <item>speechClassifier </item> 
     <item>speechMarker </item> 
     <item>nonSpeechDataFilter </item> 
     <item>preemphasizer </item> 
     <item>windower </item> 
     <item>fft </item> 
     <item>melFilterBankFor16k</item> 
     <item>dct </item> 
     <item>liveCMN </item> 
     <item>featureExtraction </item> 
    </propertylist> 
</component> 

и код

Recognizer recognizer = (Recognizer) cm.lookup("recognizer"); 
    recognizer.allocate(); 

    AudioFileDataSource dataSource = (AudioFileDataSource) cm.lookup("audioFileDataSource"); 

    File folder = new File(testDataSetDirectory); 
    for (final File fileEntry : folder.listFiles()) { 
     // retrive URL 
     URL audioURL = null; 
     try { 
      audioURL = fileEntry.toURL(); 
     } catch (MalformedURLException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 

     // configure the audio input for the recognizer 
     dataSource.setAudioFile(audioURL, null); 

     Result result = recognizer.recognize();   
     String recognizedText = result != null ? result.getBestFinalResultNoFiller() : "null"; 

     // print 
     System.out.println(fileEntry.getName() + ":\t" + recognizedText); 
    } 

Спасибо за помощь.

ответ

0

Вам нужно вызвать распознаватель в цикле:

Result result; 
while(true) { 
    result = recognizer.recognize();   
    if (result == null) 
     break; 
} 
+0

большое, большое спасибо – user2283573