当前位置: 代码迷 >> ASP.NET >> 请教怎么在web利用TTS给单词发音?
  详细解决方案

请教怎么在web利用TTS给单词发音?

热度:6087   发布时间:2013-02-25 00:00:00.0
请问如何在web利用TTS给单词发音????在线等!!!!
我先引用了using DotNetSpeech;然后用如下代码实现了发音
C# code
void read_Word(object word)        {            SpeechVoiceSpeakFlags SpFlags = SpeechVoiceSpeakFlags.SVSFlagsAsync;            SpVoice Voice = new SpVoice();            Voice.Rate = 0;            Voice.Speak(word.ToString(), SpFlags);        }        protected void Button1_Click(object sender, EventArgs e)        {            read_Word("i am a student");        }

但是我的这个声音,自己测试没问题,但是只要发布了网站之后,别的电脑点击发音,客户端听不到声音,但是服务器会发声!
而且必须在webconfig里设置 <identity impersonate="true" userName="Administrator" password="" />
这样是不是太危险了?
有什么方法能让客户端听到声音,或者用别的方法读TTS?

------解决方案--------------------------------------------------------
学习。
------解决方案--------------------------------------------------------
你的代码是在服务器上运行的,发音也是在服务器上发,你客户端能听到,那真是奇迹了!

你需要在客户端安装插件,写客户端插件才可以的。

网上常用的方法是采用Flash或者页面嵌入embed发音的。如
在线新华字典的发音
http://xh.5156edu.com/html3/10478

词霸的发音
http://www.iciba.com/good/1da43afc096945ca5e8f5f21310158f1/
------解决方案--------------------------------------------------------
或许你应该生成语音文件,然后让客户端去访问。

C# code
    DotNetSpeech.SpeechVoiceSpeakFlags SSF = DotNetSpeech.SpeechVoiceSpeakFlags.SVSFlagsAsync;    DotNetSpeech.SpVoice vo = new SpVoiceClass();    System.Windows.Forms.SaveFileDialog SFD = new System.Windows.Forms.SaveFileDialog();    SFD.Filter = "All files (*.*)|*.*|wav files (*.wav)|*.wav";    SFD.Title = "Save to a wav file";    SFD.FilterIndex = 2;    SFD.RestoreDirectory = true;    if(SFD.ShowDialog()==System.Windows.Forms.DialogResult.OK)    {     DotNetSpeech.SpeechStreamFileMode SSFM = DotNetSpeech.SpeechStreamFileMode.SSFMCreateForWrite;     DotNetSpeech.SpFileStream SFS = new DotNetSpeech.SpFileStreamClass();     SFS.Open(SFD.FileName,SSFM,false);     vo.AudioOutputStream = SFS;     vo.Speak(this.textBox1.Text,SSF);     vo.WaitUntilDone(System.Threading.Timeout.Infinite);     SFS.Close();    }   }   catch(System.Exception ec)   {    MessageBox.Show(ec.ToString(),"SpeechApp",MessageBoxButtons.OK,System.Windows.Forms.MessageBoxIcon.Error);   }  }
------解决方案--------------------------------------------------------

客户端插件是一定要安装的。 不装的话 客户端 肯定是没有声音的


金山词霸上面的查词的读音是用flash实现的
------解决方案--------------------------------------------------------
你可以问一下捷通的技术
捷通华声体验中心
------解决方案--------------------------------------------------------
如果我每点一次发音都生成一个声音文件,会不会慢?

你先判断文件是否存在,存在就不生成了。

生成是必须的。

------解决方案--------------------------------------------------------
学习学习
------解决方案--------------------------------------------------------

来学的!
------解决方案--------------------------------------------------------
学习。。。。。。。。。。。。
------解决方案--------------------------------------------------------
是的 ,你生成mp3也可以。你想想啊,你的这些SpVoice程序客户端根本不存在,怎么能执行呢?这不是很简单的道理吗??
------解决方案--------------------------------------------------------
C# code
 /// <summary>  /// 朗读  /// </summary>  private void ButtonSynthesis_Click(object sender, System.EventArgs e)  {   try   {    DotNetSpeech.SpeechVoiceSpeakFlags SSF = DotNetSpeech.SpeechVoiceSpeakFlags.SVSFlagsAsync;    DotNetSpeech.SpVoice vo = new SpVoiceClass();    vo.Speak(this.textBox1.Text,SSF);   }   catch(System.Exception ec)   {    MessageBox.Show(ec.ToString(),"SpeechApp",MessageBoxButtons.OK,System.Windows.Forms.MessageBoxIcon.Error);   }  }  /// <summary>  /// 生成声音文件  /// </summary>  private void ButtonTTStoWave_Click(object sender, System.EventArgs e)  {   try   {    DotNetSpeech.SpeechVoiceSpeakFlags SSF = DotNetSpeech.SpeechVoiceSpeakFlags.SVSFlagsAsync;    DotNetSpeech.SpVoice vo = new SpVoiceClass();    System.Windows.Forms.SaveFileDialog SFD = new System.Windows.Forms.SaveFileDialog();    SFD.Filter = "All files (*.*)|*.*|wav files (*.wav)|*.wav";    SFD.Title = "Save to a wav file";    SFD.FilterIndex = 2;    SFD.RestoreDirectory = true;    if(SFD.ShowDialog()==System.Windows.Forms.DialogResult.OK)    {     DotNetSpeech.SpeechStreamFileMode SSFM = DotNetSpeech.SpeechStreamFileMode.SSFMCreateForWrite;     DotNetSpeech.SpFileStream SFS = new DotNetSpeech.SpFileStreamClass();     SFS.Open(SFD.FileName,SSFM,false);     vo.AudioOutputStream = SFS;     vo.Speak(this.textBox1.Text,SSF);     vo.WaitUntilDone(System.Threading.Timeout.Infinite);     SFS.Close();    }   }   catch(System.Exception ec)   {    MessageBox.Show(ec.ToString(),"SpeechApp",MessageBoxButtons.OK,System.Windows.Forms.MessageBoxIcon.Error);   }  } }}
  相关解决方案