повышение производительности синтеза речи

У меня есть 100 кнопок в winform. Каждая кнопка выполняет аналогичное действие, которое заключается в произнесении собственного номера. Скажем, Button60 будет говорить 60, button100 будет говорить 100.

Я использовал эти коды:

SpeechSynthesizer synthesizer = new SpeechSynthesizer();
         ...............

 private void Form1_Load(object sender, EventArgs e)
    {

        seme_comboBox.SelectedIndex = 0;
        dpt_comboBox.SelectedIndex = 0;


        foreach (var button in Controls.OfType<Button>()) 
        {
            button.Click += button_Click;
        }


    }

потом

    private void button_Click(object sender, EventArgs e)
    {
        Button button = (Button)sender;
        string text = button.Name.Substring("button".Length);

        synthesizer.Speak(text);
    }

Но если я нажимаю две кнопки последовательно, то для переключения другой кнопки и для речи требуется не менее 2 или 3 секунд. А также его звук недостаточно громкий. Поэтому мне нужно увеличить производительность действия кнопки в течение небольшой продолжительности. А также я хочу увеличить звуки речи. Как я могу это сделать???


person ImonBayazid    schedule 16.09.2013    source источник


Ответы (1)


Похоже, SpeechSynthesizer блокирует поток пользовательского интерфейса.

Вместо этого вы можете попробовать следующее, используя SpeakAsync() (из http://msdn.microsoft.com/en-us/library/system.speech.Synthes.speechsynthesizer.speakasync.aspx)

Обратите внимание, что вам может понадобиться или не понадобиться строка, которая отменяет все (с комментариями):

private void button_Click(object sender, EventArgs e)
{
    Button button = (Button)sender;
    string text = button.Name.Substring("button".Length);
    synthesizer.SpeakAsyncCancelAll(); // cancel anything that's playing
    synthesizer.SpeakAsync(text);
}

В противном случае вы, вероятно, могли бы запустить синтезатор в другом потоке.

Вы можете управлять громкостью звука с помощью свойства .Volume:

synthesizer.Volume = 100; // maximum volume (range 0-100)
person geedubb    schedule 16.09.2013