本文档介绍了最新添加的麦克风检测和语音活动检测功能。
- 功能: 在程序启动时自动测试麦克风是否正常工作
- 默认状态: 启用
- 用途: 帮助您快速发现麦克风问题,避免录音后发现没有声音
- 功能: 自动检测录音中是否包含实际语音
- 默认状态: 启用
- 用途:
- 防止发送空白/静音录音到服务器
- 节省网络带宽
- 避免误识别
在 config.json 中添加了以下新配置项:
{
"enable_vad": true,
"vad_energy_threshold": 500.0,
"vad_min_speech_duration": 0.3,
"silence_timeout": 2.0,
"test_mic_on_startup": true
}- 类型: true/false
- 默认值: true
- 说明:
- 启用时,程序启动会录制2秒音频进行测试
- 如果检测到麦克风静音或不工作,会显示警告
- 建议首次使用时保持启用
- 如果确认麦克风正常工作,可设为 false 以加快启动速度
- 类型: true/false
- 默认值: true
- 说明:
- 启用后会检测录音中是否有实际语音
- 如果没有检测到语音,不会发送到服务器
- 建议保持启用以节省带宽和避免误识别
- 类型: 数字
- 默认值: 500.0
- 调整建议:
- 太多无声录音被跳过: 降低数值 (如 300.0)
- 环境噪音导致误触发: 提高数值 (如 800.0)
- 正常使用: 保持默认值 500.0
- 类型: 数字 (秒)
- 默认值: 0.3
- 说明:
- 检测到的语音必须持续至少这么长时间才会发送
- 防止短暂的点击声或噪音被误认为语音
- 建议保持默认值
- 类型: 数字 (秒)
- 默认值: 2.0
- 说明: 预留功能,暂未使用
$ python hotmic.py
[hotmic] Testing microphone...
[hotmic] Recording for 2.0 seconds to test microphone...
[hotmic] Please make some noise (speak, tap the mic, etc.)
[hotmic] Microphone test results:
[hotmic] - Collected 87 audio chunks
[hotmic] - Average audio energy: 1234.56
[hotmic] Microphone is working correctly!
Hotkey Configuration:
Toggle mode: <ctrl>+u
...
$ python hotmic.py
[hotmic] Testing microphone...
[hotmic] Recording for 2.0 seconds to test microphone...
[hotmic] Please make some noise (speak, tap the mic, etc.)
[hotmic] Microphone test results:
[hotmic] - Collected 87 audio chunks
[hotmic] - Average audio energy: 5.23
[hotmic] WARNING: Microphone audio level is very low!
[hotmic] The microphone might be muted or not working properly.
[hotmic] Please check your microphone settings.
[hotmic] Warning: Microphone test failed!
[hotmic] The program will continue, but recording may not work properly.
[hotmic] start recording ...
[hotmic] stop recording ...
[hotmic] No speech detected (avg energy: 123.45)
[hotmic] Skipping empty audio - not sending to server
[hotmic] start recording ...
[hotmic] stop recording ...
[hotmic] Speech detected (avg energy: 1523.78)
[hotmic] copied transcript to clipboard
[hotmic] pasted at cursor
现象: 正常说话的录音也显示"No speech detected"
解决方案:
- 在
config.json中降低vad_energy_threshold"vad_energy_threshold": 300.0
- 或临时禁用 VAD
"enable_vad": false
现象: 没有说话时也检测到"语音"
解决方案:
- 在
config.json中提高vad_energy_threshold"vad_energy_threshold": 800.0
- 改善录音环境,减少背景噪音
现象: 启动时总是显示麦克风测试失败
解决方案:
- 检查系统麦克风设置
- 确认麦克风未被静音
- 尝试在其他程序中测试麦克风
- 如果确认麦克风正常,可以禁用测试
"test_mic_on_startup": false
系统使用 RMS (Root Mean Square) 方法计算音频能量:
RMS = sqrt(mean(samples^2))
- 录音过程中,每个音频块都会计算能量值
- 如果能量值超过阈值,标记为包含语音
- 录音结束时检查:
- 是否检测到语音
- 语音持续时间是否足够长
- 只有满足条件的录音才会发送到服务器
- CPU: 极小 (仅增加简单的数学计算)
- 内存: 可忽略
- 网络: 可能减少 (跳过空白录音)
- 启动时间: 增加约 2 秒 (如果启用麦克风测试)
所有新功能在两个平台上都经过测试,完全兼容:
- ✓ Windows 10/11
- ✓ macOS 12+
- ✓ Linux (理论上支持,但未经全面测试)
新功能需要 numpy 库进行音频处理:
pip install numpy>=1.24.0或者使用:
pip install -r requirements.txt运行测试脚本验证新功能:
python test_vad.py这将测试:
- 音频能量计算
- VAD 配置加载
- 麦克风可用性
如有任何问题或建议,请访问项目主页。