无耳机场景下Chrome扩展中Azure Speech SDK的Echo Cancellation方案咨询
Chrome扩展结合Azure Speech SDK实现回声消除的可行方案
方案1:启用Azure Speech SDK内置回声消除能力
- Azure Speech SDK for JS本身已经封装了声学回声消除(AEC)能力,你可以在初始化语音识别配置的时候直接开启
- 配置代码示例:
const speechConfig = SpeechSDK.SpeechConfig.fromSubscription("你的服务密钥", "你的服务区域"); // 开启回声消除 speechConfig.setProperty(SpeechSDK.PropertyId.AudioProcessing_EnableAec, "true"); // 可选搭配开启噪声抑制、自动增益控制,进一步提升复杂场景识别准确率 speechConfig.setProperty(SpeechSDK.PropertyId.AudioProcessing_EnableNoiseSuppression, "true"); speechConfig.setProperty(SpeechSDK.PropertyId.AudioProcessing_EnableAutomaticGainControl, "true");
- 注意事项:该内置AEC依赖浏览器的音频流处理权限,Chrome扩展中需要在
manifest.json中声明tabCapture或者audioCapture权限,同时要确保获取的麦克风音频流是经过浏览器默认音频预处理的流,不要手动关闭echoCancellation等媒体约束。
方案2:结合Chrome Web Audio API做前置回声消除
如果SDK内置AEC效果达不到会议场景要求,可以先通过Web Audio API对音频流做预处理:
- 获取麦克风流的时候强制开启浏览器层面的回声消除:
const stream = await navigator.mediaDevices.getUserMedia({ audio: { echoCancellation: true, noiseSuppression: true, autoGainControl: true } });
- 如果你的扩展需要同时捕获标签页内的会议音频+麦克风输入,可以将两路音频输入到Web Audio的
MediaStreamAudioSourceNode,通过差分处理抵消回声之后再推送给Azure Speech SDK做识别。
方案3:适配会议场景的业务逻辑过滤
针对会议场景还可以叠加业务规则降低误识别概率:
- 如果你的扩展本身可以获取会议的输出音频流(比如通过
tabCapture获取当前会议标签页的播放音频),可以将该流作为回声参考信号传给Azure Speech SDK的音频处理配置,进一步提升回声抵消的准确率。 - 可以针对识别结果增加匹配过滤规则:如果识别到的内容和当前会议公开的字幕、参会人输出内容高度匹配,直接判定为回声过滤即可。
内容的提问来源于stack exchange,提问作者Sulabha
相关产品推荐
相关产品推荐

