如何以绝对最小或*量化*滞后播放声音?

时间:2011-08-13 22:48:14

标签: javascript jquery audio lag

我正在用jQuery编写心理学应用程序。我项目的一部分需要测量用户对声音的反应时间(用户按下一个键)。因此,我需要播放一个声音文件,在我调用(& timestamp)声音文件和实际开始播放时之间可能存在最小的延迟。大多数声音插件都没有详细说明它们如何处理延迟。请告诉我最好的方法!

只有扎根于固体CS的答案(不是“这个插件听起来很快”)才对我有用。至少,我需要知道我正在使用的方法可能的滞后范围(用于计算置信区间)。

替代且实际上更可取的解决方案是量化滞后的方法。在这种情况下,滞后的长度并不重要,因为我可以很容易地纠正它。

我不知道我将使用哪些声音文件,但我认为它们会非常小。两个.wav文件@ 100kb每个可能是一个安全的估计。

3 个答案:

答案 0 :(得分:1)

在评论讨论之后,我将建议您使用HTML5音频标签来播放/控制声音。 [你链接到的JQuery插件使用,“embed”标签播放声音(这将在客户端计算机上调用一个你无法控制的插件)。]

使用HTML5,你会失去一些旧的/移动的浏览器,但这始终是网络编程的关键。

有关控制“音频”标签的教程,请参阅here。确保你preload音频。

我认为除了HTML5之外唯一的其他选择是使用flash来播放声音。您可以pretty easily互动Flash和javascript。

答案 1 :(得分:0)

我要做的第一件事是缓存声音文件(idk你打算用什么声音.HTML5音频标签?)然后当你调用播放功能时你可以运行类似

的内容
var counter = 0;
var timer = setInterval(function(){counter++}, 1);
用户响应调用中的

clearInterval(timer);

和计时器将是响应的毫秒数(减去开始播放所需的时间)。

答案 2 :(得分:0)

我遇到了同样的问题:我尝试了缓冲,音频事件甚至是AnalyserNode,但是在解析声音数据和产生声音之间似乎存在硬件延迟:在我的测试中它介于50-200ms之间

然而,滞后可以通过捕获声音来量化:

  1. 播放声音(无论是否缓冲)并启动计时器
  2. 当声音捕捉捕获某物时停止计时器(观看麦克风附近的声音干扰)
  3. 详细了解javascript声音捕捉here