2017-04-25 79 views
1

我目前正在嘗試獲取使用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

期限以毫秒爲單位,而不是在框架的,所以你需要1000分,而不是100 –

+0

唉 - 我怎麼可能沒有意識到這...感謝尼古拉 – Elijah

回答

1

由於Nikolay Shmyrev提到here,事實證明TimeFrame以毫秒爲單位。之前我曾嘗試過這種方法,但是由於有太多的結果我被拋棄了,並認爲它不正確(這是因爲模型需要調整,我相信)。

改正的代碼是:

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