Skip to content

语音识别中的VAD参数调整

在视频翻译的语音识别阶段,生成的字幕有时可能过长(几十秒甚至几分钟),有时又过短(不到1秒)。通过调整VAD(语音活动检测)参数,可以优化这些问题,使字幕更符合实际语音内容。

VAD 是什么

GitHub: https://github.com/snakers4/silero-vad

Silero VAD 是一个高效的语音活动检测工具,用于识别音频中的语音部分,并将其与静音或噪音分离。它可以与语音识别工具(如 Whisper)结合使用,在识别前后检测和分割语音片段,从而提升识别效果。

在 faster-whisper 中,默认启用了 VAD 来分析和切割音频,主要通过以下五个参数进行调整。这些参数帮助用户控制语音和静音的判断与分割,优化字幕生成。

参数详解及调整建议

threshold(语音阈值)

作用: 表示音频片段被认为是语音的最低概率。Silero VAD 会为每个音频片段计算语音概率,超过此阈值(threshold)的部分被视为语音,反之视为静音或噪音。

调整建议: 默认值为 0.5,适用于大多数情况。如果误判较多(例如噪音被识别为语音),可尝试调高至 0.6 或 0.7;如果语音片段丢失较多,可降低至 0.3 或 0.4。请根据音频质量逐步测试。

min_speech_duration_ms(最短语音持续时间,单位:毫秒)

作用: 如果检测到的语音片段长度小于此值,会被丢弃,目的是去除短暂的非语音噪音。

调整建议: 默认值为 0 毫秒(不限制),但建议设置为 250 毫秒以过滤短噪声。若音频中短语较短,可保持默认;若需去除更多噪音,可调高至 500 毫秒。

max_speech_duration_s(最大语音持续时间,单位:秒)

作用: 限制单个语音片段的最大长度。超过此时长时,系统会在持续超过 100 毫秒的静音处分割;若无静音,则在指定时长前强制分割,避免过长片段。

调整建议: 默认值为5秒。若需控制片段长度(如对话分段),可设为 10 秒或 30 秒,具体根据需求调整。

min_silence_duration_ms(静音分割持续时间,单位:毫秒)

作用: 在语音结束时,需等待的静音时间达到此值后,才会分割出语音片段。

调整建议: 默认值为 140 毫秒(0.14 秒)。若需更宽松分割,可增至 2000 毫秒。

speech_pad_ms(语音填充时间,单位:毫秒)

作用: 在检测到的语音片段前后添加缓冲时间,避免切掉边缘语音。

调整建议: 默认值为 0 毫秒。若发现字幕缺失开头或结尾,可增至 500 或 800 毫秒

如何调整参数

这些参数可在软件中轻松调整:

注意你必须选中启用VAD复选框,参数才会生效,如下图所示

  • 打开 菜单 > 工具/选项 > 高级选项 > [faster/openai语音识别调整区域],如图所示。

  • 或者,在主界面进行语音识别后,选择 faster-whisper本地,点击左侧“语音识别”文字,下方会显示参数调整文本框。

调整技巧

  • 音频质量优先: 参数调优虽重要,但干净的音频背景对识别效果影响更大。尽量使用清晰、无噪声的音频。
  • 逐步测试: 从默认值开始,逐一调整参数,观察字幕变化,找到最佳设置。
  • 场景适应: 根据音频类型(如对话、独白)调整 max_speech_duration_s 和 min_silence_duration_ms。

总结

  • threshold:根据音频特性调整,默认 0.5 较通用。
  • min_speech_duration_msmin_silence_duration_ms:控制语音片段长度和分割敏感度。
  • max_speech_duration_s:限制长片段,适合分段需求。
  • speech_pad_ms:确保语音完整,避免过度切割。

合理设置这些参数,能显著提升 VAD 性能,生成更准确的字幕。