1

当我尝试使用 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

4

0 回答 0