【发布时间】:2022-09-28 16:02:11
【问题描述】:
我们需要对AVSpeechSynthesizer 的输出进行音频处理。所以我们开始使用AVSpeechSynthesizer 类的write 方法在顶部应用处理。其中。我们目前拥有的:
var synthesizer = AVSpeechSynthesizer()
var playerNode: AVAudioPlayerNode = AVAudioPlayerNode()
fun play(audioCue: String){
let utterance = AVSpeechUtterance(string: audioCue)
synthesizer.write(utterance, toBufferCallback: {[weak self] buffer in
// We do our processing including conversion from pcmFormatFloat16 format to pcmFormatFloat32 format which is supported by AVAudioPlayerNode
self.playerNode.scheduleBuffer(buffer as! AVAudioPCMBuffer, completionCallbackType: .dataPlayedBack)
}
}
在 iOS 16 之前,所有这些都运行良好,但在 iOS 16 中,我们开始遇到此异常:
[AXTTSCommon] TTSPlaybackEnqueueFullAudioQueueBuffer: error -66686 enqueueing buffer
不确定此异常的确切含义。因此,我们正在寻找一种解决此异常的方法,或者可能是一种更好的播放缓冲区的方法。
更新:
创建了一个空项目进行测试,如果使用空块调用 write 方法会生成以下日志:
-
如果某些东西正常工作并且 iOS 16 破坏了它,请提交错误报告。
-
我在反馈助手上做过,但出于某种原因,Apple 不想做出反应,甚至不想承认它
-
苹果通常不会“做出反应”或“承认”任何事情。你已经做了你能做的,这很好!现在球在苹果的球场上。
-
是的,我的期望并不高。我在 ios 15 发布之前也报告了一个问题,他们仍然没有对此作出回应。这就是为什么这次我正在寻求社区的帮助
标签: ios swift xcode avfoundation avspeechsynthesizer