120 lines
8.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# **音频模型训练:声音分类器** 👂🎤
你好!欢迎来到这篇音频模型训练教程。在本教程中,我将手把手带你创建一个机器学习模型,用来识别不同的声音。你可以将其应用于任何需要区分特定声音的场景。
## 如何训练模型:从零开始构建你的分类器
### **步骤1了解声音分类模型**
在开始训练之前,我们需要了解声音分类模型的基本原理。模型的工作原理类似于人类学习识别声音:当听到一种声音时,我们会记住它的特征,并在下次听到类似声音时进行匹配。
#### **1.1 声音特征提取**
当声音进入麦克风它会转化为数字信号。我们的AI通过处理这些信号生成**频谱图**Spectrogram。声谱图是声音的视觉表示它通过颜色和图案展示了声音的音高、响度、持续时间等关键信息。AI通过识别声谱图上的独特模式来区分不同的声音。
#### **1.2 迁移学习与预训练模型**
为了提高训练效率,我们采用**迁移学习**。这意味着我们不会从零开始训练模型,而是利用一个已经在大规模音频数据集上进行过预训练的“听音教授”——**Speech Commands 模型**。
这个预训练模型已经学会了识别日常声音和口令词,并特别内置了对**“背景噪音” (`_background_noise_`)** 的理解。因此,训练过程的关键在于:
* **识别背景噪音:** 首先让模型学习你所在环境的背景噪音,以便它能区分目标声音和环境杂音。
* **识别自定义声音:** 在预训练模型的基础上,向它提供你想要识别的特定声音样本,模型将快速学习并区分这些新声音。
#### **1.3 KNN分类**
在提取出声音的特征后,模型使用**K-近邻算法KNN**进行分类。它会将当前接收到的声音特征与所有已学习的特征进行比较,找到最相似的匹配项,从而判断当前声音的类别。
### **步骤2创建项目与收集学习样本**
现在,让我们开始在网站上操作,创建并训练你的声音分类模型。
<img src="https://goood-space-assets.oss-cn-beijing.aliyuncs.com/public/md/audio/%E9%9F%B3%E9%A2%91%E6%A8%A1%E5%9E%8B%E8%AE%AD%E7%BB%83%E7%95%8C%E9%9D%A2.png" alt="音频模型训练界面" style="zoom:80%;" />
在页面上,你会看到几个主要区域:**状态信息**、**背景噪音录制**、**自定义类别管理**、**模型控制**和**预测结果显示**。
#### **2.1 录制背景噪音**
这是非常关键的第一步。为了让模型更好地识别目标声音,它需要先学习你所处环境的“无意义”声音。
* 找到“**🤫 1. 录制背景噪音**”区域。
* 保持周围环境安静,不要发出你计划训练的特定声音。
* 点击“**录制样本**”按钮(背景噪音的按钮通常是红色或特别标记的)。
* 系统会自动为你录制几段背景噪音。你会看到“样本数量”在增加。
<video controls src="https://goood-space-assets.oss-cn-beijing.aliyuncs.com/public/md/audio/%E5%BD%95%E5%88%B6%E8%83%8C%E6%99%AF%E5%99%AA%E9%9F%B3%E6%A0%B7%E6%9C%AC.mp4" title="录制背景噪音样本"></video>
* _小贴士_ 确保录制时不要发出目标声音。建议录制 5-10 个样本以获得更好的效果。
#### **2.2 录制自定义声音类别样本**
接下来,为模型提供你想要识别的自定义声音样本。
* **添加新类别:** 在“**🗣️ 2. 录制您要分类的声音**”下方的输入框中,输入你想要识别的声音的名称(例如“拍手”、“吹口哨”、“开始”、“停止”)。然后点击“**添加类别**”按钮。
* 一个新的类别块将会出现,其中包含“样本数量”和“录制样本”按钮。
* **为每个类别录制样本:**
* 选择一个你刚创建的类别。
* 每次点击“**录制样本**”按钮,发出该类别的声音一次。例如,如果你创建了“拍手”类别,就对着麦克风拍一次手。
* 系统会自动帮你录制多段样本。你会看到对应类别的“样本数量”在增加。
<video controls src="https://goood-space-assets.oss-cn-beijing.aliyuncs.com/public/md/audio/%E5%BD%95%E5%88%B6%E8%87%AA%E5%AE%9A%E4%B9%89%E5%A3%B0%E9%9F%B3%E6%A0%B7%E6%9C%AC.mp4" title="录制自定义声音样本"></video>
* _小贴士_ 尝试从不同强度、不同方式发出同一个声音,让模型学习到更丰富的特征。每个类别至少录制 5-10 个样本效果最好。
* 重复以上步骤,添加并录制所有你想要识别的声音类别。
### **步骤3训练模型**
当所有类别的样本(包括背景噪音)都准备好后,即可开始模型训练。
* 点击“**🚀 3. 训练模型**”按钮。
* “状态”区域将显示模型的训练进度(例如“训练 Epoch 1/50”。此过程可能需要一些时间具体取决于样本数量和网络速度。
<video controls src="https://goood-space-assets.oss-cn-beijing.aliyuncs.com/public/md/audio/%E5%BC%80%E5%A7%8B%E8%AE%AD%E7%BB%83%E9%9F%B3%E9%A2%91%E6%A8%A1%E5%9E%8B.mp4" title="开始训练音频模型"></video>
* 请耐心等待。当“状态”显示“模型训练完成!”时,表示模型已完成训练。
### **步骤4开始识别并测试模型**
训练完成后,你可以立即测试模型的效果。
* 点击“**👂 4. 开始识别**”按钮。
* 对着麦克风发出你训练过的声音,或者保持安静(让它识别背景噪音)。
* 模型会即时显示识别结果,包括识别到的声音类别和置信度(例如:“预测结果:拍手 (置信度: 98%)”)。
<video controls src="https://goood-space-assets.oss-cn-beijing.aliyuncs.com/public/md/audio/%E5%BC%80%E5%A7%8B%E5%AE%9E%E6%97%B6%E8%AF%86%E5%88%AB.mp4" title="开始实时识别"></video>
* 测试完成后,点击“**⏸️ 停止识别**”按钮暂停识别。
## 值得尝试的事:探索模型的局限性
现在模型可以工作了,你可以测试它的效果——更有趣的是,去**找到它无法正常工作的边界**。尝试找到机器学习的极限所在!
**思考一下:** 对于计算机来说,声音只是一堆数字信号的排列组合。所以,你并没有真正教会计算机什么是“拍手”,你只是教会了它:这个特定频率、特定时长的声音(在某个背景下)被标记为“拍手”——对计算机来说,它看到的仅仅是声谱图的像素而已。
### **案例1模型识别错误怎么办**
* 如果模型判断错误,这可能意味着采集的样本不足、不够清晰或不够多样化。
* **尝试:** 重新选择判断错误的类别,补充更多样本,特别是那些与易混淆声音相似的样本。
### **案例2样本数量对模型性能的影响**
* **思考题:** 如果我只为每个声音类别采集一个样本,模型能学会吗?(答案:通常很难。模型需要多样的样本来学习其泛化能力。)
* **你可以尝试:** 分别使用少量(例如每个类别 3-5 个)和大量(例如每个类别 20-30 个)样本训练模型,并对比它们的识别准确率。你可能会发现一个有趣的规律。
### **案例3尝试不同的场景和声音变化**
<video controls src="https://goood-space-assets.oss-cn-beijing.aliyuncs.com/public/md/audio/%E6%8C%91%E6%88%98%E6%A8%A1%E5%9E%8B%E8%A1%A8%E7%8E%B0.mp4" title="挑战模型表现"></video>
* **测试:** 尝试用不同的口音、语速或距离对着麦克风发出指令,观察模型识别的稳定性。
* **环境噪声:** 在嘈杂的环境下测试模型,看它是否还能准确区分你的指令。
* **“欺骗”模型:** 尝试播放一段与你训练的声音相似但并非你训练过的录音,看看模型如何反应。思考如何训练它,使其不会混淆。
## 你能用它做什么?
你可以导出你训练好的模型,用它来做一些有趣的事情!
我制作了一个[实时分类器](https://dev-daily.goood.space/),你可以把自己训练的模型导入来进行实时预测,看看它的实际应用效果!
## 现在做什么?
* **立刻开始创建你自己的声音识别模型吧!** 探索人工智能的奥秘!
* 或者,你也可以阅读我们的其他教程:
* [如何制作图像模型教程]()
* [如何制作姿势模型教程]()