AVSpeechSynthesizer播放声音与电话通话扬声器,而不是底部扬声器



我创建了一个函数来读取文本并在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
}

相关内容

  • 没有找到相关文章

最新更新