获取视频文件中的讲话时间(代码)

本文关键字:时间 代码 视频 文件 获取 | 更新日期: 2023-09-27 18:02:40

我正在寻找一种方法(在java, c#…)来获得人们在视频文件(甚至在电影中)说话的时间。我不需要知道准确的单词,只需要知道时间。

输出示例:

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
......

两个问题:1. 我的目标是能够在电影中做到这一点。它适用于音频文件(.wav)2. 我不确定它是否有效。正如你所看到的,输出显示演讲在200毫秒后开始,而实际上它至少在3秒后开始(这首歌是"Bee Gees - How Deep is Your Love")。

获取视频文件中的讲话时间(代码)

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

就像你说的,你不需要识别。要在Java中获得语音活动检测,请参阅分段器类edu.cmu.sphinx.tools.endpoint.Segmenter