我正在做一个语音合成项目,我决定尝试使用 Microsoft.Speech 命名空间而不是内置的 System.Speech 命名空间,因为 Microsoft 没有修复这里的内存泄漏,并建议使用 Microsoft.Speech 作为解决方法。
当我运行下面的程序时,NullReferenceException
当它调用GetInstalledVoices
.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.Speech.Synthesis;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
SpeechSynthesizer synth = new SpeechSynthesizer();
synth.GetInstalledVoices();
}
}
}
当我运行下一个程序时,UnauthorizedAccessException
当它调用Speak
.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.Speech.Synthesis;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
SpeechSynthesizer synth = new SpeechSynthesizer();
synth.Speak("exception");
}
}
}
我在 Windows 8 x64 上运行 VS Express 2012,并且项目配置为 x64。我为 Microsoft 语音安装了 x64 运行时和 SDK,并从http://www.microsoft.com/en-us/download/details.aspx?id=27224安装了 en-us 语言包。我什至尝试下载 x86 运行时和 SDK 并将我的项目更改为 x86,但这会导致PlatformNotSupportedException
.
我是否缺少其他一些安装,或者我的平台不支持 Microsoft.Speech 命名空间?如果我更改using Microsoft.Speech.Synthesis
为using System.Speech.Synthesis
,除了我提到的内存泄漏之外没问题,我现在可能可以摆脱它,因为这是一个爱好应用程序,不是为了工作。