当我尝试使用 AVAudioFile.read() 快速读取音频文件时,所有幅度值都在 -1 和 1 之间。但是当我使用 librosa 库读取 python 中的值时,我得到不同的幅度值。我认为某种标准化在 iOS 中读取内容时完成。我想知道它是如何完成的,以便在 python 中我可以进行相同的调整
ios示例代码:
let audioPath = Bundle.main.path(forResource:"example" , ofType:"mp3")
let fileURL = NSURL(fileURLWithPath : audioPath!)
let audio = try! AVAudioFile(forReading : fileURL as URL)
print(audio.fileFormat.channelCount,audio.fileFormat.sampleRate)
let format = AVAudioFormat(commonFormat:.pcmFormatFloat32, sampleRate:audio.fileFormat.sampleRate, channels: audio.fileFormat.channelCount, interleaved: false)
var audioBuffer = AVAudioPCMBuffer(pcmFormat: format!, frameCapacity: UInt32(audio.length))!
try! audio.read(into : audioBuffer, frameCount:UInt32(audio.length))
let arraySize = Int(audioBuffer.frameLength)
let samples = Array(UnsafeBufferPointer(start: audioBuffer.floatChannelData![0], count:arraySize))
print(samples[0...2048])
蟒蛇示例代码:
import librosa
y, sr = librosa.load('/Users/myname/Desktop/example.mp3')
y_new = librosa.resample(y, sr, 44100)
print(y_new[0:2048])
我在 python 中重新采样,因为默认情况下在 librosa.read() 之后打印 sr 给出 22050。所以两个代码打印的值是不同的。为什么?TIA