首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Windows服务中使用TAPI语音

在Windows服务中使用TAPI语音
EN

Stack Overflow用户
提问于 2012-07-24 06:20:55
回答 2查看 869关注 0票数 2

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

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

Question: Playing Voice over a modem from a Windows service指出了一个使用语音的问题,该问题已通过在Windows服务中派生GUI线程来解决。我试图这样做,但没有成功地在电话中听到演讲。

Question: Access violation with Tapi in Windows service似乎表明服务中的TAPI存在初始问题,但通过使用AddTapi产品已得到解决。票据没有明确提到speech API的使用(SAPI)

我使用Visual Studio2010和.NET 4.0在C#中编程。我正在尝试让它在Windows7上运行。我收到了一封来自AddTapi的电子邮件,指出微软更改了安全性,禁止使用Win2008Server、Windows Vista和Windows7中的服务的语音子系统。上面的文章似乎表明AddTapi取得了一些成功,尽管它可能不在Windows7上。

假设我使用的主系统是Windows服务(和子进程),那么让语音工作的最佳方法似乎是什么。如果我将SAPI代码放在控制台应用程序中,我希望在不需要用户主动登录到计算机的情况下对其进行管理。我的TAPI代码没有任何图形化内容。我是否应该采用类似于Article: Launching an interactive process的方法,并生成一个交互式进程?有没有在Windows服务中使用TAPI speech的成功案例?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-11-23 06:05:51

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

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

票数 1
EN

Stack Overflow用户

发布于 2012-07-31 22:26:57

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

没有成功。

当从WPF应用程序运行时,该应用程序可以正常运行,但是当WPF页面在支持STAThread的线程中实例化时,Play and Speak仍然不能工作。我一直在寻找这个问题的答案,但除了其他人之外,没有其他人说真的没有解决方案(没有真正的解决方案)。

通过单独的进程运行我的应用程序根本不会切断它,而且由于在单独的线程中运行也不起作用,我将不得不考虑将此应用程序作为常规的windows应用程序运行(将需要登录)。

真希望我能有个解决方案,抱歉。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11621400

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档