语音识别的两个方法_语音识别的应用有哪些

发布时间:2024-01-29  

  语音识别的两个方法

  通过微软的SAPI,不仅仅可以实现语音合成TTS,同样可以实现语音识别SR。下面我们就介绍并贴出相关代码。主要有两种方式:

  1、使用COM组件技术,不管是C++,C#,Delphi都能玩的转,开发出来的东西在XP和WIN7都能跑。(注意要引入系统组件SpeechLib,XP要安装识别引擎)

  2、使用WIN7的windows api,其实最终还是调用了SAPI,所以开发出来的东西就只能在WIN7上面跑。

  其实不管是哪一种,都是调用SAPI,可能后一种代码比较简单。

  使用第一种方式,需要注意在COM选项卡里面的Microsoft Speech object library引用

  C#代码 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类库

  C# 代码

  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(“创建语音识别失败”);

  }

  }

  }

  }


  语音识别的应用有哪些

  语音识别技术应用有哪些?语音识别技术有着非常广泛的应用领域和市场前景。在语音输入控制系统中,它使得人们可以甩掉键盘,通过识别语音中的要求、请求、命令或询问来作出正确的响应,这样既可以克服人工键盘输入速度慢,极易出差错的缺点,又有利于缩短系统的反应时间,使人机交流变得简便易行,比如用于声控语音拨号系统、声控智能玩具、智能家电等领域。

  在智能对话查询系统中,人们通过语音命令,可以方便地从远端的数据库系统中查询与提取有关信息,享受自然、友好的数据库检索服务,例如信息网络查询、医疗服务、银行服务等。语音识别技术还可以应用于自动口语翻译,即通过将口语识别技术、机器翻译技术、语音合成技术等相结合,可将一种语言的语音输入翻译为另一种语言的语音输出,实现跨语言交流。

  语音识别技术在军事斗争领域里也有着极为重要的应用价值和极广阔的应用空间。一些语音识别技术就是着眼于军事活动而研发,并在军事领域首先应用、首获成效的,军事应用对语音识别系统的识别精度、响应时间、恶劣环境下的顽健性都提出了更高的要求。

  目前,语音识别技术已在军事指挥和控制自动化方面得以应用。比如,将语音识别技术应用于航空飞行控制,可快速提高作战效率和减轻飞行员的工作负担,飞行员利用语音输人来代替传统的手动操作和控制各种开关和设备,以及重新改编或排列显示器上的显示信息等,可使飞行员把时间和精力集中于对攻击目标的判断和完成别的操作上来,以便更快获得信息来发挥战术优势。


文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>