如何解决AVAudioFile 写入不起作用 Swift iOS 14
我有以下功能:
private func getPCMBuffer(utterance: AVSpeechUtterance,completion: @escaping (Result<AVAudioPCMBuffer,Failures>) -> Void
) {
speechSynthesizer.write(utterance) { (buffer: AVAudioBuffer) in
guard let pcmBuffer = buffer as? AVAudioPCMBuffer else {
fatalError("unknown buffer type: \(buffer)")
}
completion(.success(pcmBuffer))
}
completion(.failure(.failed))
}
它返回给我一个 AVAudioPCMBuffer。我已验证我传递的话语正确。
当我尝试将此 AVAudioPCMBuffer 写入本地 URL 时出现问题,如下所示:
getPCMBuffer(utterance: speechUtterance) { result in
switch result {
case .success(let buffer):
var settings: [String : Any] = [:]
let savePathUrl: URL = URL(fileURLWithPath: NSHomeDirectory() + "/Documents/audioFile.caf")
settings[AVFormatIDKey] = kAudioFormatMPEG4AAC
settings[AVAudioFileTypeKey] = kAudioFileCAFType
settings[AVSampleRateKey] = buffer.format.sampleRate
settings[AVNumberOfChannelsKey] = 2
settings[AVLinearPCMIsFloatKey] = (buffer.format.commonFormat == .pcmFormatInt32)
do {
let tempFile = try AVAudioFile(forWriting: savePathUrl,settings: settings,commonFormat: buffer.format.commonFormat,interleaved: buffer.format.isInterleaved)
try tempFile.write(from: buffer)
} catch {
print(error)
}
case .failure(let failure):
print(failure.localizedDescription)
}
}
我遇到以下错误:CABufferList.h:179:BytesConsumed: ASSERTION FAILURE [(nBytes mDataByteSize) != 0 is false]:
在我尝试做的那一行:
try tempFile.write(from: buffer)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。