程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> 中文語音識別技術在c#中的應用(一)

中文語音識別技術在c#中的應用(一)

編輯:C#入門知識

在.net中,對英文語音有較好的支持,但是對中文語音的支持還沒有加入進來,我們要想實現中文發音或中文語音識別,必需先安裝微軟的Speech Application SDK(SASDK),它的最新版本是 SAPI 5.1 他能夠識別中、日、英三種語言,你可以在這裡下載:http://www.microsoft.com/speech/download/sdk51/,需要安裝這兩個文件Speech SDK 5.1和5.1 Language Pack,其中5.1 Language Pack可以選擇安裝支持的語言。

  安裝好以後,我們就可以開始進行語音程序的開發了,當然,在這之前我們需要把SAPI.dll通過如下圖所示添加到引用中

  下面我們設計一個能夠朗讀中英文混合語言的類:

  我們將用單例模式實現該類,類的代碼如下,我們將詳細解釋:

 public class Speach

     {

          private static Speach _Instance = null ;

          private SpeechLib.SpVoiceClass voice =null;

          private Speach()

         {

              BuildSpeach() ;

         }

         public static Speach instance()

         {

              if (_Instance == null)

                   _Instance = new Speach() ;

              return _Instance ;

         }

          private void SetChinaVoice()

         {

              voice.Voice = voice.GetVoices(string.Empty,string.Empty).Item(0) ;

         }

          private void SetEnglishVoice()

         {

              voice.Voice = voice.GetVoices(string.Empty,string.Empty).Item(1) ;

          }

          private void SpeakChina(string strSpeak)

         {

              SetChinaVoice() ;

              Speak(strSpeak) ;

         }

          private void SpeakEnglishi(string strSpeak)

         {

              SetEnglishVoice() ;

              Speak(strSpeak) ;

         }

         public void AnalyseSpeak(string strSpeak)

         {

              int iCbeg = 0 ;

              int iEbeg = 0 ;

              bool IsChina = true ;

              for(int i=0;i<strSpeak.Length;i++)

              {

                   char chr = strSpeak[i] ;

                   if (IsChina)

                   {

                       if (chr<=122&&chr>=65)

                       {

                            int iLen = i - iCbeg ;


 

                             string strValue = strSpeak.Substring(iCbeg,iLen) ;

                            SpeakChina(strValue) ;

                            iEbeg = i ;

                            IsChina = false ;

                       }

                   }

                   else

                   {

                       if (chr>122||chr<65)

                       {

                            int iLen = i - iEbeg ;

                            string strValue = strSpeak.Substring(iEbeg,iLen) ;

                            this.SpeakEnglishi(strValue) ;

                            iCbeg = i ;

                            IsChina = true ;

                       }

             &nb

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved