Возможно, я понял вашу проблему, даже если подробности не предоставлены: вы не можете принять во внимание новые значения rate
и pitchMultiplier
, когда речь идет .
Чтобы объяснить следующие подробности, я прочитал этот пример , который содержит фрагменты кода (ObjC, Swift) и иллюстрации.
- Создайте свои
AVSpeechUtterance
экземпляры с их свойствами rate
и pitchMultiplier
.
- Добавьте каждый из них в массив, который будет представлять очередь для произнесения речи.
- Сделать цикл внутри предыдущей очереди с синтезатором, чтобы прочитать все элементы.
Теперь, , если вы хотите изменить значения свойств в режиме реального времени , см. Следующие шаги после перемещения одного из ваших ползунков:
- Получите текущее речевое высказывание благодаря протоколу
AVSpeechSynthesizerDelegate
.
- Запустите метод синтезатора
stopSpeaking
, который удалит из очереди высказывания, которые еще не были произнесены.
- Создание предыдущих удаленных высказываний с новыми значениями свойств.
- Повторите шаги 2 / и 3 /, чтобы возобновить работу с этими обновленными значениями.
Синтезатор ставит в очередь всю информацию для произнесения задолго до того, как вы запросите новые значения, которые не влияют на сохраненные высказывания: вы должны удалить и воссоздать высказывания с их новыми значениями свойств для произнесения речи.
Если приведенный выше пример кода недостаточен, я предлагаю взглянуть на подробное резюме этого видео WWDC , касающееся AVSpeechSynthesizer
.