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。这是一个很好的中间点,至少可以确定错误在链中的起始位置