1

私は非常に基本的なチュートリアル(リンクを忘れた)に従いました、そしてそれはすべて簡単に思えます、しかし私は私が望む出力を得ていないようです。これが私のメインフォームクラスです:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Speech.Recognition;

namespace OralNotes.Alpha
{
public partial class MainForm : Form
{
    private SpeechRecognitionEngine recognitionEngine;

    public MainForm()
    {
        InitializeComponent();

        recognitionEngine = new SpeechRecognitionEngine();
        recognitionEngine.SetInputToDefaultAudioDevice();
        recognitionEngine.SpeechRecognized += (s, args) =>
          {
              foreach (RecognizedWordUnit word in args.Result.Words)
              {
                  if (word.Confidence > 0.8f)
                      txtNotes.Text += word.Text + " ";

              }
              txtNotes.Text += Environment.NewLine;
          };
        recognitionEngine.LoadGrammar(new DictationGrammar());
    }

    private void btnStart_Click(object sender, EventArgs e)
    {
        recognitionEngine.RecognizeAsync();
    }

    private void btnStop_Click(object sender, EventArgs e)
    {
        recognitionEngine.RecognizeAsyncStop();
    }
}
}

そして、おそらくこれは必要ありませんが、とにかくここにあります:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;

namespace OralNotes.Alpha
{
static class Program
{
    /// <summary>
    /// The main entry point for the application.
    /// </summary>
    [STAThread]
    static void Main()
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        Application.Run(new MainForm());
    }
}
}

[開始]をクリックして話しますが、何も起こりません。

更新*

この行を調整すると、これは機能します

if (word.Confidence > 0.8f)

少ない数字に1、2語入ります。文章などを書き写さないで、これをよりよく認識させる方法はありますか?

4

1 に答える 1

1

あなたが使用しているエンジンは、聞こえるすべての単語に対して信頼値を返しているようです。

信頼値の範囲は 0 ~ 1 であると思われます。これは、値を 0.8 から下げると、エンジンが単語に対してより寛容になることを意味します。多分それはあなたのマイクの品質ですか?

于 2012-12-07T01:07:18.230 に答える