Java Sphinx4 5alpha识别器.getResult()空点异常

Java Sphinx4 5alpha识别器.getResult()空点异常,java,cmusphinx,sphinx4,pocketsphinx,Java,Cmusphinx,Sphinx4,Pocketsphinx,我建立了新的语言模型、声学模型和字典。当我试图识别wav文件语音时,我得到了 位于edu.cmu.sphinx.result.Lattice.getNodeID的线程“main”java.lang.NullPointerException中出现异常 这是我的密码 try { Configuration configuration = new Configuration(); configuration.setAcousticModelPath("resource:/edu/cm

我建立了新的语言模型、声学模型和字典。当我试图识别wav文件语音时,我得到了

位于edu.cmu.sphinx.result.Lattice.getNodeID的线程“main”java.lang.NullPointerException中出现异常

这是我的密码

try {
    Configuration configuration = new Configuration();

    configuration.setAcousticModelPath("resource:/edu/cmu/sphinx/models/en-us/en-us");
    configuration.setDictionaryPath("resource:/edu/cmu/sphinx/models/en-us/cmudict-en-us.dict");
    configuration.setLanguageModelPath("resource:/edu/cmu/sphinx/models/en-us/an4.lm");
    configuration.setSampleRate(16000);
    StreamSpeechRecognizer recognizer = new StreamSpeechRecognizer(configuration);
    InputStream stream = new FileInputStream(new File("E:\\Level4\\finalpjt\\mytesting\\Audiorecording\\Sachini_New\\1-39\\SentNum_13.wav"));

    recognizer.startRecognition(stream);


    startRecognition(false).
    while (true) {
        System.out.println("=============" + recognizer.getResult());
        SpeechResult result = recognizer.getResult();
        if (result != null) {
            System.out.println(result.getHypothesis());
        }
    }

} catch (IOException ex) {

    Logger.getLogger(SpeechTest.class.getName()).log(Level.SEVERE, null, ex);
    System.out.println(ex);
}
我的控制台显示

23:44:14.069 INFO unitManager          CI Unit: th
23:44:14.069 INFO unitManager          CI Unit: u
23:44:14.069 INFO unitManager          CI Unit: uu
23:44:14.070 INFO unitManager          CI Unit: v
23:44:14.070 INFO unitManager          CI Unit: y
23:44:14.074 INFO autoCepstrum         Cepstrum component auto-configured as follows: autoCepstrum {MelFrequencyFilterBank, Denoise, DiscreteCosineTransform2, Lifter}
23:44:14.084 INFO dictionary           Loading dictionary from: jar:file:/C:/Users/Suranga/Downloads/sphinx4-data-5prealpha-20151205.160456-3-sources.jar!/edu/cmu/sphinx/models/en-us/cmudict-en-us.dict
23:44:14.092 INFO dictionary           Loading filler dictionary from: jar:file:/C:/Users/Suranga/Downloads/sphinx4-data-5prealpha-20151205.160456-3-sources.jar!/edu/cmu/sphinx/models/en-us/en-us/noisedict
23:44:14.093 INFO acousticModelLoader  Loading tied-state acoustic model from: jar:file:/C:/Users/Suranga/Downloads/sphinx4-data-5prealpha-20151205.160456-3-sources.jar!/edu/cmu/sphinx/models/en-us/en-us
23:44:14.093 INFO acousticModelLoader  Pool means Entries: 126
23:44:14.093 INFO acousticModelLoader  Pool variances Entries: 126
23:44:14.093 INFO acousticModelLoader  Pool transition_matrices Entries: 42
23:44:14.093 INFO acousticModelLoader  Pool senones Entries: 126
23:44:14.093 INFO acousticModelLoader  Gaussian weights: mixture_weights. Entries: 126
23:44:14.093 INFO acousticModelLoader  Pool senones Entries: 126
23:44:14.094 INFO acousticModelLoader  Context Independent Unit Entries: 42
23:44:14.094 INFO acousticModelLoader  HMM Manager: 42 hmms
23:44:14.094 INFO acousticModel        CompositeSenoneSequences: 0
23:44:14.520 INFO lexTreeLinguist      Max CI Units 43
23:44:14.520 INFO lexTreeLinguist      Unit table size 79507
23:44:14.523 INFO speedTracker         # ----------------------------- Timers----------------------------------------
23:44:14.523 INFO speedTracker         # Name               Count   CurTime   MinTime   MaxTime   AvgTime   TotTime   
23:44:14.524 INFO speedTracker         Load Dictionary      1       0.0100s   0.0100s   0.0100s   0.0100s   0.0100s   
23:44:14.525 INFO speedTracker         Compile              1       0.3580s   0.3580s   0.3580s   0.3580s   0.3580s   
23:44:14.525 INFO speedTracker         Load AM              1       0.0270s   0.0270s   0.0270s   0.0270s   0.0270s   


=============null
23:44:14.665 INFO liveCMN              32.76 20.66 12.53 -1.97 8.54 -9.36 7.33 4.56 1.57 -4.28 -1.49 -5.17 -4.31 


=============null
23:44:14.707 INFO liveCMN              32.86 20.80 12.57 -2.03 8.65 -9.69 7.31 4.69 1.67 -4.50 -1.42 -5.07 -4.33 

=============null
23:44:14.725 INFO speedTracker            This  Time Audio: 3.41s  Proc: 0.11s  Speed: 0.03 X real time
23:44:14.726 INFO speedTracker            Total Time Audio: 3.41s  Proc: 0.11s 0.03 X real time
23:44:14.726 INFO memoryTracker           Mem  Total: 200.50 Mb  Free: 154.22 Mb
23:44:14.726 INFO memoryTracker           Used: This: 46.28 Mb  Avg: 46.28 Mb  Max: 46.28 Mb



=============null
23:44:14.754 INFO liveCMN              34.64 22.84 11.95 -3.18 14.37 -9.93 9.45 7.52 6.26 -7.74 -1.53 -6.11 -5.65 



=============null
23:44:14.779 INFO speedTracker            This  Time Audio: 0.99s  Proc: 0.04s  Speed: 0.04 X real time
23:44:14.780 INFO speedTracker            Total Time Audio: 4.40s  Proc: 0.15s 0.03 X real time
23:44:14.781 INFO memoryTracker           Mem  Total: 200.50 Mb  Free: 129.66 Mb
23:44:14.782 INFO memoryTracker           Used: This: 70.84 Mb  Avg: 58.56 Mb  Max: 70.84 Mb
Exception in thread "main" java.lang.NullPointerException
    at edu.cmu.sphinx.result.Lattice.getNodeID(Lattice.java:330)
    at edu.cmu.sphinx.result.Lattice.<init>(Lattice.java:171)
    at edu.cmu.sphinx.api.SpeechResult.<init>(SpeechResult.java:38)
    at edu.cmu.sphinx.api.AbstractSpeechRecognizer.getResult(AbstractSpeechRecognizer.java:61)
    at etypes.SpeechTest.main(SpeechTest.java:42)
Java Result: 1
BUILD SUCCESSFUL (total time: 1 second)
23:44:14.069信息单元管理器CI单元:th
23:44:14.069信息单位经理CI单位:u
23:44:14.069信息单位经理CI单位:uu
23:44:14.070信息单位经理CI单位:v
23:44:14.070信息单位经理CI单位:y
23:44:14.074信息自动倒谱倒谱分量自动配置如下:自动倒谱{MelFrequencyFilterBank,去噪,离散余弦变换M2,挺杆}
23:44:14.084信息字典加载字典来自:jar:file:/C:/Users/Suranga/Downloads/sphinx4-data-5prealpha-20151205.160456-3-sources.jar/edu/cmu/sphinx/models/en-us/cmudict-en-us.dict
23:44:14.092信息字典加载填充字典来自:jar:file:/C:/Users/Suranga/Downloads/sphinx4-data-5prealpha-20151205.160456-3-sources.jar/edu/cmu/sphinx/models/en-us/en-us/noisedict
23:44:14.093信息声学模型加载绑定状态声学模型来自:jar:file:/C:/Users/Suranga/Downloads/sphinx4-data-5prealpha-20151205.160456-3-sources.jar/edu/cmu/sphinx/models/en-us/en-us
23:44:14.093信息声学模型加载程序池表示条目:126
23:44:14.093信息声学模型加载程序池差异条目:126
23:44:14.093信息声学模型加载程序池转换矩阵条目:42
23:44:14.093信息声学模型加载程序池senones条目:126
23:44:14.093信息声学模型加载高斯权重:混合权重。参赛作品:126
23:44:14.093信息声学模型加载程序池senones条目:126
23:44:14.094信息声学模型阅读器上下文独立单元条目:42
23:44:14.094信息声学模型阅读器HMM管理器:42 hmms
23:44:14.094信息声学模型合成非序列:0
23:44:14.520信息lextreelineguist最大CI单位43
23:44:14.520信息lexTreeLinguist单位表尺寸79507
23:44:14.523信息速度跟踪器-------------------------------------计时器----------------------------------------
23:44:14.523信息速度跟踪器#姓名计数CurTime MinTime MaxTime AvgTime TotTime
23:44:14.524信息速度跟踪器加载字典1 0.0100s 0.0100s 0.0100s 0.0100s 0.0100s 0.0100s
23:44:14.525信息speedTracker编译1 0.3580s 0.3580s 0.3580s 0.3580s 0.3580s 0.3580s
23:44:14.525信息速度跟踪器负载AM 1 0.0270s 0.0270s 0.0270s 0.0270s 0.0270s 0.0270s
================null
23:44:14.665 INFO liveCMN 32.7620.6612.53-1.978.54-9.367.334.561.57-4.28-1.49-5.17-4.31
================null
23:44:14.707 INFO liveCMN 32.86 20.80 12.57-2.03 8.65-9.69 7.31 4.69 1.67-4.50-1.42-5.07-4.33
================null
23:44:14.725信息速度跟踪器这次音频:3.41s进程:0.11s速度:0.03 X实时
23:44:14.726信息速度跟踪器总时间音频:3.41s进程:0.11s 0.03 X实时
23:44:14.726信息存储器Tracker Mem总计:200.50 Mb免费:154.22 Mb
23:44:14.726使用的信息内存跟踪程序:此:46.28 Mb平均值:46.28 Mb最大值:46.28 Mb
================null
23:44:14.754 INFO liveCMN 34.64 22.84 11.95-3.18 14.37-9.93 9.45 7.52 6.26-7.74-1.53-6.11-5.65
================null
23:44:14.779信息速度跟踪器这次音频:0.99s进程:0.04s速度:0.04 X实时
23:44:14.780信息速度跟踪器总时间音频:4.40s进程:0.15s 0.03 X实时
23:44:14.781信息存储器Tracker Mem总计:200.50 Mb免费:129.66 Mb
23:44:14.782使用的信息内存跟踪程序:此:70.84 Mb平均值:58.56 Mb最大值:70.84 Mb
线程“main”java.lang.NullPointerException中出现异常
位于edu.cmu.sphinx.result.Lattice.getNodeID(Lattice.java:330)
位于edu.cmu.sphinx.result.Lattice.(Lattice.java:171)
位于edu.cmu.sphinx.api.SpeechResult.(SpeechResult.java:38)
位于edu.cmu.sphinx.api.AbstractSpeechRecognizer.getResult(AbstractSpeechRecognizer.java:61)
位于etypes.SpeechTest.main(SpeechTest.java:42)
Java结果:1
生成成功(总时间:1秒)

(由于空间冗余,我删除了100多行”=========================null)

您的主循环不正确。如果查看,您将看到
AbstractSpeechRecognizer#getResult()
是一个状态更改调用,因此无法对其进行两次方法来获取相同的对象。相反,您案例中的有效循环是:

SpeechResult result;
while ((result = recognizer.getResult() != null) {
  // do something with result
}

你错误地训练了你的声学模型。您通过立体声进行训练,训练的音频必须是单声道。

抱歉,我将此“while(true)”循环用于检查结果。我的问题是'recognizer.getResult()'为空。没有将任何结果作为输出。您使用的sphinx4版本似乎也过时了。在最新版本中,
an4.lm
不存在,取而代之的是
en us.lm.bin
。我使用我自己创建的语言模型、声学模型和字典。lm是我用来简单编译的名字。现在我将其转换为二进制格式,并且没有错误或警告,但recognizer.getResult()为null。可能是因为你的音频无法识别。你能和我分享吗?谢谢你帮助我,亚历山大。这里是我的声学模型(ect文件夹包含dic和语言模型)的链接,我尝试了单声道音频,它也给了我同样的结果。