Я работаю на AVSpeechSynthesizer и пытаюсь передать значения, заданные на слайдере, для громкости, высоты тона и скорости из контроллера представления настроек в контроллер основного вида.
В настройках View Controller, начиная со значений по умолчанию,
var volume : Float = 1.0
var pitch: Float = 1.0
var rate: Float = AVSpeechUtteranceDefaultSpeechRate
И действия ползунка,
@IBAction func volumeSliderDidSlide(_ sender: UISlider) {
volume = sender.value
testLable.text = String(volume)
}
@IBAction func pitchSliderDidSlide(_ sender: UISlider) {
pitch = sender.value
}
@IBAction func rateSliderDidSlide(_ sender: UISlider) {
rate = sender.value
}
В контроллере основного вида,
var ttsSettingsViewController: TTSSettingsViewController!
@IBOutlet weak var textBox: UITextView!
var speechSynthesizer = AVSpeechSynthesizer()
var speechUtterence : AVSpeechUtterance = AVSpeechUtterance(string: "")
override func viewDidLoad() {
super.viewDidLoad()
let storyBoard: UIStoryboard = UIStoryboard(name: "TTS", bundle: nil)
ttsSettingsViewController = storyBoard.instantiateViewController(withIdentifier: "TTSSettingsViewController") as! TTSSettingsViewController
}
@IBAction func didTapSpeech(_ sender: Any) {
if let textBoxText = textBox.text{
speechUtterence = AVSpeechUtterance(string: textBoxText)
speechUtterence.volume = ttsSettingsViewController.volume
speechUtterence.pitchMultiplier = ttsSettingsViewController.pitch
speechUtterence.rate = ttsSettingsViewController.rate
speechSynthesizer.speak(speechUtterence)
}
}
Но используются только значения по умолчанию для громкости, высоты тона и темпа, а не те, которые были установлены на слайдере при изменении.