You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AVAudioPCMBuffer浮点数据异常偏小,音频接口削波仍低于1.0的问题

问题:AVAudioPCMBuffer浮点数据峰值异常偏低,如何正确处理并绘制?

我从AVAudioPCMBuffer的浮点数据中提取数值,对比AudioKit的实现逻辑后发现和自己的代码一致,但复制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。请问该如何正确处理这些数据并进行绘制?


更新:
将音频接口输入增益调至最大后,使用vDSP_maxvi检测到的峰值始终固定为0.7071067,测试代码如下:

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)

内容的提问来源于stack exchange,提问作者Kakhi Kiknadze

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 22:13:18