Запись звука в формате WAV для Sphinx-4 не удалась

Я записал wav-файл с помощью Audacity для тестирования демо-транскрибатора из Sphinx-4, я следовал инструкциям в этом сообщении: -not-working-accurate-for-short-wav">демонстрация распознавания речи Sphinx4 trasncribe не работает точно для короткого файла wav

особенно в этом ответе:

It must be 16khz 16bit mono little-endian file. 

После этого я даже уменьшил шум. Но я получаю нулевую ошибку, когда пытаюсь распечатать гипотезу, что означает, что с моей записью возникла проблема:

Loading models...
Exception in thread "main" java.lang.NullPointerException
at transcriber.Transcriber.main(Transcriber.java:41)
Java Result: 1
BUILD SUCCESSFUL (total time: 2 minutes 14 seconds)

Строка 41, где я печатаю гипотезу. что я могу сделать, чтобы заставить его работать? Спасибо

Изменить: код:

package transcriber;

import java.net.URL;

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

/**
 *
 * @author ha
 */
public class Transcriber {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) throws Exception {
System.out.println("Loading models...");

        Configuration configuration = new Configuration();

        // Load model from the jar
        configuration.setAcousticModelPath("resource:/WSJ_8gau_13dCep_16k_40mel_130Hz_6800Hz");
        configuration.setDictionaryPath("resource:/WSJ_8gau_13dCep_16k_40mel_130Hz_6800Hz/dict/cmudict.0.6d");        
        configuration.setLanguageModelPath("models/language/en-us.lm.dmp");

        StreamSpeechRecognizer recognizer = new StreamSpeechRecognizer(configuration);

        URL audioUrl = new URL("file:WAV/Hello.wav");
        recognizer.startRecognition(audioUrl.openStream());

        SpeechResult result = recognizer.getResult();
        System.out.println(recognizer.getResult().getHypothesis());

        while ((result = recognizer.getResult()) != null) {
            System.out.format("Hypothesis: %s\n",
                              result.getHypothesis());
        }

        System.out.println("Stop Recognition..");
        recognizer.stopRecognition();
    }
}

person Evanescence    schedule 28.02.2014    source источник
comment
Вы уверены, что это связано с записью? NullPointerException может произойти, потому что в вашем коде просто ошибка (что-то нулевое).   -  person Radiodef    schedule 28.02.2014
comment
Я почти уверен, что это из-за моей записи, потому что, когда я запускаю ее с демонстрационным звуком, она работает очень хорошо :/   -  person Evanescence    schedule 28.02.2014
comment
Когда вы спрашиваете об исключениях, ВСЕГДА указывайте полный текст исключения.   -  person Nikolay Shmyrev    schedule 28.02.2014
comment
Я отредактировал вопрос. Надеюсь, это поможет найти ответ. Спасибо.   -  person Evanescence    schedule 28.02.2014
comment
Поделитесь файлом, который вы тоже пытаетесь.   -  person Nikolay Shmyrev    schedule 01.03.2014
comment
Конечно, mediafire.com/listen/e44iwcm1is1k76v/Hello.wav   -  person Evanescence    schedule 01.03.2014
comment
Я попробовал ваш аудиофайл с демонстрацией Transcriber из учебника и получил правильные результаты. Сначала убедитесь, что вы можете воспроизвести мои результаты, а затем начните писать свой собственный код.   -  person Nikolay Shmyrev    schedule 04.03.2014
comment
Спасибо Николай. как я могу установить акустическую модель в общую модель en-us? Я попытался загрузить папку с веб-сайта, а затем скопировать папку en-us в bld. но это не сработало   -  person Evanescence    schedule 04.03.2014


Ответы (1)


Заменять

System.out.println(recognizer.getResult().getHypothesis());

с участием

System.out.println(result.getHypothesis());
person user2779544    schedule 06.03.2014