来自 AVAudioPCMBuffer 的浮点数据很小,即使它在音频接口上剪辑也是如此

Float data from AVAudioPCMBuffer is to small even when it clips on audio interface

提问人:Kakhi Kiknadze 提问时间:8/10/2023 最后编辑:Kakhi Kiknadze 更新时间:8/13/2023 访问量:20

问:

我真的找不到这方面的信息,所以我决定在这里问这个问题。

我从浮点数据中获取值。仔细检查了 AudioKit,他们正在做同样的事情,当我复制/粘贴他们的代码时,我也遇到了同样的问题。


guard let floatData = buffer.floatChannelData else { return }

        let channelCount = Int(buffer.format.channelCount)
        let length = UInt(buffer.frameLength)

        // n is the channel
        for n in 0 ..< channelCount {
            let data = floatData[n]

            if analysisMode == .rms {
                var rms: Float = 0
                vDSP_rmsqv(data, 1, &rms, UInt(length))
                amp[n] = rms
            } else {
                var peak: Float = 0
                var index: vDSP_Length = 0
                vDSP_maxvi(data, 1, &peak, &index, UInt(length))
                amp[n] = peak
            }
        }

问题在于浮点值总是很小,不能反映正确的值。当我增加音频接口中的增益以使其削波时,值仍低于 1,0。而且,它总是太接近零了。

谁能建议如何正确绘制它?

更新

我注意到,当我将音频接口的输入增益调到最大并使用时,总是会出现最大值0.7071067vDSP_maxvi

let floatData = buffer.floatChannelData!
let length = UInt(buffer.frameLength)
var peak: Float = 0
var index: vDSP_Length = 0
vDSP_maxvi(floatData[0], 1, &peak, &index, UInt(length))
print(peak)
AVFatafoundation Core-音频

评论


答: 暂无答案