AVSpeechUtterance レートは、iOS 9 とそれ以前のバージョンの OS では同じようには機能しません。文が同じ速度で話されるようにするには、これを変更する必要があります。iOS9 用に他に必要な変更はありますか? AVSpeechUtterance.rate に 6.0 を掛けるとうまくいくようです。ありがとうございました!
2959 次
2 に答える
12
また、新しい 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
于 2015-10-02T19:31:04.257 に答える
2
私もこの問題に何度か遭遇しました。最近の iOS の変更頻度を考慮して、ユーザーが実行している iOS のバージョンに基づいて、次のAppDelegate.swift
ようにデフォルトの読み上げ速度を設定しました。
// 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 が存在することを考慮して、アプリにハードコードするのではなく、この方法を選択しました。
于 2015-12-09T02:40:31.187 に答える