Making a non-instantaneous change with an @IBAction button in Swift
我试图通过单击应用程序中的按钮来更改AVSpeechUtterance的语速属性值。然后,当我按下"讲话"按钮时,我希望此值继续使用。
如果该解释不够清楚,请想象一下:
共有三个按钮:一个,两个和三个。
当用户按下一个时,发声率的值发生变化(第二个和第三个相同)。
然后,在按下前三个按钮之一后,用户按下另一个按钮以激活语音。这种话语将保留速率值并将其应用于语音。
这是我尝试过但无法使用的代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | import UIKit import AVFoundation class SecondViewController: UIViewController { @IBOutlet var minutesLabel: UITextField! @IBOutlet var secondsField: UITextField! func speak(sender: AnyObject) { let speechUtterance = AVSpeechUtterance(string:exampleSpeech) speechSynthesizer.speakUtterance(speechUtterance) } @IBOutlet var result: UILabel! @IBAction func verySlow(sender: UIButton) { let verySlowButtonPressed = true let talkingSpeed = 90 let minutesValue : Double = (minutesLabel.text as NSString!).doubleValue let secondsValue = (secondsField.text as NSString!).doubleValue let secondsToMinutes = secondsValue / 60 let compiledTime = Double(minutesValue) + Double(secondsToMinutes) let resultingWords = Double(compiledTime) * Double(talkingSpeed) let resultCeiling = ceil(resultingWords) result.text ="\\(String(format:"%.0f", resultCeiling)) words" if verySlowButtonPressed { speechUtterance.rate = 0.25 speechUtterance.pitchMultiplier = 0.25 speechUtterance.volume = 0.75 } } @IBAction func speakButton(sender: AnyObject) { speak(exampleSpeech) } |
在
解决此问题的一种方法是在类中创建
类似的东西:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | var rate: Float? var pitchMultiplier: Float? var volume: Float? func speak(sender: AnyObject) { let speechUtterance = AVSpeechUtterance(string:exampleSpeech) if let rate = self.rate { speechUtterance.rate = rate } if let pitchMultiplier = self.pitchMultiplier { speechUtterance.pitchMultiplier = pitchMultiplier } if let volume = self.volume { speechUtterance.volume = volume } speechSynthesizer.speakUtterance(speechUtterance) } @IBAction func verySlow(sender: UIButton) { // ... whatever other code you need here ... self.rate = 0.25 self.pitchMultiplier = 0.25 self.volume = 0.75 } |
不确定,但是这些是语音速率的值,请尝试使用它们。希望对您有所帮助。
iOS 9
非常慢-0.42
较慢-0.5
我的正常-0.53
更快-0.56
iOS早期版本的值有所不同,请在实施解决方案时记住这一点。