记录的第一个样本的 AudioContext currentTime 是多少?
What is the AudioContext currentTime for the first sample recorded?
使用Web Audio API,我创建了一个bufferSource,同时使用一个新的MediaRecorder 进行录制。我正在使用内置麦克风录制扬声器发出的声音。
如果我播放原始录音和新录音,两者之间会有明显的延迟。 (对我来说这听起来大约是 200 毫秒。)如果我在调用两个 "start" 方法时 console.log globalAudioCtx.currentTime 的值,则这两个数字完全相同。 Date.now()的值也完全一样。
这种延迟是在哪里引入的?声速引起的延迟大约是我听到的延迟的 1000 倍。
简而言之,如何让这两个样本同时播放?
我在 Chrome Linux 工作。
Where is this latency introduced?
在播放和录制上。
您的声卡有一个缓冲区,软件必须一次将音频分成小块写入该缓冲区。如果软件跟不上,就会听到断断续续的音频。因此,缓冲区大小设置得足够大以防止这种情况发生。
录制端也是如此。如果缓冲区不够大,如果软件无法足够快地从该缓冲区读取,则录制的音频数据将会丢失,从而导致音频断断续续和丢失。
浏览器没有对您的声卡使用最低延迟的操作模式。您可以应用一些调整(例如在 Windows 和 Chrome 上使用 WASAPI 和独占模式),但您将受到浏览器开发人员的摆布,他们没有像您这样的人设计这个还有我在心里。
无论缓冲区大小有多低,仍然会有延迟。这就是基于计算机的数字音频的本质。
how can I get these two samples to play back at exactly the same time?
您必须延迟其中一个示例才能使它们恢复同步。
使用Web Audio API,我创建了一个bufferSource,同时使用一个新的MediaRecorder 进行录制。我正在使用内置麦克风录制扬声器发出的声音。
如果我播放原始录音和新录音,两者之间会有明显的延迟。 (对我来说这听起来大约是 200 毫秒。)如果我在调用两个 "start" 方法时 console.log globalAudioCtx.currentTime 的值,则这两个数字完全相同。 Date.now()的值也完全一样。
这种延迟是在哪里引入的?声速引起的延迟大约是我听到的延迟的 1000 倍。
简而言之,如何让这两个样本同时播放?
我在 Chrome Linux 工作。
Where is this latency introduced?
在播放和录制上。
您的声卡有一个缓冲区,软件必须一次将音频分成小块写入该缓冲区。如果软件跟不上,就会听到断断续续的音频。因此,缓冲区大小设置得足够大以防止这种情况发生。
录制端也是如此。如果缓冲区不够大,如果软件无法足够快地从该缓冲区读取,则录制的音频数据将会丢失,从而导致音频断断续续和丢失。
浏览器没有对您的声卡使用最低延迟的操作模式。您可以应用一些调整(例如在 Windows 和 Chrome 上使用 WASAPI 和独占模式),但您将受到浏览器开发人员的摆布,他们没有像您这样的人设计这个还有我在心里。
无论缓冲区大小有多低,仍然会有延迟。这就是基于计算机的数字音频的本质。
how can I get these two samples to play back at exactly the same time?
您必须延迟其中一个示例才能使它们恢复同步。