【问题标题】:How to get the timestamp of when a word was said using Sphinx如何获取使用 Sphinx 说出单词的时间戳
【发布时间】:2017-09-22 07:31:13
【问题描述】:

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

【问题讨论】:

  • 时间帧是毫秒,不是帧,所以你需要除以1000,而不是100。
  • 呃 - 我怎么可能没有意识到这一点......谢谢尼古拉

标签: speech-recognition cmusphinx sphinx4


【解决方案1】:

正如 Nikolay Shmyrev 提到的 here,事实证明 TimeFrame 以毫秒为单位。我之前尝试过,但是由于结果太多,我被甩了,认为它不正确(我相信这只是因为模型需要调整)。

更正后的代码是:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-26
    • 1970-01-01
    • 2017-12-06
    • 2022-09-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多