3.0 KiB
3.0 KiB
浏览器音频分类器 (背景噪音分离增强版)
简介
这个项目是一个基于浏览器的音频分类器,它利用 TensorFlow.js 和 Speech Commands 模型,可以识别用户自定义的声音类别。与传统音频分类器不同的是,此版本特别强调了背景噪音的分离和处理,从而提升分类准确率。
此应用允许用户:
- 录制背景噪音样本: 用于训练模型,区分目标声音和环境噪音。
- 添加自定义声音类别: 例如 "拍手"、"响指"、"警告音" 等。
- 录制自定义声音样本: 用于训练模型,识别特定声音。
- 训练模型: 使用录制的背景噪音和自定义声音数据,训练分类模型。
- 实时识别: 使用训练好的模型,实时识别麦克风输入的声音类别。
特性
- 背景噪音分离: 通过录制和学习背景噪音,提高分类器在嘈杂环境中的准确性。
- 自定义类别: 用户可以根据自己的需求添加和训练任意声音类别。
- 实时识别: 模型训练完成后,可以立即进行实时声音识别。
- 浏览器端运行: 所有处理都在浏览器端完成,无需服务器支持。
- 用户友好的界面: 简单直观的界面,易于操作和使用。
技术栈
- 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文件仓库