Java Lium扬声器二值化(识别软件)空指针问题
我试图在命令行中使用名为Lium的说话人日记程序,或者在java程序中使用,但运气不好 在命令行版本中,我收到一条空指针异常消息:Java Lium扬声器二值化(识别软件)空指针问题,java,speech-recognition,Java,Speech Recognition,我试图在命令行中使用名为Lium的说话人日记程序,或者在java程序中使用,但运气不好 在命令行版本中,我收到一条空指针异常消息: java.lang.NullPointerException at fr.lium.spkDiarization.lib.MainTools.readGMMContainer(MainTools.java:222) at fr.lium.spkDiarization.system.Diarization.speech(Diarization.java:193)
java.lang.NullPointerException
at fr.lium.spkDiarization.lib.MainTools.readGMMContainer(MainTools.java:222)
at fr.lium.spkDiarization.system.Diarization.speech(Diarization.java:193)
at fr.lium.spkDiarization.system.Diarization.ester2Version(Diarization?java:318)
at fr.lium.spkDiarization.system.Diarization.main(Diarization.java:530)
在java程序中,将创建输出文件,但大小为0字节
要尝试该程序,请执行以下操作:
- 从这里下载jar
- 创建一个包含以下内容的.bat文件: java-Xmx1024m-jar./LIUM_SpkDiarization-4.2.jar--fInputMask=./soundfile-16Khz-16Bits.wav--sOutputMask=./showName.seg--doCEClustering showName
Jeff使用网站上提供的jar,它可以很好地工作并产生结果 错误是它试图在jar中找到一个数据文件,但没有找到(文件是ester2/gender.sms) 可能是您重新编译了jar或从源代码构建了它,而新更新的jar没有该文件 另一种可能性是,您可能会使用其他JVM(而不是Oracle),这在查找jar中的资源方面不是很好
作为解决此问题的最后一种方法,您可以将数据文件提取到文件夹中,并修复源代码,以便从文件夹而不是从jar中读取它们。在windows系统中加载gender.sms时出现的问题。我也有同样的问题。它在linux下运行成功。在我的Windows7上,它正在崩溃。根据项目现场,他们了解问题: 警告:windows下有一个问题尚未解决。负担 资源(作为gmm)不起作用
我发现了这个问题,它与程序中使用了错误的文件分隔符有关。 Java希望
/
作为资源定位器中的分隔符,而代码尝试在Windows中使用本地分隔符\
如果可以重新编译jar文件(使用ant),那么需要做的就是在src\fr\lium\spkDiarization\system\Diarization.java
文件中将file.separator
替换为/
;这对我有用
第192行、第229行、第245行、第265行和第471行需要进行这种简单的更改,例如第245行:
URL genderURL = getClass().getResource(dir + File.separator + "gender.gmms");
应该是:
URL genderURL = getClass().getResource(dir + "/" + "gender.gmms");