使用口袋Sphinix进行语音识别的准确性很差

时间:2013-04-23 06:52:18

标签: java android speech-recognition speech-to-text cmusphinx

我从http://ucla.jamesyxu.com/?p=118.But运行了袖珍代表演示示例,我发现单词识别的准确性很差。我从pocketsphinix8.0复制声学模型... \ pocketsphinx \ model \ hmm和.. \ lm文件夹到手机的SD卡。它识别有限的几个单词而不是句子。 我的问题是关注

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;
        }

1 个答案:

答案 0 :(得分:1)

1)。差劲你得到什么样的准确度?首先是你看到的单词错误百分比,其次,你能给我们一些你说的单词和给出的输出吗?正如Praful所说,声音文件记录非常有用。

此外,您是否尝试过运行默认应用程序并查看是否与其说话会产生类似的错误结果?

2)。您可以按照以下方式构建自己的字典:http://ucla.jamesyxu.com/?p=121

我也有一些使用该库的注释(我们使用它进行了几项研究,每项约20个科目):

  • 根据经验,默认字典和库可以很好地识别单词和句子。在美国口音中,我们通常会注意到“我在楼上走路”这样的简单句子不会产生任何错误,而更复杂的句子可能会产生一些错误。
  • 您通常不能期望名称或缩写正确
  • 如果您的应用程序只查找某些短语,那么我建议仅根据这些短语构建字典和模型。这是因为您在其中一个短语中被迫分配的短语越少,因此用例的准确性就越高。
  • 对于涉及许多关键词的长句,请考虑针对您期望的句子进行距离计算并选择最接近的句子。
  • 口音很重要

我收到了通知,因为Google提醒我您的链接与我的域名相匹配

相关问题