當(dāng)前位置:首頁 > 消費(fèi)電子 > 音頻技術(shù)
[導(dǎo)讀]   語音識別的兩個(gè)方法   通過微軟的SAPI,不僅僅可以實(shí)現(xiàn)語音合成TTS,同樣可以實(shí)現(xiàn)語音識別SR。下面我們就介紹并貼出相關(guān)代碼。主要有兩種方式:   1、使用COM組件技術(shù)

  語音識別的兩個(gè)方法

  通過微軟的SAPI,不僅僅可以實(shí)現(xiàn)語音合成TTS,同樣可以實(shí)現(xiàn)語音識別SR。下面我們就介紹并貼出相關(guān)代碼。主要有兩種方式:

  1、使用COM組件技術(shù),不管是C++C#,Delphi都能玩的轉(zhuǎn),開發(fā)出來的東西在XP和WIN7都能跑。(注意要引入系統(tǒng)組件SpeechLib,XP要安裝識別引擎)

  2、使用WIN7的windows api,其實(shí)最終還是調(diào)用了SAPI,所以開發(fā)出來的東西就只能在WIN7上面跑。

  其實(shí)不管是哪一種,都是調(diào)用SAPI,可能后一種代碼比較簡單。

  使用第一種方式,需要注意在COM選項(xiàng)卡里面的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) //創(chuàng)建關(guān)鍵詞語列表

  {

  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(“創(chuàng)建語音識別失敗”);

  }

  }

  private void InitializeSpeechRecognitionEngine(string[] fg)

  {

  recognizer.SetInputToDefaultAudioDevice();//選擇默認(rèn)的音頻輸入設(shè)備

  Grammar customGrammar = CreateCustomGrammar(fg);

  //根據(jù)關(guān)鍵字?jǐn)?shù)組建立語法

  recognizer.UnloadAllGrammars();

  recognizer.LoadGrammar(customGrammar);

  //加載語法

  recognizer.SpeechRecognized += new EventHandler 《SpeechRecognizedEventArgs》(recognizer_SpeechRecognized);

  recognizer.SpeechHypothesized += new EventHandler 《SpeechHypothesizedEventArgs》(recognizer_SpeechHypothesized);

  }

  public void BeginRec(Control tbResult)//關(guān)聯(lián)窗口控件

  {

  TurnSpeechRecognitionOn();

  TurnDictationOn();

  cDisplay = tbResult;

  }

  public void over()//停止語音識別引擎

  {

  TurnSpeechRecognitionOff();

  }

  public virtual Grammar CreateCustomGrammar(string[] fg) //創(chuàng)造自定義語法

  {

  GrammarBuilder grammarBuilder = new GrammarBuilder();

  grammarBuilder.Append(new Choices(fg));

  return new Grammar(grammarBuilder);

  }

  private void TurnSpeechRecognitionOn()//啟動語音識別函數(shù)

  {

  if (recognizer != null)

  {

  recognizer.RecognizeAsync(RecognizeMode.Multiple);

  //識別模式為連續(xù)識別

  }

  else

  {

  MessageBox.Show(“創(chuàng)建語音識別失敗”);

  }

  }

  private void TurnSpeechRecognitionOff()//關(guān)閉語音識別函數(shù)

  {

  if (recognizer != null)

  {

  recognizer.RecognizeAsyncStop();

  TurnDictationOff();

  }

  else

  {

  MessageBox.Show(“創(chuàng)建語音識別失敗”);

  }

  }

  private void recognizer_SpeechRecognized(object sender, SpeechRecognized EventArgs e)

  {

  //識別出結(jié)果完成的動作,通常把識別結(jié)果傳給某一個(gè)控件

  string text = e.Result.Text;

  cDisplay.Text = text;

  }

  private void TurnDictationOn()

  {

  if (recognizer != null)

  {

  recognizer.LoadGrammar(dictationGrammar);

  //加載自然語法

  }

  else

  {

  MessageBox.Show(“創(chuàng)建語音識別失敗”);

  }

  }

  private void TurnDictationOff()

  {

  if (dictationGrammar != null)

  {

  recognizer.UnloadGrammar(dictationGrammar);

  //卸載自然語法

  }

  else

  {

  MessageBox.Show(“創(chuàng)建語音識別失敗”);

  }

  }

  }

  }

  語音識別的應(yīng)用有哪些

  語音識別技術(shù)應(yīng)用有哪些?語音識別技術(shù)有著非常廣泛的應(yīng)用領(lǐng)域和市場前景。在語音輸入控制系統(tǒng)中,它使得人們可以甩掉鍵盤,通過識別語音中的要求、請求、命令或詢問來作出正確的響應(yīng),這樣既可以克服人工鍵盤輸入速度慢,極易出差錯(cuò)的缺點(diǎn),又有利于縮短系統(tǒng)的反應(yīng)時(shí)間,使人機(jī)交流變得簡便易行,比如用于聲控語音撥號系統(tǒng)、聲控智能玩具、智能家電等領(lǐng)域。

  在智能對話查詢系統(tǒng)中,人們通過語音命令,可以方便地從遠(yuǎn)端的數(shù)據(jù)庫系統(tǒng)中查詢與提取有關(guān)信息,享受自然、友好的數(shù)據(jù)庫檢索服務(wù),例如信息網(wǎng)絡(luò)查詢、醫(yī)療服務(wù)、銀行服務(wù)等。語音識別技術(shù)還可以應(yīng)用于自動口語翻譯,即通過將口語識別技術(shù)、機(jī)器翻譯技術(shù)、語音合成技術(shù)等相結(jié)合,可將一種語言的語音輸入翻譯為另一種語言的語音輸出,實(shí)現(xiàn)跨語言交流。

  語音識別技術(shù)在軍事斗爭領(lǐng)域里也有著極為重要的應(yīng)用價(jià)值和極廣闊的應(yīng)用空間。一些語音識別技術(shù)就是著眼于軍事活動而研發(fā),并在軍事領(lǐng)域首先應(yīng)用、首獲成效的,軍事應(yīng)用對語音識別系統(tǒng)的識別精度、響應(yīng)時(shí)間、惡劣環(huán)境下的頑健性都提出了更高的要求。

  目前,語音識別技術(shù)已在軍事指揮和控制自動化方面得以應(yīng)用。比如,將語音識別技術(shù)應(yīng)用于航空飛行控制,可快速提高作戰(zhàn)效率和減輕飛行員的工作負(fù)擔(dān),飛行員利用語音輸人來代替?zhèn)鹘y(tǒng)的手動操作和控制各種開關(guān)和設(shè)備,以及重新改編或排列顯示器上的顯示信息等,可使飛行員把時(shí)間和精力集中于對攻擊目標(biāo)的判斷和完成別的操作上來,以便更快獲得信息來發(fā)揮戰(zhàn)術(shù)優(yōu)勢。

  更多精彩閱讀:   語音識別的優(yōu)缺點(diǎn)_語音識別功能介紹   語音識別算法有哪些_語音識別特征提取方法   怎么實(shí)現(xiàn)語音識別_手機(jī)語音識別怎么設(shè)置   語音識別設(shè)置能刪除嗎_語音識別系統(tǒng)工作流程
本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運(yùn)營商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學(xué)會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團(tuán))股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉