我一直在尝试使用网络音频 API 录制和播放来自服务器的音频响应。但是当麦克风正在使用或什至以编程方式停止时,播放音量非常低。这似乎是 iPhone 的一项功能,但当您在浏览器中运行类似应用程序的语音助手时,它真的很烦人。这是我尝试使用 javascript 的方法:
stream.getTracks().forEach(track => track.stop()) // Mic muted but still volume is low
和
stream.forEach(function(track) {
track.enabled = false; // Mic muted but still volume is low
});
撤销麦克风权限是可行的,但每次用户尝试录音时都询问权限会很烦人。有没有其他有效的方法可以暂时停止麦克风或恢复原始播放音量?
...可能是最适合您的解决方案。
有多种音频会话类型用于不同的目的。默认值为
auto
,在您的用例中,您可能希望将其设置为play-and-record
,因为它允许您同时使用麦克风和扬声器:
navigator.audioSession.type = 'play-and-record';
您可以在这里进一步阅读:https://w3c.github.io/audio-session/
注意:在撰写本文时 - 音频会话 API 处于“编辑草案”状态,因此您应该在依赖它之前检查该特定的
navigator
属性。但它确实适用于 iOS 16.4.1 上的 Safari。