在视频文件中获取语音时间(代码中)

时间:2014-05-09 17:17:36

标签: c# java speech-recognition

我正在寻找一种方式(在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 - 你的爱有多深')。

1 个答案:

答案 0 :(得分:0)

  

我找到了Sphinx(用java编写):http://cmusphinx.sourceforge.net/但是无法正确识别它。

就像你说的那样,你不需要认识。要在Java中只检测语音活动,请参阅segmenter类edu.cmu.sphinx.tools.endpoint.Segmenter