2013-04-23 61 views
2

我從http://ucla.jamesyxu.com/?p=118.But運行pocketsphinix演示示例,我發現識別單詞的準確性非常差。我從pocketsphinix8.0複製聲學模型... \ pocketsphinx \ model \ hmm和.. \ lm文件夾到手機的SD卡。它識別有限的幾個字而不是句子。 我的問題如下使用口袋Sphinix語音識別的準確性很差

1)如何提高準確度?

2)是否需要更改聲學模型和字典(在hmm和lm文件夾中)如果是,我如何更改模型和字典。是否有任何其他過程需要添加模型和字典。 我也改變字典從以下鏈接(美國英語語言的huB4只是模型 - 在複製文件夾LM字典文件夾HMM不改變)

http://sourceforge.net/projects/cmusphinx/files/Acoustic%20and%20Language%20Models/

3)我怎麼可以給音頻文件作爲輸入,而不是記錄的聲音?

此外,我試圖將音頻文件轉換爲輸入。我正在讀取音頻文件如下(這裏,在sphinix4 lib中使用.wav文件轉錄演示文件「10001-90210-01803.wav」發音數字的準確性,但無法識別單個單詞並將其轉換爲不正確的文本)。

 int readAudioFile(){   
     this.done=true; 
     AssetManager mngr = context.getAssets();    
     InputStream io = null; 
     int current = 0; 
     try { 

      io= mngr.open("10001-90210-01803.wav"); 


    //Create a DataInputStream to read the audio data from the saved file 
      DataInputStream   dis = new DataInputStream(io); 
      int noOfByteToRead=io.available(); 
      int noOfShortToRead=noOfByteToRead/2; 
      short[] music = new short[noOfShortToRead]; 
      int i = 0;               // Read the file into the "music" array 
      try { 
       while (dis.available() > 0) 
       { 
        music[i] = dis.readShort();      

        i++; 
       } 
      } catch (IOException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 
      Log.i("123",""+Arrays.toString(music)); 
      this.q.add(music); 
      try { 
       dis.close(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      }   

     } catch (IOException e) {   
      e.printStackTrace(); 
     } catch (Exception e1) { 
      e1.printStackTrace(); 
     }    


     return current; 
     } 
+0

請張貼的例子爲聲音文件抄本(手動完成)和你的輸出從lib中獲取... – 2013-04-23 06:56:06

+0

@Praful只需改變AudioTask類的run方法並調用readAudioFile()並在readAudioFile()讀取完所有文件後加入隊列this.q.add(music)並作爲輸出,大多會得到不同的單詞。 – divim 2013-04-23 07:20:33

回答

1

1)。窮人得到什麼樣的準確性?首先你看到了多少百分比的單詞錯誤,其次,你能給我們說一些你說的單詞和給出的輸出嗎?正如Praful所說,一個完善的文件轉錄將是非常有用的。

另外,你有沒有試過運行默認的應用程序,看看它說話是否會產生類似的糟糕結果? 2)。您可以通過以下這個建立你自己的字典:http://ucla.jamesyxu.com/?p=121

我也有使用的庫(我們用它進行一些研究,〜每20個科目)的幾個注意事項:

  • 從以往的經驗默認字典圖書館在識別單詞和句子方面做得很好。有了美國口音,我們通常會觀察到,「我上樓走路」這樣簡單的句子應該不會產生錯誤,而更復雜的句子可能會產生幾個字錯誤。
  • 你一般不能指望名稱或縮寫是正確的
  • 如果您的應用程序只想找某些短語,那麼我建議建立僅基於這些短語字典和模型。這是因爲您所使用的分類器中的短語越少越好,因此您的用例的準確度更高。
  • 對於涉及多個關鍵字的長句子,請考慮對您期望的句子進行距離計算並選擇最接近的句子。
  • 口音是非常重要的

我收到了通知,因爲谷歌提醒我說,你的鏈接匹配我的域名

+1

偉大的建議。要添加一個小東西,特別是Android情況下,取消註釋「rawlogdir」配置以收集您嘗試識別的音頻是很有幫助的。這種原始音頻對分析精度問題至關重要。如果有人要求準確性,最好共享以這種方式收集的原始文件。 – 2013-04-23 19:22:58