我创建了一个函数来读取文本并在iPhone的底部扬声器上播放,因为底部音量高于电话扬声器,但它可以在低音量的电话扬声器上播放。
@discardableResult
func speechSentence(_ text: String) -> Bool {
var utterance: AVSpeechUtterance!
let synthesizer = AVSpeechSynthesizer()
utterance = AVSpeechUtterance(string: text)
utterance.voice = AVSpeechSynthesisVoice(language: "en-US")
utterance.rate = AVSpeechUtteranceDefaultSpeechRate
synthesizer.speak(utterance)
return true
}
项目中没有任何其他代码或配置。
如何解决这个问题?
我找到问题了。我也必须配置AVAudioSession
。我只是在我的代码中添加了下面一行,它就工作了。
try? AVAudioSession.sharedInstance().setCategory(.playback, mode: .voicePrompt, options: [])
最终代码是:
@discardableResult
func speechSentence(_ text: String) -> Bool {
try? AVAudioSession.sharedInstance().setCategory(.playback, mode: .voicePrompt, options: [])
var utterance: AVSpeechUtterance!
let synthesizer = AVSpeechSynthesizer()
utterance = AVSpeechUtterance(string: text)
utterance.voice = AVSpeechSynthesisVoice(language: "en-US")
utterance.rate = AVSpeechUtteranceDefaultSpeechRate
synthesizer.speak(utterance)
return true
}