本项目是一个基于 Web 技术的关键词识别 (Keyword Spotting, KWS) 客户端。它能够通过浏览器捕获用户的麦克风音频流,将其发送到指定的 WebSocket 服务器进行关键词识别,并将识别结果实时显示在网页上。
kws-client/
├── index.html          # 主要的 HTML 文件,包含用户界面
├── index.js            # (当前未使用,可以删除)
├── kws.js              # 客户端的主要 JavaScript 逻辑,处理音频流和 WebSocket 通信
├── package.json        # 项目的依赖和配置信息
├── package-lock.json   # 锁定项目依赖的具体版本
├── styles.css          # 样式表文件,美化页面
├── wake_response.mp3   # 关键词识别成功后的提示音效
└── .gitignore          # (可选) 指定 Git 版本控制忽略的文件和目录
- 实时音频捕获: 使用浏览器的 getUserMediaAPI 实时捕获用户的麦克风音频输入。
- WebSocket 通信: 通过 WebSocket 与服务器建立连接,实现双向通信。
- 关键词识别: 将捕获的音频数据发送到服务器进行关键词识别。
- 结果展示: 将服务器返回的识别结果(包括是否检测到关键词以及相关信息)实时显示在页面上,并向下滚动。
- 音频提示: 当检测到关键词时,播放 wake_response.mp3提示音。
- 错误处理: 对 WebSocket 通信和音频播放过程中可能出现的错误进行了处理,并在页面上显示错误信息。
- parcel: 用于开发和构建项目的打包工具。
- parcel-plugin-static-files-copy: Parcel 插件,用于将静态文件复制到构建目录。
- buffer: 在浏览器环境中提供 Node.js 的 Buffer 类的支持。
- 
安装依赖: npm install 
- 
启动开发服务器: npm run dev 这将启动一个开发服务器,并在浏览器中打开应用。默认端口为 1234。你可以通过访问 http://localhost:1234查看应用。
- 
构建项目: npm run build 这将构建一个生产版本的项目,输出到 dist目录。
- 
连接 WebSocket 服务器: 确保你的 WebSocket 服务器运行在 ws://172.16.100.15:8005,或者在kws.js文件中修改WEBSOCKET_URI常量为你正确的服务器地址。
- 
开始识别: 点击页面上的 "Connect and Start Listening" 按钮,开始监听麦克风输入并进行关键词识别。 
- WebSocket 服务器: 请确保你有一个可用的 WebSocket 服务器,并配置好正确的地址和端口。
- 浏览器兼容性: getUserMediaAPI 需要 HTTPS 环境才能正常工作(本地开发环境除外)。确保你的应用部署在 HTTPS 环境下,或者在开发过程中使用 localhost。
- 音频播放: 确保 wake_response.mp3文件存在且可播放。
- 麦克风权限: 浏览器会请求麦克风权限,请允许访问。
- 代码优化: index.js文件当前未使用,建议删除以保持代码整洁。
- 服务器端实现: 此项目目前只包含客户端代码,如果能提供服务器端的实现,将更加完善。
- 用户体验: 可以进一步优化用户界面和交互体验。