一、音频基础
一段音频包含两个最基本的信息:时间长短和采样率(帧率)。
采样率即一秒钟采样多少,以KHz为单位。故总帧数=采样率*时间
我们选择一段音频导入来看看其采样率时间等信息。采用python自带wave库即可完成。
import wave
wav = wave.open(file)
print("采样率:{}".formal(wav.getframerate())
print("总帧数:{}".formal(wav.getnframes())
print("时间:{}".formal(wav.getnframes()/wav.getframerate())
下面介绍最常用的librosa库。(pip安装即可)
# 文件的导入
import librosa
data, sr = librosa.load(file, sr=None) # 文件导入。sr=None代表使用原始文件的采样率,也可自己设置进行重采样。(重采样比较耗时)
print(data.shape)
print(sr)
plt.plot(data, "-") # 画图看看data数据到底长啥样
plt.show()
二、常用特征进行分类
音频分类一般采用音频的几个特征进行分类,可以利用librosa轻松的提取特征保存为二维向量。
# 维度(40, _) 第一个维度代表频域, 第二个维度代表时域,故第二个维度大小跟音频长度有关,第一个维度大小可自行设置(n_mfcc)
mfcc = librosa.feature.mfcc(data, sr