esp-sr/docs/zh_CN/vadnet
2025-02-14 19:11:13 +08:00
..
README.rst docs: update docs 2025-02-14 19:11:13 +08:00

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.

语音活动检测模型
==============================

:link_to_translation:`en:[English]`

VADNet 是一个基于神经网络的语音活动检测模型专为低功耗嵌入式MCU设计。

概述
--------

VADNet 采用了与 WakeNet 相似的模型结构和数据处理流程,更多实现细节可参考 :doc:`WakeNet <../wake_word_engine/README>` 中的说明。

VADNet 训练数据包括了大约5000小时中文数据 5000 小时英文数据还有5000小时的多语言数据。

使用VADNet
-----------

-  选择VADNet模型

    ::
        
        idf.py menuconfig
        ESP Speech Recognition -> Select voice activity detection -> voice activity detection (vadnet1 medium).

-  运行VADNet

    VADNet 当前集成在 :doc:`音频前端处理模块 <../audio_front_end/README>` 中默认处于启用状态通过AFE的fetch接口返回检测结果。

    常用VAD参数配置如下

    ::
        
        afe_config->vad_init = true           // 是否在AFE流水线中初始化VAD默认启用
        afe_config->vad_min_noise_ms = 1000;  // 噪声/静音段的最短持续时间(毫秒)
        afe_config->vad_min_speech_ms = 128;  // 语音段的最短持续时间(毫秒)
        afe_config->vad_delay_ms = 128;       // VAD首帧触发到语音首帧数据的延迟量
        afe_config->vad_mode = VAD_MODE_1;    // 模式值越大,语音触发概率越高
    
    如需临时启用/禁用/重置VADNet可使用以下接口

    ::

        afe_handle->disable_vad(afe_data);  // 禁用VAD
        afe_handle->enable_vad(afe_data);    // 启用VAD
        afe_handle->reset_vad(afe_data);    // 重置VAD状态

- VAD缓存与检测

    VAD配置中的两个特性可能导致语音首帧触发延迟

    1. VAD算法固有延迟VAD无法在首帧精准触发可能有1-3帧延迟
    2. 防误触机制:需持续触发时间达到配置参数`vad_min_speech_ms`才会正式触发

    为避免上述原因导致语音首字截断AFE V2.0新增了VAD缓存机制。可通过检查vad_cache_size判断是否需要保存VAD缓存

    ::
       
        afe_fetch_result_t* result = afe_handle->fetch(afe_data); 
        if (result->vad_cache_size > 0) {
            printf("vad cache size: %d\n", result->vad_cache_size);
            fwrite(result->vad_cache, 1, result->vad_cache_size, fp);
        }

        printf("vad state: %s\n", res->vad_state==VAD_SILENCE ? "noise" : "speech");


资源占用
------------------

本模型的资源占用情况请参考 :doc:`资源占用说明 <../benchmark/README>`。