我正在开发一个使用语音识别的WPF应用程序。在说出语法词时,事件不会激活。其次,我不确定发动机是否启动。怎么检查?以下是代码。
namespace Summerproject_trial
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
private SpeechRecognitionEngine recEngine =
new SpeechRecognitionEngine();
public MainWindow()
{
InitializeComponent();
Choices mychoices = new Choices();
mychoices.Add(new string[] {"Ok", "Test", "Hello"});
GrammarBuilder gb = new GrammarBuilder();
gb.Append(mychoices);
Grammar mygrammar = new Grammar(gb);
recEngine.LoadGrammarAsync(mygrammar);
recEngine.SpeechRecognized +=
new EventHandler<SpeechRecognizedEventArgs>
(recEngine_SpeechRecognized);
recEngine.SetInputToDefaultAudioDevice();
}
void recEngine_SpeechRecognized(object sender,
SpeechRecognizedEventArgs e)
{
MessageBox.Show("You said: " + e.Result.Text);
}
}
}
答案 0 :(得分:1)
你忘了开始听取输入。
在构造函数的末尾尝试这个。
recEngine.RecognizeAsync(RecognizeMode.Multiple);
答案 1 :(得分:0)
@ Anri需要回答,但 还需要使用CultureInfo创建SpeechRecognitionEngine。 (您可以在没有CultureInfo的情况下创建SpeechRecognitionEngine,但是您需要明确设置识别器语言。)
此外:移动耳机(我认为你的意思是某种蓝牙耳机)通常不适用于System.Speech。桌面SR引擎中使用的SR引擎需要比蓝牙更高质量的音频输入。
所以,应该有效的完整代码:
private SpeechRecognitionEngine recEngine =
new SpeechRecognitionEngine("en-US");
public MainWindow()
{
InitializeComponent();
Choices mychoices = new Choices();
mychoices.Add(new string[] {"Ok", "Test", "Hello"});
GrammarBuilder gb = new GrammarBuilder();
gb.Append(mychoices);
Grammar mygrammar = new Grammar(gb);
recEngine.LoadGrammarAsync(mygrammar);
recEngine.SpeechRecognized +=
new EventHandler<SpeechRecognizedEventArgs>
(recEngine_SpeechRecognized);
recEngine.SetInputToDefaultAudioDevice();
recEngine.RecognizeAsync(RecognizeMode.Multiple);
}