Python 如何使torchaudio和librosa MFCC计算等效?
我在Python 如何使torchaudio和librosa MFCC计算等效?,python,pytorch,librosa,mfcc,Python,Pytorch,Librosa,Mfcc,我在librosa、python\u speech\u功能和tensorflow.signal之间看到过同样类型的问题 我正在尝试使用相同的参数和基本方法来制作torchaudio和librosa计算MFCC特性。这是从librosa过渡到torchaudio的一部分 鉴于: import numpy as np import torch from librosa.feature import mfcc from torchaudio.transforms import MFCC sampl
librosa
、python\u speech\u功能
和tensorflow.signal
之间看到过同样类型的问题
我正在尝试使用相同的参数和基本方法来制作torchaudio
和librosa
计算MFCC特性。这是从librosa
过渡到torchaudio
的一部分
鉴于:
import numpy as np
import torch
from librosa.feature import mfcc
from torchaudio.transforms import MFCC
sample_rate = 22050
audio = np.ones((sample_rate,), dtype=np.float32)
librosa_mfcc = mfcc(audio, sr=sr, n_mfcc=20, n_fft=2048, hop_length=512, power=2)
mfcc_module = MFCC(sample_rate=sr, n_mfcc=20, melkwargs={"n_fft": 2048, "hop_length": 512, "power": 2})
torch_mfcc = mfcc_module(torch.tensor(audio))
librosa_mfcc和torch_mfcc的形状都是(20,44)
,但是数组本身是不同的。例如,librosa_mfcc[0][0]
是-487.6101
,而torch_mfcc[0][0]
是-302.7711
我承认我在这里缺乏大量的领域知识,但我正在通过和文档和参数学习它们在MFCC计算中采用的不同路线以及每个参数背后的含义。如何使torch_mfcc
具有与librosa_mfcc
相同的值?差异可能在mel谱图级别,因为该计算是mfcc的关键部分。因此,比较THO的参数。在librosa中,确保至少检查fmin、fmax和htk。在mel光谱图中,可以根据需要绘制和解释差异well@jonnor我尝试将fmin
和fmax
以及htk
标准化为true
和false
。我仍然看到阵列中的差异,在mel过滤器/STFT级别,实现是否也可能存在差异?看起来,torchaudio
不提供为这些设置kwargs的功能,而librosa
提供。我还将尝试按照您的建议进行绘图。是的,我认为mel/STFT级别的差异肯定会发生。在计算mels谱图之后,进行“just”对数变换,然后进行DCT-II以获得MFCC。这是一个很好的中间点,至少可以确定错误在链中的起始位置