提问人:Kakhi Kiknadze 提问时间:8/10/2023 最后编辑:Kakhi Kiknadze 更新时间:8/13/2023 访问量:20
来自 AVAudioPCMBuffer 的浮点数据很小,即使它在音频接口上剪辑也是如此
Float data from AVAudioPCMBuffer is to small even when it clips on audio interface
问:
我真的找不到这方面的信息,所以我决定在这里问这个问题。
我从浮点数据中获取值。仔细检查了 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.7071067
vDSP_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)
答: 暂无答案
评论