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 System.Speech.Recognition;
using SpeechLib;
//要在ref - .net里把systerm.speech引入 否者不能运行
namespace 语音识别测试
{
public partial class Form1 : Form
{
private SpeechRecognitionEngine SRE = new SpeechRecognitionEngine();
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
SRE.SetInputToDefaultAudioDevice(); // <=======默认的语音输入设备,你可以设定为去识别一个WAV文件。
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)
{
//Text = e.Result.Text;
//MessageBox.Show(e.Result.Text);
switch (e.Result.Text)
{
case "选择红色":
try { this.BackColor = Color.Red; }
catch { }
break;
case "选择绿色":
try { this.BackColor = Color.Green; }
catch { }
break;
case "选择白色":
try { this.BackColor = Color.Blue; }
catch { }
break;
case "选择盒子":
try { this.BackColor = Color.Black; }
catch { }
break;
}
}
private void button1_Click(object sender, EventArgs e)
{
SpVoice voice = new SpVoice();//SAPI 5.4
voice.Voice = voice.GetVoices(string.Empty, string.Empty).Item(0); //其中3为中文,024为英文
voice.Speak(richTextBox1.Text, SpeechVoiceSpeakFlags.SVSFDefault);
}
}
}