2
我試圖創建一個語音識別程序,該程序需要在鎖定的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的流。因此,當電腦鎖定時,麥克風似乎可用。而關於使用服務,那麼系統服務似乎無法使用麥克風和揚聲器。 –