我正在尝试使用名为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 http://lium3.univ-lemans.fr/diarization/doku.php/download
用里面的内容创建一个.bat文件:
java -Xmx1024m -jar ./LIUM_SpkDiarization-4.2.jar --fInputMask =。/ soundfile-16Khz-16Bits.wav --sOutputMask =。/ showName.seg --doCEClustering showName
程序应该创建一个名为showName.seg的文件,其中包含扬声器段。
但我有错误消息。我尝试了每个版本的软件都有相同的结果。
如果你想在java程序中试用软件,请在源代码中使用diarization.java中的代码
我非常感谢任何帮助。谢谢你们。
杰夫
答案 0 :(得分:3)
我发现了这个问题,它与程序中使用的错误文件分隔符有关。
当代码尝试在Windows中使用本地分隔符/
时,Java期望\
作为资源定位器中的分隔符。
如果你可以重新编译jar文件(使用ant),那么所有需要做的就是将File.separator
替换为/
文件中的src\fr\lium\spkDiarization\system\Diarization.java
;这对我有用。
第192,229,245,265和471行需要进行这种简单的更改,例如第245行:
URL genderURL = getClass().getResource(dir + File.separator + "gender.gmms");
应该是:
URL genderURL = getClass().getResource(dir + "/" + "gender.gmms");
答案 1 :(得分:0)
使用网站上提供的jar,它可以正常工作并产生结果。
错误是它试图在jar中找到一个数据文件并且没有这样做(文件是ester2 / gender.sms)。
可能是你重新编译了jar或者从源代码构建它并且新更新的jar没有该文件
另一种可能性是你可能会使用其他一些JVM(而不是Oracle)来查找jar中的资源。
作为解决问题的最后一种方法,您可以将数据文件解压缩到文件夹并修复源文件以从文件夹中读取它们,而不是从jar中读取它们。
答案 2 :(得分:0)
在Windows系统中加载gender.sms的问题。我有同样的问题。在linux下它运行成功。在我的Windows 7上它崩溃了。根据项目网站,他们知道问题:
警告:在Windows下有一个问题尚未解决。负荷 资源(如gmm)不起作用。