0
    Process process;

    // Read Contetnt Mouse click event
    private SpeechSynthesizer readerSpeak;
    private void btnSpeakContent_Click(object sender, EventArgs e)
    {
        if(richTextBoxThanglish.Text.Trim() == string.Empty)
        {
            if (process.HasExited == false)
                process.Kill();
            MessageBoxWrapper.ShowWarning("Textbox is Empty.", "ABTS", "Textbox is Empty.");
            process = Process.Start("narrator.exe");
        }
        else
        {
            if (process.HasExited == false)
                process.Kill();

            readerSpeak = new SpeechSynthesizer();                
            readerSpeak.SpeakAsync(richTextBoxThanglish.Text.ToString());

            if (process.HasExited == true)
                process = Process.Start("narrator.exe");
        }
    }       

    private void btnStopSpeak_Click(object sender, EventArgs e)
    {
        if (process.HasExited == true)
            process = Process.Start("narrator.exe");

        if (!(readerSpeak == null))
        {                
            readerSpeak.Dispose();
        }
    }

上記のプログラムには、speakContent と stop_speak という 2 つのボタンがあるとします。narrator.exe プロセスを実行して Windows ナレーターを取得します。音声を重ねずにリッチテキストボックスのコンテンツを読み上げたいです。Synchronos speak については知っていますが、speakContent が終了するまでアプリを一時停止します。SpeakAsyn() でこれが必要です。音声ナレーターにサイレントを追加する方法はありますか? 実際には、3秒後にそのテキストスピーチが必要です。「System.Threading.Thread.Sleep(3000);」を使用しました。それでもテキストの重複は発生します。つまり、ナレーターと文字列から音声への再生が一緒に再生されます。

助けてください。

4

1 に答える 1