ホームオートメーションプロジェクトの一部として、ロックされたWindowsコンピュータで実行する必要がある音声認識プログラムを作成しようとしています。しかし、SpeechRecognitionEngineは、コンピュータがロックされているときに認識を停止しているように見えます(コンピュータがロックされていない状態でも継続します)。コンピュータがロックされているときにSpeechRecognitionEngineが認識を停止する
私の現在のテストプログラムは次のようになります。
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 Microsoft.Speech.Recognition;
using System.Globalization;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
SpeechRecognitionEngine sre;
public Form1()
{
InitializeComponent();
CultureInfo ci = new CultureInfo("en-us");
sre = new SpeechRecognitionEngine(ci);
sre.SetInputToDefaultAudioDevice();
GrammarBuilder gb = new GrammarBuilder("Hello");
sre.LoadGrammarAsync(new Grammar(gb));
sre.SpeechRecognized += sre_SpeechRecognized;
sre.RecognizeAsync(RecognizeMode.Multiple);
}
void sre_SpeechRecognized(object sender, SpeechRecognizedEventArgs e)
{
listBox1.Items.Add(DateTime.Now.ToString() + " " + e.Result.Text);
}
}
}
それはマイクのライブオーディオストリームにSpeechRecognitionEngine(おそらくSetInputToAudioStream
またはSetInputToWaveStream
メソッドを使用して)の入力を変更することができます場合、私は思ったんだけどその方法で問題を回避してください。コンピューターが(SoundRecorderで試したときに)マイクがオフになっていないようです。
残念ながら、私はマイク入力のライブストリームを取得する方法を見つけることができませんでした。
私はコンピュータが問題なくロックされながら記録するために、サウンドレコーダーを使用して試してみました。また、マイクをスピーカーにループするためにNAudioを使用する小さなプログラムを作成しました。これはコンピュータがロックされた状態でも機能します。残念ながら、NAudioにSpeechRecognitionEngineで使用できるストリームを提供する方法を見つけることができませんでした。だから、コンピュータがロックされているときにマイクが利用できるようです。そして、サービスの利用に関して、システムサービスはマイクとスピーカーにアクセスできないようです。 –