2013-04-23 160 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