日期:2014-05-18  浏览次数:20465 次

请问如何在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.html

词霸的发音
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)
  {