Я пытаюсь преобразовать записанный аудиофайл в необработанные данные PCM типа [Double]. Я нашел способ загрузки и конвертирования аудио в PCM данных типа [float32], как это:Преобразование аудио в необработанные данные PCM типа [Double]
// load audio from path
let file = try! AVAudioFile(forReading: self.soundFileURL)
// declare format
let format = AVAudioFormat(commonFormat: .PCMFormatFloat32, sampleRate: file.fileFormat.sampleRate, channels: 1, interleaved: false)
// initialize audiobuffer with the length of the audio file
let buf = AVAudioPCMBuffer(PCMFormat: format, frameCapacity: UInt32(file.length))
// write to file
try! file.readIntoBuffer(buf)
// copy to array
let floatArray = Array(UnsafeBufferPointer(start: buf.floatChannelData[0], count:Int(buf.frameLength)))
Проблема заключается в том, мне нужны данные как [Double] и AVAudioPCMBuffer() только знает .PCMFormatFloat32
. Кто-нибудь знает обходное решение? Спасибо.
Что происходит, когда вы 'readIntoBuffer()'? Меня устраивает. Я обновил вопрос, чтобы показать весь код. –
Спасибо за ответ, решили мою проблему! Я не понял, что все еще использовал AVAudioPCMBuffer. – user967493