對於iOS 9和以前版本的OS,AVSpeechUserrance費率不起作用。 我必須做出哪些改變才能讓句子以相同的速度說出來。我需要爲iOS9做什麼其他更改? 似乎乘以6.0的AVSpeechUtterance.rate工作正常。 謝謝!AVSpeechSynthesizer問題的iOS9 AVSpeechUtterance費率
回答
我也看到了與新的XCode編譯後的變化。以下是我從舊到新的速度的映射。如果設備是< = iOS8或> = iOS9,我現在有不同的速度分配。
iOS 8 iOS 9
Very Slow 0 0.42
Slower 0.06 0.5
My Normal 0.15 0.53
Faster 0.23 0.56
這似乎是正確的。你還檢查過iOS7嗎? – CristiCh
我剛剛檢查了iOS 7,它對我來說播放速度要慢一些。我從來沒有意識到這一點。例如,我認爲iOS 7需要約.25才能在iOS 8中匹配.015。我提供+/- 3速度控制,因此用戶可以處理這個小差異。 –
對蘋果來說,這真的沒有考慮到,我的應用程序專爲殘疾人士設計,速度必須在所有設備/ iOS版本上完全相同。任何人都知道從版本到版本的確切轉換? –
我也碰到過這個問題幾次了。鑑於變化到iOS的頻率最近,我將根據用戶在AppDelegate.swift
運行,像這樣的IOS版本默認語速:
// iOS speech synthesis is flakey between 8 and 9, so set default utterance rate based on iOS version
if NSProcessInfo().isOperatingSystemAtLeastVersion(NSOperatingSystemVersion(majorVersion: 8, minorVersion: 0, patchVersion: 0)) {
NSUserDefaults.standardUserDefaults().setFloat(0.15, forKey: "defaultSpeechRate")
if NSProcessInfo().isOperatingSystemAtLeastVersion(NSOperatingSystemVersion(majorVersion: 9, minorVersion: 0, patchVersion: 0)) {
NSUserDefaults.standardUserDefaults().setFloat(0.53, forKey: "defaultSpeechRate")
}
} else {
NSUserDefaults.standardUserDefaults().setFloat(0.5, forKey: "defaultSpeechRate")
}
在我的喜好的場景,我添加了一個滑塊來調整速度:
@IBOutlet var speechRateSlider: UISlider!
在viewDidLoad
,添加以下:
// Set speech rate
speechRateSlider.value = NSUserDefaults.standardUserDefaults().floatForKey("defaultSpeechRate")
speechRateSlider.maximumValue = 1.0
speechRateSlider.minimumValue = 0.0
speechRateSlider.continuous = true
speechRateSlider.addTarget(self, action: "adjustSpeechRate:", forControlEvents: UIControlEvents.ValueChanged)
我也綁一個動作到UISlider
:
@IBAction func adjustSpeechRate(sender: AnyObject) {
NSUserDefaults.standardUserDefaults().setFloat(speechRateSlider.value, forKey: "defaultSpeechRate")
speechRateSlider.setValue(NSUserDefaults.standardUserDefaults().floatForKey("defaultSpeechRate"), animated: true)
print(NSUserDefaults.standardUserDefaults().floatForKey("defaultSpeechRate"))
}
鑑於跨設備和iOS漂浮在這麼多版本的意外的行爲,我選擇走這條路,而不是硬編碼到我的應用程序。
- 1. AVSpeechSynthesizer不能iOS9
- 2. 問題AVSpeechUtterance
- 3. AVSpeechSynthesizer postUtterance延遲時間問題
- 4. 如何在swift中暫停和恢復AVSpeechSynthesizer/AVSpeechUtterance?
- 5. HTTPS問題iOS9
- 6. AVSpeechSynthesizer不暫停
- 7. Watchkit OS 2,AVSpeechSynthesizer
- 8. AVSpeechSynthesizer錯誤AudioSession
- 9. iOS9中的UIKeyboardWillShowNotification問題
- 10. ios9的facebook登錄問題
- 11. IOS9和uiwebview的問題?
- 12. 如何一致地停止AVAudioSession後AVSpeechUtterance
- 13. AVSpeechSynthesizer didFinishSpeechUtterance沒有被調用
- 14. ios9 UICollectionView問題,旋轉後
- 15. iOS9:HealthKit問題與requestAuthorizationToShareTypes
- 16. ios9 - 問題與裁剪CVImageBuffer
- 17. Sprite Kit的主要iOS9性能問題
- 18. iOS 6 - 使用AVSpeechSynthesizer發行
- 19. AVSpeechSynthesizer繼續說不工作
- 20. 使用iPhone揚聲器AVSpeechSynthesizer
- 21. AVSpeechSynthesizer對音頻文件的話語
- 22. ios9的旋轉支持問題?
- 23. Swift和iOS9中的Facebook登錄問題
- 24. Ionic和ios9的bug和問題
- 25. 如何限制話題的消費率?
- 26. 多個裝運日期的UPS費率API問題
- 27. Facebook登錄問題iOS9 +解析
- 28. IOS9 webapp方向問題 - Sencha版本1.0
- 29. 費率計費計算
- 30. 效率問題
以什麼方式不適用於iOS9? – Fogmeister
它講得慢得多,所以我把iOS9的速度乘以6.0。但我不喜歡這個解決方案。 – CristiCh
我不會對任何比率使用相同的乘數。合成器之間的差異可能是6倍速,但是這兩個速率開始收斂得越接近1.請參閱下面的Ernie Thomason的答案。 – Gregarious