私はMicrosoftの最新の音声認識(およびSpeechSynthesis)製品が本当に好きです。
http://msdn.microsoft.com/en-us/library/ms554855.aspx
http://estellasays.blogspot.com/2009/04/speech-recognition-in-cnet.html
ただ、文法を使うと少し制限がある気がします。
誤解しないでください。文法は、音声認識に注意すべき単語やフレーズを正確に伝えるのに最適ですが、注意を払っていないものを認識させたい場合はどうすればよいでしょうか。または、半分が事前に決定されたコマンド名と半分がランダムな単語であるフレーズを解析したいですか?
例えば..
シナリオA-「Google[OilSpill]」と言い、括弧内の用語の検索結果を使用してGoogleを開きたいと思います。
シナリオB -「[マンチェスター]を検索」と言い、Googleマップまたはその他の事前に決定されていないものでマンチェスターを検索したい
「Google」と「Locate」はコマンドであり、その後に続くのはパラメーター(そして何でもかまいません)であることを知ってもらいたいです。
質問:事前に決定された文法(音声認識が認識すべき単語)と、事前に決定された文法に含まれていない単語の使用を組み合わせる方法を知っている人はいますか?
コードフラグメント。
using System.Speech.Recognition;
...
...
SpeechRecognizer rec = new SpeechRecognizer();
rec.SpeechRecognized += rec_SpeechRecognized;
var c = new Choices();
c.Add("search");
var gb = new GrammarBuilder(c);
var g = new Grammar(gb);
rec.LoadGrammar(g);
rec.Enabled = true;
...
...
void rec_SpeechRecognized(object sender, SpeechRecognizedEventArgs e)
{
if (e.Result.Text == "search")
{
string query = "How can I get a word not defined in Grammar recognised and passed into here!";
launchGoogle(query);
}
}
...
...
private void launchGoogle(string term)
{
Process.Start("IEXPLORE", "google.com?q=" + term);
}