Синтезатор речи (System.Speech.Synthesis.SpeechSynthesizer) — изменение громкости или скорости во время выполнения

string TextToBeRead = "My sample text";
SpeechSynthesizer speaker = new SpeechSynthesizer();
speaker.Rate = 5;
speaker.Volume = 70;
speaker.SpeakAsync(TextToBeRead);

Есть ли способ изменить скорость или громкость, когда динамик начинает говорить? Я попытался изменить его во время выполнения, но вывод по-прежнему использует старую скорость и объем. Спасибо.


person ShipOfTheseus    schedule 23.02.2015    source источник
comment
возможный дубликат .NET Text To Speech Volume   -  person stuartd    schedule 23.02.2015
comment
По связанному вопросу, Пока текст читается, громкость изменить нельзя   -  person stuartd    schedule 23.02.2015


Ответы (2)


Нет, вы не можете изменить его во время чтения, но вы можете подписаться на SpeakProgress, чтобы вы могли получить CharacterPosition и перезапустить разговор с новой скоростью и громкостью в заданной позиции

person Guillaume    schedule 23.02.2015

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

Вам потребуется использовать SpeakSsmlAsync в SpeechSynthesizer, чтобы это работало.

person Eric Brown    schedule 23.02.2015