Не удается заставить текст в речь работать
Я получаю следующее сообщение, когда я пытаюсь выполнить код ниже:
2014-07-28 13: 19: 14.251 MySingleView [3750: 461865] Ошибка инициализации речи: 2147483665
Я делаю что-то неправильно или это ошибка?
Я запускаю это в симуляторе iPad 2 на моем Mac, на котором работает Mavericks, используя Xcode6 - Beta 4.
import UIKit
import AVFoundation
class ViewController: UIViewController {
var voice = AVSpeechSynthesizer()
override func viewDidLoad() {
super.viewDidLoad()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
@IBAction func buttonPushed(sender: UIButton) {
var utterance = AVSpeechUtterance(string:"This is a test")
voice.speakUtterance(utterance)
}
}
Ответы
Ответ 1
Симуляторы iOS 8 не поддерживают перевод текста в речь. Тем не менее, симуляторы iOS 7 по-прежнему поддерживают преобразование текста в речь (по крайней мере, с Xcode 6.1), поэтому, если ваше приложение работает под iOS 7, вы можете протестировать его на своем рабочем столе.
Ответ 2
Как и в XCode 6.0.1, симулятор, похоже, вообще не работает с AVSpeechSynthesizer. Если вы получите сообщение об ошибке вроде этого, это проблема симулятора, а не проблема с программой. Он должен хорошо работать на любом совместимом устройстве iOS.
Перейдите по этой ссылке - https://github.com/brettdidonato/TextToSpeech/blob/master/README.md.
У меня такая же проблема в симуляторе iOS 8.0. Но отлично работает на устройстве iOS.
Ответ 3
Text-to-speech работает с симулятором iOS8.4, а не другими симуляторами 8.X.
Ответ 4
попробуйте это
Swift3
import UIKit
import AVFoundation
class ViewController: UIViewController, AVSpeechSynthesizerDelegate {
override func viewDidLoad() {
super.viewDidLoad()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
@IBAction func buttonPushed(sender: UIButton) {
var utterance = AVSpeechUtterance(string:"This is a test")
utterance.voice = AVSpeechSynthesisVoice(language: "en-US")
var voice = AVSpeechSynthesizer()
voice.delegate = self
voice.speak(utterance)
}
}