AVSpeechSynthesizer 有一个相当简单的 API,不支持保存到内置音频文件。
我想知道是否有办法解决这个问题 - 也许在无声播放时记录输出,以便稍后播放?或者更有效的东西。
这在 iOS 13 中终于成为可能AVSpeechSynthesizer
现在有写(_:toBufferCallback:) https://developer.apple.com/documentation/avfoundation/avspeechsynthesizer/3141659-write:
let synthesizer = AVSpeechSynthesizer()
let utterance = AVSpeechUtterance(string: "test 123")
utterance.voice = AVSpeechSynthesisVoice(language: "en")
var output: AVAudioFile?
synthesizer.write(utterance) { (buffer: AVAudioBuffer) in
guard let pcmBuffer = buffer as? AVAudioPCMBuffer else {
fatalError("unknown buffer type: \(buffer)")
}
if pcmBuffer.frameLength == 0 {
// done
} else {
// append buffer to file
if output == nil {
output = AVAudioFile(
forWriting: URL(fileURLWithPath: "test.caf"),
settings: pcmBuffer.format.settings,
commonFormat: .pcmFormatInt16,
interleaved: false)
}
output?.write(from: pcmBuffer)
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)