mel = librosa.filters.mel(sr=sr_1nico14, n_fft=n_fft, n_mels=n_mels)
时间: 2024-05-26 07:11:54 浏览: 114
这是一个使用Librosa库的函数调用,用于计算音频信号的Mel频率倒谱系数(Mel Spectrogram)。其中,sr参数表示音频采样率,n_fft参数表示傅里叶变换的窗口大小,n_mels参数表示Mel滤波器的数量。Mel频率倒谱系数是一种常用的音频特征,用于语音识别、情感分析、音乐信息检索等应用。
相关问题
import librosa filepath = 'D:\\360se6\\bishe\\古筝\\' filename = filepath + 'gz1.wav' y, sr = librosa.load(filename,sr = None ) import librosa import matplotlib.pyplot as plt import librosa.display import numpy as np filepath = 'D:\\360se6\\bishe\\古筝\\' filename = filepath + 'gz1.wav' tempo, beats = librosa.beat.beat_track(y=y, sr=sr) y_beats = librosa.clicks(frames=beats, sr=sr) y_beats = librosa.clicks(frames=beats, sr=sr, length=len(y)) times = librosa.frames_to_time(beats, sr=sr) y_beat_times = librosa.clicks(times=times, sr=sr) y_beat_times880 = librosa.clicks(times=times, sr=sr, click_freq=880, click_duration=0.5) plt.figure() S = librosa.feature.melspectrogram(y=y, sr=sr) ax = plt.subplot(2, 1, 2) librosa.display.specshow(librosa.power_to_db(S, ref=np.max), x_axis='time', y_axis='mel') plt.subplot(2, 1, 1, sharex=ax) librosa.display.waveshow(y_beat_times, sr=sr, label='Beat clicks') plt.legend() plt.xlim(15, 30) plt.tight_layout()
这段代码使用了Python中的librosa库,通过加载音频文件,提取其节拍信息并在节拍处插入点击声,最后绘制出音频的梅尔频谱图和节拍位置的波形图。其中,`filepath`和`filename`分别指定了音频文件所在的文件夹路径和文件名,`y`和`sr`则是通过`librosa.load`函数加载音频文件后返回的音频信号和采样率。接下来,`tempo`和`beats`分别使用`librosa.beat.beat_track`函数获取音频的节奏信息。然后,`y_beats`通过`librosa.clicks`函数在节拍位置产生了一个长度与音频相同的点击声信号,`y_beat_times`和`y_beat_times880`分别使用`librosa.clicks`函数在节拍位置产生了一个与时间轴对应的点击声信号。最后,`librosa.feature.melspectrogram`函数用于提取梅尔频谱图,`librosa.display.specshow`函数和`librosa.display.waveshow`函数用于绘制出梅尔频谱图和节拍位置的波形图。
def extract_mel_feature(audio_file, mel_len_90fps=None): y, sr = librosa.load(audio_file) if mel_len_90fps is None: mel_len_90fps = int(len(y) / sr * 90) mel = librosa.feature.melspectrogram(y=y, sr=sr, n_mels=128, hop_length=256) mel_dB = librosa.power_to_db(mel, ref=np.max) # fig, ax = plt.subplots() # img = librosa.display.specshow(mel_dB, x_axis='time', y_axis='mel', sr=sr, ax=ax) # fig.colorbar(img, ax=ax, format='%+2.0f dB') # ax.set(title='Mel-frequency spectrogram') # plt.show() norm_mel = np.flip(np.abs(mel_dB + 80) / 80, 0) resized_mel = cv2.resize(norm_mel, (mel_len_90fps, norm_mel.shape[0])) return resized_mel.T
这段代码的作用是提取音频文件的梅尔频谱特征。首先使用librosa库加载音频文件,如果没有指定90帧每秒的梅尔长度,则根据音频文件的采样率和长度计算出来。然后使用librosa库计算出音频文件的梅尔频谱,其中n_mels参数指定了梅尔频谱的维度为128,hop_length参数指定了每个时间步的长度为256。最后将梅尔频谱转换成分贝单位的值,以便后续处理。