Скорость AVSpeechUterrance в iOS 8

У меня был код в iOS 7 для использования синтеза речи, все прошло хорошо. Чтобы определить скорость передачи AVSpeechUtterance, я использовал следующую формулу

float speakSpeedRate = (AVSpeechUtteranceMinimumSpeechRate + AVSpeechUtteranceDefaultSpeechRate)*0.5;

но кажется, по крайней мере, на моем iPhone 5S, что под iOS 8 AVSpeechUtteranceDefaultSpeechRate намного быстрее, чем на iOS 7.

Кто-нибудь испытал это?

EDIT. Я прошел через форумы Apple dev, кажется, что другие столкнулись с этой ошибкой, но это может зависеть от других параметров, таких как язык...

Ответ 1

Да. TTS на iOS8 имеет несколько проблем (и, imho, сильно сломан): он не работает в симуляторе, у него проблемы с приглушенными голосами, требуются настройки в доступности, скорость отличается от iOS7 и т.д. Просто найдите SO для тегов "ios8" и "AVSpeechSynthesizer" и найдите пакет ошибок!

Решение? Дождитесь обновления - и продолжайте размещать радары.

Обход? Измерьте время, чтобы говорить известную фразу на iOS7 и iOS8, и исправьте фактическую скорость для iOS8.

upd dec-2014: XCode 6.2 beta2 разрешила проблемы с TTS в симуляторе и скорости TTS.

Ответ 2

Такая же проблема здесь. Поэтому я обработал его, придав другое значение. Кажется, что iOS8 удваивает скорость.

if (floor(NSFoundationVersionNumber) > NSFoundationVersionNumber_iOS_7_1)
{
    speechUtterance.rate = 0.15;
}else{
    speechUtterance.rate = 0.3;
}

Ответ 3

Да, я заметил это, я изменил свою речь. Скорость голоса float speechSpeed = 0.1000;