狮身人面像4:用短暂停顿的单词识别wav

时间:2013-04-15 17:47:22

标签: speech-recognition cmusphinx sphinx4

我是Sphinx 4的新手并尝试制作简单的数字识别应用程序。 我有一组带有3位数的wavs,短暂停顿(如one_five_nine.wav),用于测试。 问题是在找到第一个数字后文件识别停止,因此我只有“one”作为one_five_nine.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);
    }

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

您需要在循环中调用识别器:

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