C#基于Microsoft Speech SDK Version 5.1 的开发
来源:互联网 发布:线缆报价软件 编辑:程序博客网 时间:2024/05/21 02:35
//Microsoft Speech SDK Version 5.1
#endregion
private SpeechLib.SpSharedRecoContext objRecoContext = null;
#region ISpeechRecoGrammar说明
//The ISpeechRecoGrammar automation interface enables applications to manage the words and phrases for the SR engine.
//为语音识别引擎自动管理应用程序单词和短语
/*
属性
Id Property Returns the Id assigned to the grammar when it was created.
RecoContext Property Returns the RecoContext object that created this grammar.
Rules Property Returns the collection of grammar rules in the RecoGrammar.
State Property Gets and sets the operational status of the speech grammar.
方法
CmdLoadFromFile Method Loads a command and control grammar from the specified file.
CmdLoadFromMemory Method Loads a compiled speech grammar from memory.
CmdLoadFromObject Method Loads a speech grammar from a COM object.
CmdLoadFromProprietaryGrammar Method Loads a proprietary speech grammar.
CmdLoadFromResource Method Loads a command and control grammar from a Win32 resource.
CmdSetRuleIdState Method Activates or deactivates a rule by its rule ID.
CmdSetRuleState Method Activates or deactivates a rule by its rule name.
DictationLoad Method Loads a dictation topic into the grammar.
DictationSetState Method Sets the dictation topic state.
DictationUnload Method Unloads the active dictation topic from the grammar.
IsPronounceable Method Determines if a word has a pronunciation.
Reset Method Clears all grammar rules and resets the grammar's language to NewLanguage.
SetTextSelection Method Sets the range of text selection information in a word sequence data buffer.
SetWordSequenceData Method Defines a word sequence data buffer for use by the SR engine.
*/
#endregion
private SpeechLib.ISpeechRecoGrammar grammar = null;
#region ISpeechGrammarRule说明
//The ISpeechGrammarRule automation interface defines the properties and methods of a speech grammar rule
//自动定义语音属性和方法的接口
/*
属性
Attributes Property Returns information about the attributes of a speech grammar rule.
Id Property Specifies the ID of the speech grammar rule.
InitialState Property Specifies the initial state of the speech grammar rule.
Name Property Specifies the name of the speech grammar rule.
方法
AddResource Method Adds a string to a speech rule.
AddState Method Adds a state to a speech rule.
Clear Method Clears a rule, leaving only its initial state.
*/
#endregion
private SpeechLib.ISpeechGrammarRule menuRule = null;
#endregion
private void cmdEnable_Click(object sender, System.EventArgs e)
{
// 得到一个RecoContext实例.
objRecoContext = new SpeechLib.SpSharedRecoContext();
// 指派一个事件给Hypothesis Event(中间层暂定的识别,即,初级的,临时的识别).
objRecoContext.Hypothesis += new _ISpeechRecoContextEvents_HypothesisEventHandler(Hypo_Event);
// 指派一个事件给语音识别.
objRecoContext.Recognition += new _ISpeechRecoContextEvents_RecognitionEventHandler(Reco_Event);
//创建grammer实例.
grammar = objRecoContext.CreateGrammar(0);
label3.Text = "Speak Out one of the follwoing./r/n1. New 2. Open 3. Close 4. Exit/r/n5. Cut 6. Copy 7. Paste 8. Delete";
//激活菜单命令.
menuRule = grammar.Rules.Add("MenuCommands",SpeechRuleAttributes.SRATopLevel|SpeechRuleAttributes.SRADynamic,1);
object PropValue = "";
menuRule.InitialState.AddWordTransition(null,"New"," ",SpeechGrammarWordType.SGLexical,"New", 1, ref PropValue, 1.0F );
menuRule.InitialState.AddWordTransition(null,"Open"," ",SpeechGrammarWordType.SGLexical,"Open", 2, ref PropValue, 1.0F );
menuRule.InitialState.AddWordTransition(null,"Close"," ",SpeechGrammarWordType.SGLexical,"Close",3, ref PropValue, 1.0F );
menuRule.InitialState.AddWordTransition(null,"Exit"," ",SpeechGrammarWordType.SGLexical,"Exit",4, ref PropValue, 1.0F );
menuRule.InitialState.AddWordTransition(null,"Cut"," ",SpeechGrammarWordType.SGLexical,"Cut",5, ref PropValue, 1.0F );
menuRule.InitialState.AddWordTransition(null,"Copy"," ",SpeechGrammarWordType.SGLexical,"Copy",6, ref PropValue, 1.0F );
menuRule.InitialState.AddWordTransition(null,"Paste"," ",SpeechGrammarWordType.SGLexical,"Paste",7, ref PropValue, 1.0F );
menuRule.InitialState.AddWordTransition(null,"Delete"," ",SpeechGrammarWordType.SGLexical,"Delete",8, ref PropValue, 1.0F );
grammar.Rules.Commit();
grammar.CmdSetRuleState("MenuCommands", SpeechRuleState.SGDSActive);
}
#region 初级和正式的语音识别事件处理
private void Reco_Event(int StreamNumber, object StreamPosition,SpeechRecognitionType RecognitionType,ISpeechRecoResult Result)
{
txtReco.Text = Result.PhraseInfo.GetText(0, -1, true);
}
private void Hypo_Event(int StreamNumber, object StreamPosition, ISpeechRecoResult Result)
{
txtHyp.Text = Result.PhraseInfo.GetText(0, -1, true);
}
#endregion
#region 清空控件和使关闭语音识别
private void cmdDiable_Click(object sender, System.EventArgs e)
{
ClearControls(label3, objRecoContext);
}
#endregion
#region 自定义函数
/// <summary>
/// 清空数据
/// </summary>
/// <param name="args">需要清空的变量及控件</param>
public void ClearControls(params object[] args)
{
foreach (object obj in args)
{
if (obj is TextBox)
{
TextBox t = (TextBox)obj;
t.Text = "";
}
if (obj is ListBox)
{
ListBox l = (ListBox)obj;
l.Items.Clear();
}
if (obj is Label)
{
Label l = (Label)obj;
l.Text = "";
}
if (obj is SpeechLib.SpSharedRecoContext)
{
SpeechLib.SpSharedRecoContext s = (SpeechLib.SpSharedRecoContext)obj;
s = null;
}
}
}
#endregion
}
}
- C#基于Microsoft Speech SDK Version 5.1 的开发
- C#基于Microsoft Speech SDK Version 5.1 的开发(语音)
- VC 下Microsoft Speech SDK 5.1 开发小结
- VC 下Microsoft Speech SDK 5.1 开发小结
- VC 下Microsoft Speech SDK 5.1 开发小结
- VC 下Microsoft Speech SDK开发小结
- VC 下Microsoft Speech SDK开发小结
- VS2013使用Microsoft Speech SDK开发包
- 如何使用Microsoft Speech SDK开发包
- 一个简单的 Microsoft Speech SDK 5.1 例子
- Hello World by Microsoft Speech SDK 5.1
- Hello World by Microsoft Speech SDK 5.1
- Hello World by Microsoft Speech SDK 5.1
- Microsoft Speech SDK 5.1 下载资源
- vs2013+Microsoft Speech SDK 5.1+error C4996
- Microsoft Speech API SDK
- VC 下Microsoft Speech SDK开发语音识别
- VC 下Microsoft Speech SDK开发语音识别
- 异文化交流障碍:用自己的价值观去判断对方
- 从架构差异看Web高性能开发
- 冯诺依曼体系结构、哈佛体系结构与改进型哈佛结构之间的区别
- 查询某个编号的批次范围
- 数据结构中数组、向量、表
- C#基于Microsoft Speech SDK Version 5.1 的开发
- JAVA开发者最常去的20个英文网站
- 如何实现局域网内两台电脑资源共享?
- 信用社那些事儿(一)----历史
- 在linux console上使用tcpdump抓包
- 通过鼠标获取窗口句柄
- 雨田净水
- 取汉字拼音
- 软件架构师成长之路