AVSpeechUtterance - Swift - 用短语初始化

时间:2014-06-29 02:55:50

标签: swift ios8 xcode6

所以我只是想在Swift中使用AVSpeechSynthesizer。我无法弄清楚如何为AVSpeechUtterance设置短语。

@IBAction func buttonSpeakClicked(sender:UIButton)
    {
        var mySpeechSynthesizer:AVSpeechSynthesizer = AVSpeechSynthesizer()
        var myString:String = "This is the phrase to say"
        var mySpeechUtterance:AVSpeechUtterance = AVSpeechUtterance(string:myString)

        println("\(mySpeechUtterance.speechString)")
        println("My string - \(myString)")

        mySpeechSynthesizer .speakUtterance(mySpeechUtterance)
    }

First println - Nil

第二次打印 - 这是要说的短语

文档说init(字符串字符串:字符串!),但我无法弄清楚把它放到哪里

2 个答案:

答案 0 :(得分:5)

代码很好,语音字符串设置正确。但问题是AVSpeechUtterance在iOS 8 Beta上没有按预期工作。我建议提交错误报告here

代码在iOS 7.1设备和模拟器上运行良好。

答案 1 :(得分:2)

是的,这是一个错误。从iOS8 GM开始,似乎首次尝试让AVSpeechSynthesizer说AVSpeechUtterance会导致沉默。

我的解决方法是让AVSpeechSynthesizer在初始化后立即说出一个单字符的话语。这将是沉默的,之后您的AVSpeechSynthesizer将正常工作。

在Objective-C中:

AVSpeechUtterance *bugWorkaroundUtterance = [AVSpeechUtterance speechUtteranceWithString:@" "];
bugWorkaroundUtterance.rate = AVSpeechUtteranceMaximumSpeechRate;
[self.speechSynthesizer speakUtterance:bugWorkaroundUtterance];