2016-04-04 17 views
0

Speech Synthesis schlägt SetVoice() fehl. Alle werden als aktiviert aufgelistet, bis sie ausprobiert werden, und scheitern dann mit den nicht standardmäßigen zwei, die als "deaktiviert" aufgeführt sind.SpeechSyntheses fehlschlägt SelectVoice unter ASP.NET?

HINWEIS: Dies funktioniert bei einer WPF- oder Konsolenanwendung, schlägt jedoch als ASP.NET-App fehl. AUCH: Sprache wird in einem alternativen Thread (Task.Run (() => StartSpeech()) erstellt, da es den Hauptthread für ASP.NET-Anwendungen permanent sperrt (Details siehe No response to a HTTP Get request in WebAPI in .NET 4.5 while using SpeechSynthesis for converting text to speech), jedoch schlägt SelectVoice() fehl sowohl die alternative Thread als auch die Haupt.

Ideen?

 private SpeechSynthesizer speech; //System.Speech.Synthesis 
     var voices = speech.GetInstalledVoices(); 
     //[0]: "Microsoft David Desktop" ["Enabled"] 
     //[1]: "IVONA 2 Emma" ["Enabled"] 
     //[2]: "Microsoft Zira Desktop" ["Enabled"] 

     try 
     { 
      speech.SelectVoice("Microsoft Zira Desktop"); 
     } 
     catch (Exception e) 
     { 
      var p = e; //fails (System.ArgumentException: Cannot set voice. No matching voice is installed or the voice was disabled) 
     } 

     voices = speech.GetInstalledVoices(); 
     //[0]: "Microsoft David Desktop" ["Disabled"] 
     //[1]: "IVONA 2 Emma" ["Enabled"] 
     //[2]: "Microsoft Zira Desktop" ["Disabled"] 

     speech.SpeakAsync(text); 
+1

Hallo Jim, ist es auf Ihrer lokalen Maschine oder in der Produktion fehlgeschlagen? – Thomas

+0

lokale Maschine wo wpf/console apps gut funktionieren. – Jim

+0

Thomas - Sie haben mich über Rechte/Prozesse nachdenken ... neue Info: es schlägt nur unter IIS fehl. Lokal ausgeführt (VS-f5-iis-express) - es funktioniert. ungerade. – Jim

Antwort

0

es stellte sich heraus, das auch Visual Studio IIS Express arbeitete unter, aber nicht unter IIS. von Application auf Local Wechsel machte es funktioniert. es scheint, wie SelectVoice() ist ein rufaktivierter Anruf, bei dem einfach nicht gesprochen wird:

An swer: Ändern der Identität des Anwendungspools (in IIS) in LocalSystem.