(转)中文语音识别技术在c#中的应用(一) 出处:CSDN
来源:互联网 发布:default在c语言中 编辑:程序博客网 时间:2024/04/29 03:19
安装好以后,我们就可以开始进行语音程序的开发了,当然,在这之前我们需要把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 ; } } }//end for if (IsChina) { int iLen = strSpeak.Length - iCbeg ; string strValue = strSpeak.Substring(iCbeg,iLen) ; SpeakChina(strValue) ; } |
else { int iLen = strSpeak.Length - iEbeg ; string strValue = strSpeak.Substring(iEbeg,iLen) ; SpeakEnglishi(strValue) ; } } private void BuildSpeach() { if (voice == null) voice = new SpVoiceClass() ; } public int Volume { get { return voice.Volume ; } set { voice.SetVolume((ushort)(value)) ; } } |
public int Rate { get { return voice.Rate ; } set { voice.SetRate(value) ; } } private void Speak(string strSpeack) { try { voice.Speak(strSpeack,SpeechVoiceSpeakFlags.SVSFlagsAsync) ; } catch(Exception err) { throw(new Exception("发生一个错误:"+err.Message)) ; } } public void Stop() |
{ voice.Speak(string.Empty,SpeechLib.SpeechVoiceSpeakFlags.SVSFPurgeBeforeSpeak) ; } public void Pause() { voice.Pause() ; } public void Continue() { voice.Resume() ; } }//end class |
在 private SpeechLib.SpVoiceClass voice =null;这里,我们定义个一个用来发音的类,并且在第一次调用该类时,对它用BuildSpeach方法进行了初始化。
我们还定义了两个属性Volume和Rate,能够设置音量和语速。
我们知道,SpVoiceClass 有一个Speak方法,我们发音主要就是给他传递一个字符串,它负责读出该字符串,如下所示。
private void Speak(string strSpeack) try { voice.Speak(strSpeack,SpeechVoiceSpeakFlags.SVSFlagsAsync) ; } catch(Exception err) { throw(new Exception("发生一个错误:"+err.Message)) ; } } |
其中SpeechVoiceSpeakFlags.SVSFlagsAsync表示异步发音。
- (转)中文语音识别技术在c#中的应用(一) 出处:CSDN
- (转)中文语音识别技术在c#中的应用(二) 出处:CSDN
- [转]中英文语音合成与中文语音识别技术在c#中的应用(一)
- 中英文语音合成与中文语音识别技术在c#中的应用(一)
- 中英文语音合成与中文语音识别技术在c#中的应用(一)
- 中英文语音合成与中文语音识别技术在c#中的应用(一)
- 中文语音识别技术在C#中的应用
- [转]中英文语音合成与中文语音识别技术在c#中的应用(二)
- 中英文语音合成与中文语音识别技术在c#中的应用(二)
- 中英文语音合成与中文语音识别技术在c#中的应用(二)
- 中英文语音合成与中文语音识别技术在c#中的应用
- 中英文语音合成与中文语音识别技术在c#中的应用(1)
- 中英文语音合成与中文语音识别技术在c#中的应用(2)
- 中英文语音合成与中文语音识别技术在c#中的应用(二)
- 中英文语音合成与中文语音识别技术在c#中的应用(二)
- 语音合成与识别技术在C#中的应用
- 语音合成与识别技术在C#中的应用
- Hmm在语音识别中的应用(一)
- classic asp framework推荐及杂想!
- 看到的一句话!
- C++与fortran混合编程时的链接问题(ZZ)
- 考考你的经济学常识:七个问题
- Php部分常见问题总结(强烈推荐)
- (转)中文语音识别技术在c#中的应用(一) 出处:CSDN
- 忘了什么名字的开发方法,用测试驱动的。
- (转)中文语音识别技术在c#中的应用(二) 出处:CSDN
- Linux日常实用小技巧
- 由避税港想起的……
- 我的csdn blog中的第一次
- 日常实用小Tips
- 在ASP.Net中应用Javascript
- Redhat9下让PHP支持java