しばらく前に、ソフトウェアのJoelについても同様の質問がありました。System.Speech.Recognition名前空間を使用して、これを行うことができます...いくつかの制限があります。System.Speech(GACにある必要があります)をプロジェクトに追加します。WinFormsアプリのサンプルコードは次のとおりです。
public partial class Form1 : Form
{
SpeechRecognizer rec = new SpeechRecognizer();
public Form1()
{
InitializeComponent();
rec.SpeechRecognized += rec_SpeechRecognized;
}
void rec_SpeechRecognized(object sender, SpeechRecognizedEventArgs e)
{
lblLetter.Text = e.Result.Text;
}
void Form1_Load(object sender, EventArgs e)
{
var c = new Choices();
for (var i = 0; i <= 100; i++)
c.Add(i.ToString());
var gb = new GrammarBuilder(c);
var g = new Grammar(gb);
rec.LoadGrammar(g);
rec.Enabled = true;
}
これにより、1から100までの数字が認識され、結果の数字がフォームに表示されます。lblLetterというラベルが付いたフォームが必要です。
System.Speechは、事前定義された単語またはフレーズのリストでのみ機能します。汎用性や認識品質のいずれにおいても、それは正確にNaturallySpeakingではありません。ただし、ユーザーの声に合わせてトレーニングする必要はありません。ユーザーが言うことができることがいくつかある場合は、かなりうまく機能します。そして、それは無料です!(Visual Studioを使用している場合)
非常に短いフレーズを使用すると、うまく機能しません。私は子供がアルファベットの文字を言って画面上で見るようにプログラムを作成しましたが、文字の多くが同じように聞こえるので(特に4歳の口から)、うまくいきません。
より柔軟なオプションについては...まあ、SDKを備えた前述のNaturallySpeakingがあります。しかし、それにアクセスするには営業担当者に連絡する必要があり、価格は記載されていないので、「いくらかかりますか?まあ、いくらですか?」の1つとして出くわします。ある種のもの。「ダウンロードして試してみる」オプションはないようです。:(
テキスト読み上げに関しては、System.Speech.Synthesisがこれを行います。音声認識よりもさらに簡単です。入力してEnterキーを押し、テキストを読み上げるための小さなプログラムを作成しました。私の4歳はそれに魅了されます。:)( "パパ、ダ・ウォボットにタウクしたい。")