一、赛题介绍
- 本次新人赛是Datawhale与天池联合发起的零基础入门系列赛事第八场 —— 零基础入门语音识别-食物声音识别挑战赛。
- 本次比赛的数据集来自Kaggle的“Eating Sound Collection”(可商用), 数据集中包含20种不同食物的咀嚼声音,赛题任务是给这些声音数据建模,准确分类。
二、了解声音
- 声音以波的形式传播,即声波(Sound Wave)。所有声波都可以分解为基本波并可以通过傅里叶变换进行分析。
- 我们可以用频率(Frequency)、 幅度(Magnitude)、相位(Phase)来描述声波。
- 声音具有音高(Pitch)、音量(Loudness)、音色(Timbre)等属性。
三、音频处理库介绍
Python有如Librosa和PyAudio等非常好用的音频处理库,可以帮助我们快速处理音频数据。我们接下来着重介绍Librosa库的基本用法:
1.使用librosa加载音频文件
# librosa.load()加载的音频文件,默认采样率(sr)为22050HZ mono。
# 我们可以通过librosa.load(path,sr=44100)来更改采样频率
data1, sampling_rate1 = librosa.load(音频文件路径)
2.查看波形幅度包络图
plt.figure(figsize=(14, 5))
librosa.display.waveplot(data1,sr=sampling_rate1)
3.查看声谱图
声谱图(spectrogram)是声音或其他信号的频率随时间变化时的频谱(spectrum)的一种直观表示。声谱图有时也称sonographs,voiceprints,或者voicegrams。当数据以三维图形表示时,可称其为瀑布图(waterfalls)。在二维数组中,第一个轴是频率,第二个轴是时间。我们使用librosa.display.specshow来显示声谱图。
plt.figure(figsize=(20, 10))
D = librosa.amplitude_to_db(np.abs(librosa.stft(data2)), ref=np.max)
plt.subplot(4, 2, 1)
librosa.display.specshow(D, y_axis='linear')
plt.colorbar(format='%+2.0f dB')
四、学习小结
- 明确比赛任务----------对食物声音进行分类
- 理解数据集------------音频文件 + 对应的食物标签 数据集
- 了解音频处理库librosa的使用----------使用librosa加载音频文件、提取音频特征、绘制各类有关音频的图谱