【发布时间】:2022-07-20 00:54:20
【问题描述】:
我用torchaudio和librosa在python中加载了mp3文件
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
这三个数组的长度和内容与mp3文件中的len(array_lib)相同。
torchaudio.load() 似乎在 mp3 文件中很特殊。
【问题讨论】:
-
.wav是一种全保真(即无损)声音文件格式;我希望加载的 .wav 文件在每个播放器中都得到完全相同的处理。而.mp3是一种压缩的有损格式,在不同播放器之间的解释可能不同。每个播放器都可以有自己的 .mp3 内部表示。由于使用了压缩设置,您甚至可以为同一首歌曲使用不同大小的 .mp3。
标签: python mp3 librosa soundfile torchaudio