当前位置:首页 > 消费电子 > 音频技术
[导读]   语音识别的两个方法   通过微软的SAPI,不仅仅可以实现语音合成TTS,同样可以实现语音识别SR。下面我们就介绍并贴出相关代码。主要有两种方式:   1、使用COM组件技术

  语音识别的两个方法

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

  }

  }

  }

  }

  语音识别的应用有哪些

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

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

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

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

  更多精彩阅读:   语音识别的优缺点_语音识别功能介绍   语音识别算法有哪些_语音识别特征提取方法   怎么实现语音识别_手机语音识别怎么设置   语音识别设置能删除吗_语音识别系统工作流程
本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭