Я работаю над проектом Swift IOS, в котором мне нужно принимать данные с микрофона, но я получаю значения, например, в виде буфера PCM, B [82,90, -63], я хочу знать,Какие амплитуды или напряжения создают звуковой сигнал?
Как AVKIT обрабатывает входной звук в буфер PCM.
Я провел исследование в Google и внедрил функцию инверсии фазы в буфере ввода, но не знаю, какэто на самом деле работает, как в журнале, я получаю значения B [82,93, -68].
do
{
let audioFile = try AVAudioFile(forWriting: URLFor(filename: "my_file.caf")!, settings:(targetFormat?.settings)!)
engine.inputNode.installTap(onBus: 0, bufferSize: 1024, format: format, block: { (buffer: AVAudioPCMBuffer, time:AVAudioTime) -> Void in
do {
try audioFile.write(from: buffer)
} catch let error as NSError {
NSLog("Error writing %@", error.localizedDescription)
}
})
self.engine.prepare()
self.startEngine()
}catch{
}
Код сдвига фазы
do {
let inFile: AVAudioFile = try AVAudioFile(forReading: URLFor(filename: "my_file.caf")!)
let frameCount: AVAudioFrameCount = UInt32(inFile.length)
let outFile: AVAudioFile = try AVAudioFile(forWriting: URLFor(filename: "my_file1.caf")!, settings: (targetFormat?.settings)!)
let forwardBuffer: AVAudioPCMBuffer = AVAudioPCMBuffer(pcmFormat: targetFormat!, frameCapacity: frameCount)!
let invertBuffer: AVAudioPCMBuffer = AVAudioPCMBuffer(pcmFormat: targetFormat!, frameCapacity: frameCount)!
try inFile.read(into: forwardBuffer)
let frameLength = forwardBuffer.frameLength
invertBuffer.frameLength = frameLength
print(forwardBuffer.frameLength)
var floatArray = Array(UnsafeBufferPointer(start: forwardBuffer.floatChannelData?[0], count:Int(forwardBuffer.frameLength)))
for i in 0..<floatArray.count{
invertBuffer.floatChannelData!.pointee[i] = -floatArray[i]
}
try outFile.write(from: invertBuffer)
} catch let error {
print(error.localizedDescription)
}
}
Я ожидаю, что кто-то, кто обладает необходимыми знаниямии может описать процесс для меня, и сказать мне, что происходит под капотом.У меня есть обратная фаза. Я просто хочу знать, как обрабатываются входные данные и каковы значения и что они представляют?