解决录音时麦克风同时拾取用户语音和 NVDA(非可视桌面访问)语音输出的问题

问题描述 投票:0回答:1

我在我的应用程序中实现了语音转文本功能,并且我正在使用 navigator.mediaDevices.getUserMedia({audio: true}) API 利用连接的耳机麦克风进行语音输入。辅助工具 NVDA 也在后台运行。现在,我面临的问题是,当我用麦克风录音时,麦克风正在拾取 NVDA(非可视桌面访问)语音输出以及用户的声音。由于 NVDA 提供听觉反馈,因此它会与用户的语音输入一起被麦克风捕获,从而导致干扰。

我希望只记录用户语音,同时过滤掉辅助工具(例如:NVDA)的语音输出。

我尝试使用 Angular 中的 deviceId 属性来解决该问题。

 Here is the sample code:
  const devices = await navigator.mediaDevices.enumerateDevices();
  const microphone = devices.find(device =\> device.kind === 'audioinput');
  if (microphone) {
  const stream = await navigator.mediaDevices.getUserMedia({audio: { deviceId: {exact:
  microphone.deviceId}}});
  // Use the obtained stream for recording
  } else {
  console.error('Microphone not found');
  }
accessibility voice-recognition getusermedia nvda mediadevices
1个回答
0
投票

这可能更多是硬件问题而不是软件问题。

某些计算机具有降噪选项和/或具有过滤器,可以自动忽略来自自身扬声器的音频反馈。

当麦克风处于活动状态时,此类过滤器可以自动应用于音频输出,但您无法通过自己的应用程序或浏览器对此进行控制。您需要进入控制面板或特定制造商的应用程序进行配置。

因此,如果您的计算机没有此类功能,最好的方法可能是使用耳机、外部麦克风和/或扬声器或提供此类功能的外部声卡。

© www.soinside.com 2019 - 2024. All rights reserved.