获取视频文件中的讲话时间(代码)
本文关键字:时间 代码 视频 文件 获取 | 更新日期: 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