类库需要引用:System.Speech.Synthesis;
/// <summary>
/// 微软TTS合成
/// </summary>
/// <param name="messagePlay">需要合成的文字内容</param>
/// <param name="fullFileName">音频保存地址(包括文件名称).mp3格式</param>
/// <returns></returns>
public void MSTTSPlay(string messagePlay,string fullFileName)
{
try
{
MemoryStream ms = new MemoryStream();
Thread thread = new Thread(() =>
{
SpeechSynthesizer ss = new SpeechSynthesizer();
ss.SetOutputToWaveStream(ms);
ss.Speak(messagePlay);
ss.SetOutputToNull();
ss.Dispose();
});
thread.Start();
Thread.Sleep(200);
FileStream fileStream = new FileStream(fileSavePath, FileMode.Create);
ms.WriteTo(fileStream);
ms.Close();
fileStream.Close();
}
catch (AggregateException ex)
{
var sb = new StringBuilder();
foreach (var item in ex.InnerExceptions)
{
var t1 = item.GetType();
sb.AppendLine(t1.Namespace + "." + t1.Name + " " + item.Message);
}
_logger.ErrorFormat("微软TTS合成失败:{0}", sb.ToString());
_logger.ErrorFormat("微软TTS合成失败:{0}", ex);
}
}
IIS需要注意把当前项目的应用程序池修改为:LocalSystem
下载离线语音包:
https://www.microsoft.com/en-us/download/details.aspx?id=27224
MSSpeech_TTS_zh-CN_HuiHui.msi