當我嘗試運行該程序時,它將引發此錯誤:未將對象引用設置爲對象的實例。代碼有問題嗎?幫幫我!如果沒有找到匹配System.NullReferenceException - 未將對象引用設置爲對象的實例
private void InitSpeechRecognition()
{
_audioSource = new KinectAudioSource
{
FeatureMode = true,
AutomaticGainControl = false,
SystemMode = SystemMode.OptibeamArrayOnly
};
var ri =
SpeechRecognitionEngine.InstalledRecognizers().
Where(r => r.Id == RecognizerId).FirstOrDefault();
_engine = new SpeechRecognitionEngine(ri.Id);
var gb = new GrammarBuilder { Culture = new CultureInfo("en-US") };
gb.Append(CommandMessage.Choices);
var g = new Grammar(gb);
_engine.LoadGrammar(g);
_engine.SpeechRecognized += SreSpeechRecognized;
_audioStream = _audioSource.Start();
_engine.SetInputToAudioStream(_audioStream,
new SpeechAudioFormatInfo(
EncodingFormat.Pcm, 16000, 16, 1,
32000, 2, null));
_engine.RecognizeAsync(RecognizeMode.Multiple);
}
private void SreSpeechRecognized(object sender, SpeechRecognizedEventArgs e)
{
if (CommandMessage.Commands.ContainsKey(e.Result.Text))
{
Application.Current.Dispatcher.Invoke(DispatcherPriority.Normal,
new Action(() =>
Messenger.Default.Send(
new CommandMessage { Command = CommandMessage.Commands[e.Result.Text] })));
}
}
u能在異常 – Tilak
哪條線的點提供堆棧跟蹤?其中許多可能會導致NullReferenceException!例如,** ri **可以爲null(因爲FirstOrDefault)。 –
_engine = new SpeechRecognitionEngine(ri.Id); (對不起,是這一行!) – Jess