我安装了Microsoft-Chinese-TTS-51.msi可以朗读中文,但是当我想把文字转换成某种wave文件保存时发现了问题,下面是代码,各位可以试试,先添加引用,microsoft speech COM, sapi.dll:try
{
    SpFileStream SpFileStream = new SpFileStream();
    SpFileStream.Format.Type = SpeechAudioFormatType.SAFTCCITT_ALaw_8kHzMono;
    //SpFileStream.Format.Type = SpeechAudioFormatType.SAFT11kHz16BitMono;
    SpFileStream.Open( "c:\\tts.wav", SpeechStreamFileMode.SSFMCreateForWrite, false );    SpVoiceClass Voice = new SpVoiceClass();
    Voice.AudioOutputStream = SpFileStream;
    Voice.Speak( "<lang langid=\"804\">请输入帐号</lang>", SpeechVoiceSpeakFlags.SVSFlagsAsync );
    Voice.WaitUntilDone( System.Threading.Timeout.Infinite );    SpFileStream.Close();
}
catch( Exception ex )
{
    MessageBox.Show( ex.Message );
}我发现凡是CCITT_ALaw或CCITT_uLaw,中文引擎都不能正确转换,只有一个wave头,其他格式可以,把上面代码注释去掉,不知道是不是微软的bug?
SAFTCCITT_ALaw_8kHzMono这种格式对我很重要

解决方案 »

  1.   

    Microsoft-Chinese-TTS-51.msi可以到这里下载:http://www.winivr.com/Download/Microsoft-Chinese-TTS-51.msi英文的:http://www.winivr.com/Download/Microsoft-English-TTS-51.msi而且我试过如果用英文的引擎,转换英文可以正确的转换为SAFTCCITT_ALaw_8kHzMono格式的wave文件:Voice.Speak( "<lang langid=\"409\">please input account</lang>", SpeechVoiceSpeakFlags.SVSFlagsAsync );
      

  2.   

    语音朗读开发包
    可以朗读到WAVE文件,有多种格式可选,自己看看吧
    www.smartread.net
      

  3.   

    www.smartread.net
    这是我听过的最烂的TTS了,8年前的水平