Kea*_*nri 5 python scipy mfcc anaconda librosa
我目前正在尝试使用 librosa 来重现使用 PRAAT 提取音频文件的 MFCC 的科学方法(深度学习)。我在语音学/声学方面经验不足,而且我在理解 PRAAT 时遇到了很多问题——所以我开始使用 librosa,它的 API 对我来说更“可访问”。
该论文的作者在 MFCC 计算中使用了汉明窗口,我尝试将该函数作为 mfcc 函数调用中的附加参数或作为字典的 **kwargs 的一部分提供:
import os
from scipy.signal import get_window
from librosa import load, get_duration
from librosa.feature import mfcc
import pandas
import tables
import matplotlib.pyplot as plt
# ...
kwargs = {"n_fft": 160, "hop_length": 80, "window": get_window("hamming", Nx=160)}
mfccs = mfcc(y=y, sr=sr, S=None, n_mfcc=12, **kwargs)
Run Code Online (Sandbox Code Playgroud)
我仍然有很多关于声学的知识,所以我不太确定这些值,但是(考虑到 API)这应该有效。在我的 Anaconda 环境中运行此命令的 Windows 计算机上,会导致以下错误:
processing 03a01Fa.wav ...
Traceback (most recent call last):
File "xxx\librosaData.py", line 37, in <module>
mfccs = mfcc(y=y, sr=sr, S=None, n_mfcc=12, **kwargs)
File "C:\Users\xxx\AppData\Local\Continuum\anaconda3\envs\xxx\lib\site-packages\librosa\feature\spectral.py", line 1442, in mfcc
S = power_to_db(melspectrogram(y=y, sr=sr, **kwargs))
File "C:\Users\xxx\AppData\Local\Continuum\anaconda3\envs\xxx\lib\site-packages\librosa\feature\spectral.py", line 1534, in melspectrogram
mel_basis = filters.mel(sr, n_fft, **kwargs)
TypeError: mel() got an unexpected keyword argument 'window'
Process finished with exit code 1
Run Code Online (Sandbox Code Playgroud)
我今天在 MacOS(也使用 Anaconda 环境)上尝试了这个,它没有导致错误。大多数时候我使用 Windows 计算机进行实验,因为我可以使用 CUDA 加速计算。我不确定这是否是与 Librosa 相关的问题,因为我在那里的环境已经遇到了其他一些问题(例如,我无法使用 HDF5 保留 pandas.DataFrame,但我以某种方式设法自己解决了这个问题。并且Windows 上的 PyCharm 不显示我已安装的软件包 - 尚未修复,但不太重要)。
我不知道是什么导致了这种行为,我真的很想解决这个问题。有没有人遇到过相同(或类似)的问题并找到了解决方法?
非常感谢。:-)
编辑:正如 ZF007 的回答中所建议的,我尝试在(另一台/我的私人)Windows 计算机上运行以下脚本:
import librosa
from scipy.signal import get_window
y, sr = librosa.load('audio/01-01-01-01-01-01-01.mp4',)
meltspec_args = {"n_fft": 160, "hop_length": 80, "window": get_window("hamming", 160)}
mfccs = librosa.feature.mfcc(y=y, sr=sr, S=None, n_mfcc=12, **meltspec_args)
print(mfccs.shape)
Run Code Online (Sandbox Code Playgroud)
但它仍然遇到同样的错误。
Edit2:我创建了一个 git 存储库来共享代码和配置(https://github.com/Keanri828/librosa_mfcc_WindowsError)。
所以...我终于知道为什么会发生这种情况,因为我在 librosa 存储库中打开了一个问题(https://github.com/librosa/librosa/issues/1060):
Conda 以某种方式安装了 0.6.3 而不是 >0.7。从 0.7 版本开始支持这些参数。由于我今天安装了 Anaconda,所以我尴尬地没有比较这台计算机和我的 Mac 之间的版本(使用 0.7.1,没有任何安装问题)。
看来是包的问题还没有解决。
我会保持这个“答案”是最新的。