2

http://ucla.jamesyxu.com/?p=118から pocketphinix のデモ例を実行しました。しかし、単語の認識精度が非常に低いことがわかりました。ポケットフィニクス 8.0 から音響モデルをコピーしました ...\pocketsphinx\ model\hmm と ..\lm フォルダーを電話の SD カードにコピーします。文章ではなく、限られた少数の単語を認識します。私の質問は次のとおりです

1) どうすれば精度を向上させることができますか?

2) 音響モデルと辞書 (hmm と lm フォルダー内) を変更する必要がありますか? はいの場合、モデルと辞書を変更するにはどうすればよいですか? モデルと辞書を追加するために従う必要がある他の手順はありますか? また、次のリンクから辞書を変更します(US English HUB4 Language Model-辞書ファイルをlmフォルダーにコピーするだけで、hmmフォルダーでは変更されません)

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

3) 録音した音声の代わりに音声ファイルを入力するにはどうすればよいですか?

また、音声ファイルを入力として変換しようとしました。次のように音声ファイルを読み込んでいます (ここでは、sphinix4 lib transcribe demo file "10001-90210-01803.wav" で使用される .wav ファイルは、正確さのために数字を発音しますが、1 つの単語を認識できず、それを正しくないテキストに変換します)。

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

1 に答える 1

1

1)。貧弱で、どのような精度が得られますか? 最初に何パーセントの単語エラーが見られますか?次に、あなたが言った単語の例と出力を教えてください。Praful が言ったように、音声ファイルのトランスクリプトは非常に便利です。

また、デフォルトのアプリケーションを実行しようとして、それに話しかけると同様に悪い結果が生じるかどうかを確認しましたか?

2)。これに従って独自の辞書を作成できます: http://ucla.jamesyxu.com/?p=121

また、ライブラリを使用した際のメモもいくつかあります (ライブラリを使用していくつかの研究を行い、それぞれ約 20 の被験者を対象としました)。

  • 経験上、デフォルトの辞書とライブラリは単語と文の認識に問題ありません。一般的に、アメリカ訛りの場合、「私は上を歩いています」などの単純な文ではエラーが発生しないはずですが、より複雑な文ではいくつかの単語エラーが発生する可能性があります。
  • 通常、名前や略語が正しいとは期待できません
  • アプリケーションが特定のフレーズのみを検索する場合は、それらのフレーズのみに基づいて辞書とモデルを構築することをお勧めします。これは、分類子がフレーズの 1 つを決定する必要があるフレーズが少ないほど、ユース ケースの精度が高くなるためです。
  • 多くのキーワードを含む長い文の場合は、予想される文に対して距離計算を行い、最も近い文を選択することを検討してください。
  • アクセントが大事

あなたのリンクが私のドメイン名と一致したことをGoogleが思い出したので、私は通知を受け取りました

于 2013-04-23T19:10:46.193 に答える