2

Windowsサービスとして実行される製品でTAPIを使用して開発を簡素化するために、AddTapi.NETのライセンスを購入しました。Windows GUIおよびコンソールアプリケーションでTAPIを使用し、コードをWindowsサービスに移植することができました。その時点で、TapiCall.SpeakやTapiCall.Play(wavefile)などの音声APIを使用するコードは電話回線で音を生成せず、無音のままであることに気付きました。

私の問題に関連する可能性のある以前の質問がいくつかあります。

質問:Windowsサービスからモデムを介してVoiceを再生すると、WindowsサービスでGUIスレッドを生成することで解決された音声の使用に問題があることが示されました。私はこれを試みましたが、電話でスピーチを聞くことができませんでした。

質問:WindowsサービスでのTapiのアクセス違反は、サービスでのTAPIの初期の問題を示しているようですが、AddTapi製品を使用することで解決されました。チケットには、音声APIの使用については明示的に記載されていません(SAPI)

Visual Studio2010と.NET4.0を使用してC#でプログラミングしています。これをWindows7で動作させようとしています。AddTapiから、Microsoftがセキュリティを変更してWin 2008 Server、Windows Vista、およびWindows7のサービスからの音声サブシステムの使用を禁止することを示す電子メールを受け取りました。記事は、Windows 7にはないかもしれませんが、AddTapiである程度の成功を示しているようです。

私が使用しているメインシステムがWindowsサービス(および子プロセス)であることを考えると、スピーチを機能させるための最良のアプローチと思われるものは何でしょう。SAPIコードをコンソールアプリケーションに配置する場合、ユーザーがコンピューターにアクティブにログオンしていなくても、これを管理できるようにしたいと思います。私のTAPIコードについてグラフィカルなものは何もありません。Article:インタラクティブプロセスを起動してインタラクティブプロセスを生成するのと同様のアプローチを取る必要がありますか?WindowsサービスでTAPIスピーチを使用したサクセスストーリーはありますか?

4

2 に答える 2

1

AddTapi.NET5.0でこの問題を解決しました。バージョン5.0では、WindowsサービスアプリケーションでSpeech API(TapiCall.SpeakおよびTapiCall.Play)を使用できます。別のプロセスを使用する必要はなく、サービスはデフォルトのローカルサービスアカウントで実行できます。

AddTapi.NETを使用しないすべての人にとって、重要なのは、カスタムストリームと通信するSAPI5SpVoiceオブジェクトを使用することです。WindowsサービスでSpAudioまたはSpMMAudioOutオブジェクトをインスタンス化することはできないため、独自のストリームクラスを実装し、SpVoiceの出力をそのストリームに設定する必要があります。

于 2014-11-22T22:05:50.973 に答える
0

私はあなたのプロジェクトと同じ要件を持っていました(AddTapi.NETを使用するWindowsサービスのTAPI)。私も同じ返事をもらいました。別のスレッドでアプリケーションを実行することを推奨する他の投稿をいくつか試したので、ソリューション全体をツールして、コンストラクターですべてのAddTapi構成が発生する単純なページを持つWPFアプリケーションに変換しました。

失敗。

WPFアプリケーションから実行すると、アプリケーションは正常に実行されますが、STAThreadが有効なスレッドでWPFページがインスタンス化された場合、PlayandSpeakは引き続き機能しません。私はこれについての答えをずっと探していましたが、本当に解決策がない(実際の解決策がない)と述べている人以外は何もありません。

アプリケーションを別のプロセスで実行しても、それはうまくいきません。別のスレッドで実行しても機能しないため、このアプリケーションを通常のWindowsアプリとして実行することを検討する必要があります(ログオンが必要になります)。

解決策があればいいのに、ごめんなさい。

于 2012-07-31T14:26:57.443 に答える