我用torchaudio和librosa在python中加载了librosa文件
import torchaudio
import librosa
filename='example.mp3'
array_tor, sample_rate_tor = torchaudio.load(filename,format='mp3')
array_lib, sample_rate_lib = librosa.load(filename, sr=sample_rate_tor)
print( len(array_tor.numpy()[0]) , len(array_lib)) # get different value两个数组的长度是不同的,为什么使它们不同,以及如何使它们相同?
如果我将example.mp3转换为wav文件
from pydub import AudioSegment
audSeg = AudioSegment.from_mp3('example.mp3')
audSeg.export('example.wav', format="wav")并使用torchaudio、librosa、soundfile加载wav文件
import torchaudio
import librosa
import soundfile as sf
filename='example.wav'
array_tor_w, sample_rate_tor_w = torchaudio.load(filename,format='wav')
array_lib_w, sample_rate_lib_w = librosa.load(filename, sr=sample_rate_tor_w)
array_sfl_w, sample_rate_sfl_w = sf.read(filename)
print( len(array_tor_w.numpy()[0]) , len(array_lib_w), len(array_sfl_w)) # get same value在len(array_lib)文件中,三个数组长度和内容是相同的,也是相同的。
torchaudio.load()在mp3文件中似乎是特殊的。
发布于 2022-07-19 16:54:20
这是由于底层解码器库torchaudio的使用。
Up util v0.11,torchaudio使用libmad,它在解码MP3时不移除额外的填充。
有关细节,请参见https://github.com/pytorch/audio/issues/1500。
在v0.12中,torchaudio将MP3译码器切换到FFmpeg,并解决了填充问题。
https://stackoverflow.com/questions/71871315
复制相似问题