通过微软的SAPI,不仅仅可以实现语音合成TTS,同样可以实现语音识别SR。下面我们就介绍并贴出相关代码。主要有两种方式:
1、使用COM组件技术,不管是C++,C#,Delphi都能玩的转,开发出来的东西在XP和WIN7都能跑。(注意要引入系统组件SpeechLib,XP要安装识别引擎)
2、使用WIN7的windows api,其实最终还是调用了SAPI,所以开发出来的东西就只能在WIN7上面跑。
其实不管是哪一种,都是调用SAPI,可能后一种代码比较简单。
使用第一种方式,需要注意在COM选项卡里面的Microsoft Speech object library引用
public class SpRecognition { private static SpRecognition _Instance = null; private SpeechLib.ISpeechRecoGrammar isrg; private SpeechLib.SpSharedRecoContextClass ssrContex = null; public delegate void StringEvent(string str); public StringEvent SetMessage; private SpRecognition() { ssrContex = new SpSharedRecoContextClass(); isrg = ssrContex.CreateGrammar(1); SpeechLib._ISpeechRecoContextEvents_RecognitionEventHandler recHandle = new _ISpeechRecoContextEvents_RecognitionEventHandler(ContexRecognition); ssrContex.Recognition += recHandle; } public void BeginRec() { isrg.DictationSetState(SpeechRuleState.SGDSActive); } public static SpRecognition instance() { if (_Instance == null) _Instance = new SpRecognition(); return _Instance; } public void CloseRec() { isrg.DictationSetState(SpeechRuleState.SGDSInactive); } private void ContexRecognition(int iIndex, object obj, SpeechLib.SpeechRecognitionType type, SpeechLib.ISpeechRecoResult result) { if (SetMessage != null) { SetMessage(result.PhraseInfo.GetText(0, -1, true)); } } }
第二种同样需要引入,不过引入的是Win7中的.NET3.5类库
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Speech; using System.Speech.Recognition; using System.Globalization; using System.Windows.Forms; namespace StudyBeta { public class SRecognition { public SpeechRecognitionEngine recognizer = null;//语音识别引擎 public DictationGrammar dictationGrammar = null; //自然语法 public System.Windows.Forms.Control cDisplay; //显示控件 public SRecognition(string[] fg) //创建关键词语列表 { CultureInfo myCIintl = new CultureInfo("en-US"); foreach (RecognizerInfo config in SpeechRecognitionEngine. InstalledRecognizers())//获取所有语音引擎 { if (config.Culture.Equals(myCIintl) && config.Id == "MS-1033-80-DESK" ) { recognizer = new SpeechRecognitionEngine(config); break; }//选择美国英语的识别引擎 } if (recognizer != null) { InitializeSpeechRecognitionEngine(fg);//初始化语音识别引擎 dictationGrammar = new DictationGrammar(); } else { MessageBox.Show("创建语音识别失败"); } } private void InitializeSpeechRecognitionEngine(string[] fg) { recognizer.SetInputToDefaultAudioDevice();//选择默认的音频输入设备 Grammar customGrammar = CreateCustomGrammar(fg); //根据关键字数组建立语法 recognizer.UnloadAllGrammars(); recognizer.LoadGrammar(customGrammar); //加载语法 recognizer.SpeechRecognized += new EventHandler <SpeechRecognizedEventArgs>(recognizer_SpeechRecognized); recognizer.SpeechHypothesized += new EventHandler <SpeechHypothesizedEventArgs>(recognizer_SpeechHypothesized); } public void BeginRec(Control tbResult)//关联窗口控件 { TurnSpeechRecognitionOn(); TurnDictationOn(); cDisplay = tbResult; } public void over()//停止语音识别引擎 { TurnSpeechRecognitionOff(); } public virtual Grammar CreateCustomGrammar(string[] fg) //创造自定义语法 { GrammarBuilder grammarBuilder = new GrammarBuilder(); grammarBuilder.Append(new Choices(fg)); return new Grammar(grammarBuilder); } private void TurnSpeechRecognitionOn()//启动语音识别函数 { if (recognizer != null) { recognizer.RecognizeAsync(RecognizeMode.Multiple); //识别模式为连续识别 } else { MessageBox.Show("创建语音识别失败"); } } private void TurnSpeechRecognitionOff()//关闭语音识别函数 { if (recognizer != null) { recognizer.RecognizeAsyncStop(); TurnDictationOff(); } else { MessageBox.Show("创建语音识别失败"); } } private void recognizer_SpeechRecognized(object sender, SpeechRecognized EventArgs e) { //识别出结果完成的动作,通常把识别结果传给某一个控件 string text = e.Result.Text; cDisplay.Text = text; } private void TurnDictationOn() { if (recognizer != null) { recognizer.LoadGrammar(dictationGrammar); //加载自然语法 } else { MessageBox.Show("创建语音识别失败"); } } private void TurnDictationOff() { if (dictationGrammar != null) { recognizer.UnloadGrammar(dictationGrammar); //卸载自然语法 } else { MessageBox.Show("创建语音识别失败"); } } } }
本文向大家介绍C#中调用SAPI实现语音合成的2种方法,包括了C#中调用SAPI实现语音合成的2种方法的使用技巧和注意事项,需要的朋友参考一下 我们都知道现在的语音合成TTS是可以通过微软的SAPI实现的,好处我就不多说了,方便而已,因为在微软的操作系统里面就自带了这个玩意,主要的方式有两种: 1、使用COM组件技术,不管是C++,C#,Delphi都能玩的转,开发出来的东西在XP和WIN7都能跑
本文向大家介绍C#语音识别用法实例,包括了C#语音识别用法实例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了C#语音识别用法。分享给大家供大家参考。具体分析如下: C#可以利用微软操作系统自动的语音识别功能,读取信息。步骤如下: 1. 在项目中添加 "" 引用 2. 引入命名空间: 3. 读取的代码: 其中: 1. SpeechVoiceSpeakFlags 是一个枚举。 Sp
本文向大家介绍Java实现在线语音识别,包括了Java实现在线语音识别的使用技巧和注意事项,需要的朋友参考一下 本文为大家分享了Java实现在线语音识别的具体方法,供大家参考,具体内容如下 利用讯飞开发平台作为第三方库 首先需要在讯飞开发平台下载SDK,网址为,讯飞开发平台,这些SDK 下载都是免费的,当然你需要先注册。在SDK 中不仅包含相应的jar包,还有一些相应的demo,可以供你参考学习
本文向大家介绍Android实现语音识别代码,包括了Android实现语音识别代码的使用技巧和注意事项,需要的朋友参考一下 苹果的iphone 有语音识别用的是Google 的技术,做为Google 力推的Android 自然会将其核心技术往Android 系统里面植入,并结合google 的云端技术将其发扬光大。 所以Google Voice Recognition在Android 的实现就变得
A.我正在努力实现的目标。 允许在网络浏览器内进行实时语音识别的网络应用程序(像这样)。 B.我目前正在考虑使用的技术来实现A。 JavaScript 节点。js WebRTC 微软语音API或Pocketsphinx。js或其他东西(不能使用Web语音API) C.非常基本的工作流程 Web浏览器建立到节点服务器的连接(服务器充当信令服务器,还提供静态文件) D.问题 将节点。js是否适合实现C
本文向大家介绍Android基于讯飞语音SDK实现语音识别,包括了Android基于讯飞语音SDK实现语音识别的使用技巧和注意事项,需要的朋友参考一下 一、准备工作 1、你需要android手机应用开发基础 2、科大讯飞语音识别SDK android版 3、科大讯飞语音识别开发API文档 4、android手机 关于科大讯飞SDK及API文档,请到科大语音官网下载:http://www.xfyun