AVSpeechSynthesizer 和 AirPlay — 音频设备休眠?

Posted

技术标签:

【中文标题】AVSpeechSynthesizer 和 AirPlay — 音频设备休眠?【英文标题】:AVSpeechSynthesizer and AirPlay — Audio Device Sleeping? 【发布时间】:2016-01-29 21:28:43 【问题描述】:

如果我使用 AVSpeechSynthesizer 朗读一些文本,它在设备上可以正常工作,但一旦我使用 AirPlay,语音的开头就会被切断,除非之前刚刚说过一些话。

音频设备似乎要进入睡眠状态。

下面是我的代码

let synthesizer = AVSpeechSynthesizer()

func speakCall(call: (letter: String, number: Int)) -> Void 
    for  _ in 1...2  // Speak the message twice
        let utterance = AVSpeechUtterance(string: "\(call.letter), \(call.number)")
        utterance.postUtteranceDelay = 0.15
        synthesizer.speakUtterance(utterance)
    

【问题讨论】:

【参考方案1】:

您可以告诉 AVAudioPlayer 播放静音,这将导致音频设备不休眠。

let silence = NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource("silence", ofType: "mp3")!)
var silencePlayer: AVAudioPlayer?
try? silencePlayer = AVAudioPlayer(contentsOfURL: silence)
silencePlayer?.numberOfLoops = -1
silencePlayer?.play()

【讨论】:

以上是关于AVSpeechSynthesizer 和 AirPlay — 音频设备休眠?的主要内容,如果未能解决你的问题,请参考以下文章

后台模式下的 AVSpeechSynthesizer

音频文件的 AVSpeechSynthesizer 话语

Avspeechsynthesizer 语音音频文件,UILocalNotification

是否可以使用 avspeechsynthesizer 保存音频?

[iOS]AVSpeechSynthesizer语音合成

每当使用 AVSpeechSynthesizer 读取文本时,仪器都会报告内存泄漏