1、数据集
训练集:http://tianchi-competition.oss-cn-hangzhou.aliyuncs.com/531887/train_sample.zip
包含19种类别食物咀嚼数据,详细信息如下
测试集:http://tianchi-competition.oss-cn-hangzhou.aliyuncs.com/531887/test_a.zip
2、原理
声音是由不同的声波叠加形成,不同的声音携带有一定的特征,就像通过人的眼耳口鼻来识别一个人。不同类别的声音也具有相同的特征,下图中是芦荟和汉堡的咀嚼声音波形图,直观可以看到明显的差异,原始wav音频信号只存在时域上的信息,没有频域信息,同一个人不同的咀嚼速度下wav语音信号都会产生峰值偏移。对计算机而言,通过直接原始wav音频信号作为对比是不合适。声谱图是能代表声音在频域和时域上的一种特征,通过对一段长语音信号,分帧、加窗,再对每一帧做傅里叶变换,之后把每一帧的结果沿另一维度堆叠,得到的图(类似于二维信号)就是声谱图。
3、代码库
本次音频信号处理使用librosa和sklearn库,两个库使用参考上一篇文章 https://www.jianshu.com/p/3d18640b3ae0
加载数据
data1, sampling_rate1 = librosa.load('./train_sample/aloe/24EJ22XBZ5.wav') data2, sampling_rate2 = librosa.load('./train_sample/burger/0WF1KDZVPZ.wav')
绘制时域包络图
plt.figure(figsize=(14, 5)) librosa.display.waveplot(data1,sr=sampling_rate1)
提取声谱图
plt.figure(figsize=(20, 10)) D = librosa.amplitude_to_db(np.abs(librosa.stft(data1)), ref=np.max) plt.subplot(4, 2, 1) librosa.display.specshow(D, y_axis='linear') plt.colorbar(format='%+2.0f dB') plt.title('Linear-frequency power spectrogram of aloe')