WebRTC 音频仅在语音上激活

WebRTC audio only activates on voice

我正在通过 WebRTC MediaStream 从 getUserMedia 发送音频。我想发送所有类型的音频数据,而不仅仅是语音。我的问题是,如果没有声音,即使麦克风接收到一些背景噪音,音频也会被切断。我认为问题出在创建报价时的 voiceActivityDetection 参数上,但是即使我禁用它,问题仍然存在。我应该如何在没有语音处理的情况下通过 MediaStream 发送本质上原始的音频数据?

不幸的是,在设计这些 API 时,它们是在默认启用大量处理的情况下构建的。幸运的是,可以使用 getUserMedia 音频限制来禁用它们:

autoGainControl: false,
echoCancellation: false,
noiseSuppression: false

这将大大提高您的音频质量。但请注意,整个 WebRTC 堆栈仍会对您的音频产生影响。 WebRTC 呼叫针对实时语音通信进行了优化。音频会不断调整速度,以尽可能保持实时。通常会添加舒适噪声(并且可以通过修改 SDP 来禁用)。音频比特率通常设置得很低(也可以通过 SDP 进行调整)。如果音频质量对您很重要(例如音乐),WebRTC 可能不是最佳选择。请考虑使用 MediaRecorder。