low_freq_MEL = 0 # 将频率转换为梅尔刻度 nfilt = 40 # 窗的数目 # 计算m=2595*log10(1+f/700) high_freq_mel = (2595 * np.log10(1 + (sample_rate / 2) / 700)) mel_points = np.linspace(low_freq_MEL, high_freq_mel, nfilt + 2) # 梅尔刻度的均匀分布 # 计算f=700(10**(m/2595)-1) hz_points = (700 * (10 ** (mel_points / 2595) - 1)) bin = np.floor((NFFT + 1) * hz_points / sample_rate) fbank = np.zeros((nfilt, int(np.floor(NFFT / 2 + 1)))) # 计算三角形滤波器频率响应 for m in range(1, nfilt + 1): f_m_minus = int(bin[m - 1]) # 三角形滤波器左边频率f(m-1) f_m = int(bin[m]) # 三角形滤波器中间频率fm f_m_plus = int(bin[m + 1]) # 三角形滤波器右边频率f(m-1) for k in range(f_m_minus, f_m): fbank[m - 1, k] = (k - bin[m - 1]) / (bin[m + 1] - bin[m])
时间: 2023-12-06 11:43:02 浏览: 262
Low_Freq.rar_LOW_matlab 低通滤波_低通 函数_低通滤波_低通滤波 截止频率
这段代码是用于计算Mel频率倒谱系数(MFCC)中的梅尔滤波器组的频率响应。首先将频率转换为梅尔刻度,然后计算梅尔刻度的均匀分布。接下来,计算每个三角形滤波器的中心频率和相邻两个滤波器的频率,并根据三角形滤波器的定义计算每个频率点上滤波器的响应值。最终,得到的fbank数组包含了所有梅尔滤波器的频率响应。这些滤波器将被用于对信号进行滤波,以提取出MFCC特征。
阅读全文