日期:2014-05-17  浏览次数:21114 次

C#语音控制系统
本人略懂C#开发 现在想做一个 语音控制电脑的软件(比如我对麦克说:“软件指令(作为开始) 关机操作(指令内容) 结束(作为结束)” 类似这样一段指令,电脑就会关机~)
之前有在网上找过相关资料 多数的代码如下(全是雷同的资料。汗~。)
C# code
using System.Windows.Forms;
using System.Speech.Recognition;//包
using System.Speech;

namespace VoiceControl
{
    public partial class Form1 : Form
    {
        private SpeechRecognitionEngine SRE = new SpeechRecognitionEngine();

        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            SRE.SetInputToDefaultAudioDevice();
            GrammarBuilder GB = new GrammarBuilder();
            GB.Append("选择");
            GB.Append(new Choices(new string[] { "红色", "绿色" }));
            Grammar G = new Grammar(GB);
            G.SpeechRecognized += new EventHandler<SpeechRecognizedEventArgs>(G_SpeechRecognized);
            SRE.LoadGrammar(G);
            SRE.RecognizeAsync(RecognizeMode.Multiple);
        }
        void G_SpeechRecognized(object sender, SpeechRecognizedEventArgs e)
        {
            if (e.Result.Text.Equals("选择红色"))
            {
                BackColor = Color.Red;
            }
            else if (e.Result.Text.Equals("选择绿色"))
            {
                BackColor = Color.Green;
            }
        }
    }
}


然后一运行就完蛋了。。。
 SRE.SetInputToDefaultAudioDevice();  
报错:Value does not fall within the expected range. 
本人英语能力一般 百度翻译 说是:值不在预期的范围。
 值得说一下的是我的系统是XP的 装了Speech SDK 5.1以及中文语音包
为什么是这种情况嘞?

------解决方案--------------------
http://msdn.microsoft.com/en-us/library/system.speech.recognition.speechrecognitionengine.setinputtodefaultaudiodevice.aspx