1

長年の読者、初めてのポスター。

Text to Speech 操作を実行するために、C# .Net 3.5 で Windows サービスを開発しています。

System.Speech (Microsoft Speech API 3.x) を使用しています。

サービスを Win2008 x64 サーバーにデプロイしましたが、次の例外がスローされます。

System.InvalidOperationException: No voice installed on the system or none available with the current security setting.
   at System.Speech.Internal.Synthesis.VoiceSynthesis.Speak(Prompt prompt)
   at System.Speech.Synthesis.SpeechSynthesizer.Speak(Prompt prompt)
   at System.Speech.Synthesis.SpeechSynthesizer.Speak(String textToSpeak)

サービスはドメイン アカウントで実行されています。サービスを自分の個人用ドメイン アカウント (かなり高い特権を持つ) で実行するように変更すると、すべてが完全に機能します (そのため、音声 [Anna] が確実にインストールされます)。したがって、セキュリティ上の問題であることは間違いありません。

これを機能させるには、他のドメイン アカウントにどのようなアクセス許可/変更を加える必要がありますか?

また、MSSQL データベースの Windows 認証に使用されるため、この特定のユーザーである必要があります。

前もって感謝します。

4

4 に答える 4

1

C:\windows\system32\config\systemprofile\appdata\roaming簡単な修正:サービスが実行されているのと同じユーザーに読み取り/書き込みアクセスを許可します。

詳細情報: Windows 10 Framework 4.6.2 でテスト済み: Microsoft Speech では、ファイルを保存する ...\roaming\Microsoft\Speech フォルダーを作成するために、"roaming" フォルダーへのファイルの読み取り/書き込みアクセスが必要です。

サービス ユーザーが、次のレジストリ キーへの読み取り/書き込みアクセス権を持つグループのメンバーでない場合は、これらの権限も追加する必要がある場合があります。

以下では、32 ビット アプリの場合は WOW6432Node を含め、64 ビット アプリの場合は省略します。

HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\SPEECH\Voices\Tokens(ボイス名)

例: HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\SPEECH\Voices\Tokens\TTS_MS_EN-US_DAVID_11.0

と:

HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\SPEECH\Voices\Tokens(VOICE NAME)\Attributes

例: HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\SPEECH\Voices\Tokens\TTS_MS_EN-US_DAVID_11.0\Attributes

これらの変更を行うには、これらのレジストリ キーの所有者を TrustedInstaller からユーザーまたは管理者グループに切り替える必要がある場合があります。

アプリケーションが IIS で実行されている場合は、アプリケーション プール ユーザーに上記の権限を追加します。

于 2014-02-20T14:52:17.310 に答える
0

x64 OS では、これは AnyCPU ビルド構成が原因です。x86 ビルド構成に切り替えると、動作するはずです。

于 2015-10-22T19:32:11.983 に答える