2

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

4

4 に答える 4

0

Windows 更新プログラムがインストールされていることを確認してください。

更新なしで Windows 7 のインストールを回避しようとしましたが、SpeechSynthesizer.SelectVoice(SomeVoiceName) のようなものが失敗しました。

唯一の解決策は、Windows の自動更新プログラムを入手することでした。どのアップデートで問題が正確に解決されたかはわかりません。

しかし、更新せずに Windows 7 を搭載した VM でアプリをテストすると、この問題に何度も遭遇します。

于 2021-02-09T21:37:20.403 に答える