现象
语音对话场景中,勾选自动发送功能后,仍需手动点击发送按钮;同时存在语音输入满60秒后自动发送的逻辑。
可能原因
原语音输入代码未实现基于音频音量的静音检测逻辑,仅通过固定时长触发自动发送,无法准确判断用户是否停止说话,导致自动发送功能不符合预期。
排查步骤
- 定位到项目中的
useSpeech.ts文件,查看语音输入相关的核心代码 - 检查是否存在固定时长触发自动发送的逻辑
- 验证音频处理模块是否包含静音检测相关的实现代码
解决与验证
- 在
useSpeech.ts中添加静音计数器silenceCounter与音频分析器analyserRef的ref对象 - 实现静音检测函数
checkSilence:通过音频分析器获取频率数据,计算平均音量。当音量低于20时递增计数器,连续3次检测到低音量时调用stopSpeak停止录音并发送结果;音量正常时重置计数器 - 在
startSpeak函数中初始化音频上下文与分析器,添加每1000毫秒执行一次的静音检测定时器 - 验证修改效果:停止说话后,系统将自动触发发送操作,相关逻辑需按实际环境确认调整