我已经从麦克风输入实时计算FFT和音调+绝对频率.现在我想计算音色.
我看到梅尔频率倒谱系数 - MFCC,但我不太了解它.有人可以给我一些关于这个的提示..
我正在用Java实现MFCC算法.
这里有一个示例代码:http://www.ee.columbia.edu/~dpwe/muscontent/practical/mfcc.m at Matlab.但是我对梅尔过滤器银行业务有一些问题.如何生成三角形窗口以及如何使用它们?
PS1:一篇描述MFCC的文章:http://arxiv.org/pdf/1003.4083
PS2:如果基本上有关于MFCC算法步骤的文档,那将是好的.
PS3: 我的主要问题是:MFCC与Java线性和对数滤波器一些实现使用线性和对数滤波器,其中一些不使用.什么是过滤器,什么是中心频繁的概念.我遵循那个代码:MFCC Java,它与代码之间的区别是什么:MFCC Matlab
from librosa.feature import mfcc
from librosa.core import load
def extract_mfcc(sound):
data, frame = load(sound)
return mfcc(data, frame)
mfcc = extract_mfcc("sound.wav")
Run Code Online (Sandbox Code Playgroud)
我想获得以下48 秒长的sound.wav文件的 MFCC 。
我明白 data * frame = length of audio.
但是当我按照上图计算 MFCC 并得到它的形状时,结果如下: (20, 2086)
这些数字代表什么?如何仅通过其 MFCC 计算音频的时间?
我正在尝试计算每毫秒音频的平均 MFCC。
任何帮助表示赞赏!谢谢 :)
python audio artificial-intelligence feature-extraction mfcc
一些背景优先:
我想绘制各种歌曲的Mel-Frequency Cepstral Coefficients并对它们进行比较.我在一首歌中计算MFCC,然后将它们平均得到一个13个系数的数组.我希望这能代表我绘制的图表上的一个点.
我是Python新手,对任何形式的绘图都很陌生(虽然我已经看到了一些使用matplotlib的建议).
我希望能够可视化这些数据.关于我如何做到这一点的任何想法?
我只是信号处理的初学者.到目前为止,我的代码是从音频文件(.WAV)中提取MFCC功能:
from python_speech_features import mfcc
import scipy.io.wavfile as wav
(rate,sig) = wav.read("AudioFile.wav")
mfcc_feat = mfcc(sig,rate)
print(mfcc_feat)
Run Code Online (Sandbox Code Playgroud)
我只想绘制mfcc功能以了解其外观.
对于我的最后一年项目,我试图实时识别狗/树皮/鸟的声音(通过录制声音片段).我使用MFCC作为音频功能.最初我使用jAudio库从声音片段中提取了12个MFCC向量.现在我正在尝试训练机器学习算法(目前我尚未确定算法,但它很可能是SVM).声音片段大小约为3秒.我需要澄清一些有关此过程的信息.他们是,
我是否必须使用基于帧的MFCC(每帧12个)或基于整个剪辑的MFCC(每个声音剪辑12个)训练此算法?
为了训练算法,我必须将所有12个MFCC视为12个不同的属性,还是必须将这12个MFCC视为一个属性?
这些MFCC是剪辑的整体MFCCS,
-9.598802712290967 -21.644963856237265 -7.405551798816725 -11.638107212413201 -19.441831623156144 -2.780967392843105 -0.5792847321137902 -13.14237288849559 -4.920408873192934 -2.7111507999281925 -7.336670942457227 2.4687330348335212
任何帮助将非常感谢克服这些问题.我无法在Google上找到很好的帮助.:)
signal-processing machine-learning audio-fingerprinting audio-processing mfcc
我正在尝试从音频(.wav 文件)中提取 MFCC 特征,我已经尝试过python_speech_features,librosa但它们给出了完全不同的结果:
audio, sr = librosa.load(file, sr=None)
# librosa
hop_length = int(sr/100)
n_fft = int(sr/40)
features_librosa = librosa.feature.mfcc(audio, sr, n_mfcc=13, hop_length=hop_length, n_fft=n_fft)
# psf
features_psf = mfcc(audio, sr, numcep=13, winlen=0.025, winstep=0.01)
Run Code Online (Sandbox Code Playgroud)
以下是情节:
我是否为这两种方法传递了错误的参数?为什么这里有这么大的差别?
更新:我也尝试过 tensorflow.signal 实现,结果如下:
情节本身更接近 librosa 的情节,但规模更接近 python_speech_features。(请注意,这里我计算了 80 个 mel bin 并取了前 13 个;如果我只使用 13 个 bin 进行计算,结果看起来也大不相同)。代码如下:
stfts = tf.signal.stft(audio, frame_length=n_fft, frame_step=hop_length, fft_length=512)
spectrograms = tf.abs(stfts)
num_spectrogram_bins = stfts.shape[-1]
lower_edge_hertz, upper_edge_hertz, num_mel_bins = 80.0, 7600.0, …Run Code Online (Sandbox Code Playgroud) 我到处搜索,但不知道如何在 Android 上使用 TarsosDSP 提取 MFCC 特征。我知道如何从文件中获取 FFT。有什么帮助吗?
上个月,一位名叫@jojek 的用户在评论中告诉我以下建议:
我敢打赌,如果有足够的数据,关于 Mel 能量的 CNN 将胜过 MFCC。你应该试试看。在 Mel 谱图上进行卷积比在去相关系数上进行卷积更有意义。
是的,我在 Mel-filterbank 能量上尝试了 CNN,它的表现优于 MFCC,但我仍然不知道原因!
尽管许多教程,例如Tensorflow 的这个教程,都鼓励将 MFCC 用于此类应用程序:
由于人耳对某些频率比其他频率更敏感,因此语音识别的传统做法是对这种表示进行进一步处理,以将其转换为一组 Mel-Frequency Cepstral Coefficients,或简称 MFCC。
另外,我想知道 Mel-Filterbank 的能量是否仅在 CNN 上优于 MFCC,或者对于 LSTM、DNN 等也是如此,如果您添加参考,我将不胜感激。
更新 1:
虽然我对@Nikolay 的回答的评论包含相关细节,但我将在此处添加:
如果我错了,请纠正我,因为在这种情况下,对 Mel 滤波器组能量应用 DCT 等效于 IDFT,在我看来,当我们保留 2-13(包括)倒谱系数并丢弃其余部分时,是相当于低时间提升以隔离声道分量,并丢弃源分量(例如具有 F0 尖峰)。
那么,为什么我要使用所有 40 个 MFCC,因为我关心的语音命令识别模型只是声道组件?
更新 2
另一个观点(链接)是:
请注意,仅保留了 26 个 DCT 系数中的 12 个。这是因为较高的 DCT 系数代表滤波器组能量的快速变化,而事实证明这些快速变化实际上会降低ASR 性能,因此我们通过删除它们获得了小幅改进。
参考:
https://tspace.library.utoronto.ca/bitstream/1807/44123/1/Mohamed_Abdel-rahman_201406_PhD_thesis.pdf
speech-recognition feature-extraction mfcc deep-learning conv-neural-network
mfcc ×10
python ×3
algorithm ×2
audio ×2
librosa ×2
matplotlib ×2
plot ×2
android ×1
java ×1
python-3.x ×1
spectrogram ×1
tarsosdsp ×1
tensorflow ×1
voice ×1