我目前正在尝试获取使用CMU Sphinx检测到的单词的时间戳。
while ((result = recognizer.getResult()) != null) {
for(WordResult w : result.getWords()){
if(w.getWord() != Word.UNKNOWN){
System.out.println(w.getTimeFrame().getStart());
System.out.println(w.getWord() + " " + (w.getTimeFrame().getStart()/100)/60 + ":" + (w.getTimeFrame().getStart()/100 % 60));
}
}
}
我目前拥有的代码。我认为这是因为样本/帧速率不是每秒100次,如上面的逻辑所述。
上面的代码显然不准确,因为整个文件只有8分钟长,而帧到时间计算器输出的时间戳超过一小时?
有没有办法从WordResult
获取时间戳或找到Sphinx正在使用的样本/帧速率?
我在网上浏览过,无法在TimeFrame类上找到任何文档。
答案 0 :(得分:2)
正如Nikolay Shmyrev提到here,结果表明TimeFrame是以毫秒为单位。我之前尝试过这个,但是因为有太多结果我被抛弃并认为它不正确(这只是因为模型需要调整,我相信)。
更正后的代码为:
System.out.println(w.getWord() + " " + (w.getTimeFrame().getStart()/1000)/60 + ":" + (w.getTimeFrame().getStart()/1000 % 60));