# VAD(语音活动检测)模块技术文档 > **基于 `@ricky0912/vad-web` 的 Web 端语音活动检测集成方案** --- ## 概述 本模块提供了一个轻量级的语音活动检测(Voice Activity Detection, VAD)功能封装,用于在浏览器环境中实时检测用户语音的开始与结束,并在语音结束后回调处理音频数据。该模块依赖于 [`vad-web`](https://www.npmjs.com/package/@ricky0123/vad-web) 库,底层使用 ONNX Runtime Web 实现高性能推理。 主要功能: - 实时麦克风音频采集 - 自动检测语音段(Speech Segment) - 在语音结束后触发回调,返回 `Float32Array` 格式的 16kHz 音频样本 - 支持动态启用/禁用 VAD --- ## 依赖引入 ```html ``` > ⚠️ 注意:必须按顺序加载 `ort.js` 后再加载 `vad-web`,否则会报错。 --- ## API 接口 ### `bricks.enable_vad(func)` 启动语音活动检测,并设置语音结束时的回调函数。 #### 参数 | 参数名 | 类型 | 说明 | |--------|------|------| | `func` | `Function` | 回调函数,接收一个参数 `audio`,类型为 `Float32Array`,表示采样率为 16000Hz 的单声道音频数据 | #### 示例 ```javascript bricks.enable_vad(function(audio) { console.log("语音结束,音频长度:", audio.length); // 可将 audio 发送到后端进行 ASR 识别等处理 }); ``` #### 内部实现 ```javascript bricks.vad = await vad.MicVAD.new({ onSpeechEnd: func }); bricks.vad.start(); ``` --- ### `bricks.disable_vad()` 停止当前运行的 VAD 实例,并释放相关资源。 #### 行为说明 - 调用 `stop()` 方法停止麦克风监听和模型推理 - 将 `bricks.vad` 设置为 `null`,便于垃圾回收 #### 示例 ```javascript // 停止语音检测 bricks.disable_vad(); ``` --- ## 音频数据格式 - **采样率**:16000 Hz - **位深**:32-bit float - **声道**:单声道(Mono) - **数据类型**:`Float32Array` - **应用场景**:适用于大多数现代语音识别(ASR)模型输入要求 --- ## 使用示例 ```html