2025-08-14 14:35:44 +08:00

71 lines
3.0 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.

# 浏览器音频分类器 (背景噪音分离增强版)
## 简介
这个项目是一个基于浏览器的音频分类器,它利用 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文件仓库