如何获取使用Sphinx时单词的时间戳

时间:2017-04-25 10:24:21

标签: speech-recognition cmusphinx sphinx4

我目前正在尝试获取使用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类上找到任何文档。

1 个答案:

答案 0 :(得分:2)

正如Nikolay Shmyrev提到here,结果表明TimeFrame是以毫秒为单位。我之前尝试过这个,但是因为有太多结果我被抛弃并认为它不正确(这只是因为模型需要调整,我相信)。

更正后的代码为:

System.out.println(w.getWord() + " " + (w.getTimeFrame().getStart()/1000)/60 + ":" + (w.getTimeFrame().getStart()/1000 % 60));