私は音声合成プロジェクトに取り組んでいます。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 speech 用の 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
前述のメモリ リークを除けば問題ありません。これは仕事用ではなく趣味用のアプリケーションなので、今のところ問題はないと思います。