在Windows服务中使用TAPI语音

我已经购买了AddTapi.NET许可证来简化我的开发工作,使用TAPI作为Windows服务运行的产品。 我能够在Windows GUI和控制台应用程序中使用TAPI,并将代码移植到我的Windows服务中。 此时,我注意到使用TapiCall.Speak或TapiCall.Play(wavefile)等语音API的代码在电话线上没有产生声音,并保持沉默。

以前有几个问题可能与我的问题有关。

问题:从Windows服务通过调制解调器播放语音表示使用在Windows服务中产生GUI线程解决的语音问题。 我试图做到这一点,但没有成功的通过电话听到的演讲。

问题:Windows服务中的Tapi访问冲突似乎表明服务中的TAPI存在初始问题,但是使用AddTapi产品解决了这个问题。 虽然(SAPI)票并未明确提及语音API的使用,

我使用Visual Studio 2010和.NET 4.0在C#中进行编程。 我试图让这个在Windows 7上工作。我收到来自AddTapi的电子邮件,表示Microsoft改变了安全性,禁止在Win 2008 Server,Windows Vista和Windows 7中使用语音子系统。上述文章似乎表明与AddTapi的一些成功,虽然它可能不在Windows 7上。

鉴于我正在使用的主要系统是Windows服务(以及subprocess),看起来似乎是使语音正常工作的最佳方法。 如果我将SAPI代码放在控制台应用程序中,我希望在不需要用户主动login计算机的情况下进行pipe理。 我的TAPI代码没有任何graphics。 我应该采取类似于文章的方法:启动一个互动过程并产生一个互动过程? 在Windows服务中是否有使用TAPI语音的成功案例?

我们在AddTapi.NET 5.0中解决了这个问题。 5.0版本可以在Windows服务应用程序中使用Speech API(TapiCall.Speak和TapiCall.Play)。 无需使用单独的进程,并且服务可以在默认的本地服务帐户下运行。

对于不使用AddTapi.NET的用户,关键是使用SAPI5 SpVoice对象与自定义流对话。 您不能在Windows服务中实例化SpAudio或SpMMAudioOut对象,因此您需要实现自己的流类并将SpVoice的输出设置为该流。

我和你的项目有相同的要求(使用AddTapi.NET的Windows服务中的TAPI)。 我也收到了同样的回应。 我尝试了一些其他职位,建议我在一个单独的线程运行应用程序,所以我工具我的整个解决方案,并将其转换为WPF应用程序与一个简单的页面,永远不会出现,但所有的AddTapi配置发生在构造函数。

没有成功。

从WPF应用程序运行时,应用程序运行正常,但是当WPF页面在已启用STAThread的线程中实例化时,Speak仍然不起作用。 我一直在寻找答案,但除此之外别无其他,说实在没有解决办法(没有真正的解决办法)。

通过一个独立的进程运行我的应用程序根本不会削减它,因为运行在一个单独的线程将无法正常工作,或者我将不得不考虑运行这个应用程序作为一个普通的Windows应用程序(将需要登录)。

希望我有一个解决方案,对不起。