c#语音_.NET_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > .NET > c#语音

c#语音

 2013/11/18 10:27:09  那些年的某一天  博客园  我要评论(0)
  • 摘要:1.新建WinForm程序,项目名称命名为Speech.2.在COM组件中添加SpeechLib的引用。usingSpeechLib;//添加语音引用添加一个文本框并将其重命名为txtContent和两个按钮控件分别用做发音(btnRead)和保存(btnSave),实现代码如下:privatevoidbtnRead_Click(objectsender,EventArgse){Speak(txtContent.Text);}privatevoidSpeak(stringspeak)
  • 标签:C#

1.新建WinForm程序,项目名称命名为Speech.

2.在COM组件中添加SpeechLib的引用。

using SpeechLib;//添加语音引用

添加一个文本框并将其重命名为txtContent和两个按钮控件分别用做发音(btnRead)和保存(btnSave),实现代码如下:

private void btnRead_Click(object sender, EventArgs e)        

{       

      Speak(txtContent.Text);    

}                

private void Speak(string speak)        

{        

     //char[] chars=speak.ToArray();       

      SpVoice voice = new SpVoice();        

       voice.Rate = -2;//朗读速度

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

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

     //{        

     //    voice.Speak(chars[i].ToString(), SpeechVoiceSpeakFlags.SVSFDefault);      

    //}        

     voice.Speak(speak, SpeechVoiceSpeakFlags.SVSFDefault);       

     voice.Speak("完毕", SpeechVoiceSpeakFlags.SVSFDefault);        

}

  //保存语音        

private void btnSave_Click(object sender, EventArgs e)        

{       

      try       

      {           

           SpeechVoiceSpeakFlags SpFlags = SpeechVoiceSpeakFlags.SVSFlagsAsync;      

           SpVoice Voice = new SpVoice();        

           SaveFileDialog sfd = new SaveFileDialog();        

           sfd.Filter = "All files (*.*)|*.*|wav files (*.wav)|*.wav";      

           sfd.Title = "Save to a wave file";     

           sfd.FilterIndex = 2;         

          sfd.RestoreDirectory = true;        

         if (sfd.ShowDialog() == DialogResult.OK)       

        {              

           SpeechStreamFileMode SpFileMode = SpeechStreamFileMode.SSFMCreateForWrite;         

           SpFileStream SpFileStream = new SpFileStream();           

          SpFileStream.Open(sfd.FileName, SpFileMode, false);           

          Voice.AudioOutputStream = SpFileStream;           

          Voice.Speak(this.txtContent.Text, SpFlags);          

          Voice.WaitUntilDone(100);           

          SpFileStream.Close();        

         }      

       }        

     catch (Exception)      

       {         

          MessageBox.Show("An Error Occured!", "SpeechApp", MessageBoxButtons.OK, MessageBoxIcon.Error);       

      }     

 }

 

其中代码:

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

中0可以读取汉语和英语,而1只能读取英语,其他数字就报错,在网上也没找到合适答案,以后会继续修复现有问题。欢迎大神提出解决问题的办法

上一篇: ASP.NET MVC总结 下一篇: 读取手机硬件信息
发表评论
用户名: 匿名