Java Lium扬声器二值化(识别软件)空指针问题

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)

我试图在命令行中使用名为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)

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

程序应创建一个名为showName.seg的文件,其中包含扬声器段

但是我有错误信息。我尝试了软件的每一个版本,结果都是一样的

如果您想在java程序中试用该软件,请在源代码中使用diarization.java中的代码

我非常感谢你的帮助。非常感谢


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");