Скорость 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;