首先需要引入命名空间System.Speech.Synthesis,代码如下:

using (var speechSyn = new SpeechSynthesizer())
{
speechSyn.Volume = ;//语速
speechSyn.Rate = -;//音量 speechSyn.SetOutputToDefaultAudioDevice();
speechSyn.SetOutputToWaveFile(fullFileName);//"D:\\Record.wav"
speechSyn.Speak(message);
}

这段代码在winform  exe执行没有问题,但部署到iis上就会报异常:

  现在无法开始异步操作。异步操作只能在异步处理程序或模块中开始,或在页生存期中的特定事件过程中开始。如果此异常在执行 Page 时发生,请确保 Page 标记为 <%@ Page Async=\"true\" %>。此异常也可能表明试图调用“异步无效”方法,在 ASP.NET 请求处理内一般不支持这种方法。相反,该异步方法应该返回一个任务,而调用方应该等待该任务。

接下来对代码进行改进:

try
{
var task = Task.Run(() =>
{
using (var speechSyn = new SpeechSynthesizer())
{
speechSyn.Volume = ;//语速
speechSyn.Rate = -;//音量 speechSyn.SetOutputToDefaultAudioDevice();
speechSyn.SetOutputToWaveFile(fullFileName);//"D:\\Record.wav"
speechSyn.Speak(message);
}
});
Task.WaitAll(task);
}
catch (AggregateException ae)
{
var sb = new StringBuilder();
foreach (var item in ae.InnerExceptions)
{
var t = item.GetType();
sb.AppendLine(t.Namespace + "." + t.Name + " " + item.Message);
}
System.IO.File.AppendAllText(Server.MapPath("~/a.txt"), sb.ToString());
}

发现能正常生成音频文件,但是文件为0kb,文件异常信息为:

  System.InvalidOperationException 系统上未安装语音,或没有当前安全设置可用的语音。

接下来排查各种原因:

1.文件夹权限问题,添加各种用户权限仍然无效。

2.声卡问题,但发现winform程序可以生成语音文件。

3.iis线程释放问题,因为是异步操作,让当前线程休眠n秒任然不行。

是权限问题:

 把应用程序池的进程标识改成LocalSystem,能正常生成语音文件了。

最新文章

  1. 08.01 签到! js 作用域
  2. dede模板完全控制攻略
  3. office 2003和office 2013同时安装使用的问题
  4. 仿jQuery中undelegate()方法功能的函数
  5. OllyDbg 使用笔记 (二)
  6. js中constructor的作用
  7. thinkphp这样玩关联查询(实例教会你)
  8. linux的简单命令 网络配置
  9. HOMER | MEME | 转录因子的靶基因预测
  10. WordPress版微信小程序开发系列(一):WordPress REST API
  11. UE4的AI学习(1)——基本概念
  12. test4
  13. python基础之 025 模块加载与import的使用
  14. 吴裕雄 python神经网络 手写数字图片识别(5)
  15. html 原生tab切换js
  16. java 基础--switch--003
  17. 洛谷P3975 跳房子 [DP,单调队列优化,二分答案]
  18. Olesya and Rodion (思维)
  19. Java时间类总结
  20. Linux内核实践之工作队列【转】

热门文章

  1. JDK-8不是有效的Win32应用程序
  2. C++中的浅拷贝和深拷贝
  3. [leetcode]242. Valid Anagram验证变位词
  4. spring框架中工厂方法的创建和销毁
  5. vue2.0学习小列子
  6. golang开发集训营
  7. Golang之go 命令用法
  8. linux中的hosts文件
  9. 还在手工制作APP规范文档?这款设计神器你不容错过
  10. 4.spring对象的创建(静态工厂 实例工厂 泛型,嵌套类型)