71 lines
3.0 KiB
Markdown
71 lines
3.0 KiB
Markdown
# 浏览器音频分类器 (背景噪音分离增强版)
|
||
|
||
## 简介
|
||
|
||
这个项目是一个基于浏览器的音频分类器,它利用 TensorFlow.js 和 Speech Commands 模型,可以识别用户自定义的声音类别。**与传统音频分类器不同的是,此版本特别强调了背景噪音的分离和处理,从而提升分类准确率。**
|
||
|
||
此应用允许用户:
|
||
|
||
1. **录制背景噪音样本:** 用于训练模型,区分目标声音和环境噪音。
|
||
2. **添加自定义声音类别:** 例如 "拍手"、"响指"、"警告音" 等。
|
||
3. **录制自定义声音样本:** 用于训练模型,识别特定声音。
|
||
4. **训练模型:** 使用录制的背景噪音和自定义声音数据,训练分类模型。
|
||
5. **实时识别:** 使用训练好的模型,实时识别麦克风输入的声音类别。
|
||
|
||
|
||
## 特性
|
||
|
||
* **背景噪音分离:** 通过录制和学习背景噪音,提高分类器在嘈杂环境中的准确性。
|
||
* **自定义类别:** 用户可以根据自己的需求添加和训练任意声音类别。
|
||
* **实时识别:** 模型训练完成后,可以立即进行实时声音识别。
|
||
* **浏览器端运行:** 所有处理都在浏览器端完成,无需服务器支持。
|
||
* **用户友好的界面:** 简单直观的界面,易于操作和使用。
|
||
|
||
## 技术栈
|
||
|
||
* **TensorFlow.js:** 用于在浏览器端运行机器学习模型。
|
||
* **Speech Commands Model:** TensorFlow.js 提供的预训练语音命令模型,用于迁移学习。
|
||
|
||
## 快速上手
|
||
|
||
建议使用live server插件开启本地服务器,并访问voice.html文件。
|
||
|
||
**注:直接打开index.html文件会需要重复授权麦克风权限,请使用live server插件开启本地服务器可以解决**
|
||
|
||
|
||
## 提取主要功能
|
||
audioClassifier.js文件中主要实现了以下功能:
|
||
|
||
* 录制背景噪音样本:通过录制音频文件,将其转换成频谱图,并传入模型进行训练。
|
||
* 训练模型:将背景噪音样本和自定义声音样本合并,并训练模型。
|
||
* 实时识别:实时从麦克风输入音频,将其转换成频谱图,并传入模型进行识别。
|
||
|
||
## 目录结构
|
||
|
||
```
|
||
.
|
||
├── README.md
|
||
├── script.js
|
||
├── voice.html
|
||
├── audioClassifier.js
|
||
├── speech-commands(js文件仓库,不需要关注)
|
||
│ └── ...
|
||
└──
|
||
```
|
||
|
||
|
||
|
||
|
||
## 音频切片
|
||
TODO
|
||
|
||
需要查看speech-commands接口实现传入`collectExample`
|
||
|
||
.\speech-commands\src\browser_fft_recognizer.ts
|
||
667,9: async collectExample(word: string, options?: ExampleCollectionOptions):
|
||
|
||
现在实现的方法是调用`collectExample`方法,传入`word`参数,然后会自动录制音频文件,统一码率,生成频谱图,传入模型,并没有给出可以直接传入音频接口。
|
||
|
||
**如果需要实现一次性录制,需要实现手动将音频文件转换成频谱图,传入模型。**
|
||
|
||
目录下speech-commands文件夹是导入的`https://cdn.jsdelivr.net/npm/@tensorflow-models/speech-commands@latest/dist/speech-commands.min.js`js文件仓库 |