我正在寻找一种方式(在java中,c#..)来获取人们在视频文件中说话的时间(即使在电影中)。 我不需要知道准确的单词,只需要知道时间。
输出示例:
<00> 00:03 - 01:03(有人说了一会儿),
03:00 - 06:12(有人再次发言),
。
。
。
我找到了Sphinx(用java编写):http://cmusphinx.sourceforge.net/ 但无法正确识别它。
有什么想法吗? 感谢。
编辑: 这就是我在sphinx(非常基本)中尝试过的:
StreamSpeechRecognizer recognizer = new StreamSpeechRecognizer(configuration);
recognizer.startRecognition(somefile);
SpeechResult result;
while ((result = recognizer.getResult()) != null) {
System.out.println(result);
}
recognizer.stopRecognition();
只有3个结果(应该分配更多)。
EDIT2: 好吧,我在电脑上的一首歌中尝试了这个: https://www.assembla.com/code/sonido/subversion/nodes/12/sphinx4/src/sphinx4/edu/cmu/sphinx/tools/endpoint/Segmenter.java
这是输出:
DataStartSignal: creation time: 1399716763914
SpeechStartSignal
DoubleData: 44100Hz, first sample #: 8820, collect time: 200
DoubleData: 44100Hz, first sample #: 9261, collect time: 210
.....
DoubleData: 44100Hz, first sample #: 1745037, collect time: 39570
SpeechEndSignal
SpeechStartSignal
DoubleData: 44100Hz, first sample #: 1894536, collect time: 42960
......
两个问题: 我的目标是能够在电影上做到这一点。它适用于音频文件(.wav) 我不确定它是否运作良好。正如你所看到的,输出结果显示语音在200毫秒后开始,实际上它至少在3秒后开始(歌曲是'Bee Gees - 你的爱有多深')。
答案 0 :(得分:0)
我找到了Sphinx(用java编写):http://cmusphinx.sourceforge.net/但是无法正确识别它。
就像你说的那样,你不需要认识。要在Java中只检测语音活动,请参阅segmenter类edu.cmu.sphinx.tools.endpoint.Segmenter