我正在用jQuery编写心理学应用程序。我项目的一部分需要测量用户对声音的反应时间(用户按下一个键)。因此,我需要播放一个声音文件,在我调用(和时间戳)声音文件和实际开始播放时之间可能存在最小的延迟。大多数声音插件都没有详细说明它们如何处理延迟。请告诉我最好的方法!
只有扎根于固体CS的答案(不是“这个插件听起来很快”)对我有用。至少,我需要知道我正在使用的方法可能的滞后范围(用于计算置信区间)。
另一种实际上优选的解决方案是量化滞后的方法。在这种情况下,滞后的长度将是不重要的,因为我可以很容易地纠正它。
我不知道我将使用哪些声音文件,但我认为它们会非常小。两个.wav文件@ 100kb每个可能是一个安全的估计。
在评论讨论之后,我将建议您使用HTML5音频标签来播放/控制声音。 [你链接到的JQuery插件使用,“embed”标签播放声音(这将在客户端计算机上调用一个你无法控制的插件)。
使用HTML5,您将失去一些旧的/移动浏览器,但这始终是网络编程的关键。
有关控制“audio”标签的教程,请参阅here。确保你preload音频。
我认为除了HTML5之外唯一的其他选择是使用flash来播放声音。你可以pretty easily互动flash和javascript。
我要做的第一件事是缓存声音文件(idk你打算用什么声音.HTML5音频标签?)然后当你调用播放功能时你可以运行类似的东西
var counter = 0;
var timer = setInterval(function(){counter++}, 1);
在用户响应调用中
clearInterval(timer);
和计时器将是响应的毫秒数(减去开始播放所需的时间)。
我遇到了同样的问题:我尝试了缓冲,音频事件甚至是AnalyserNode,但是在解析声音数据和产生声音之间似乎存在硬件延迟:在我的测试中它介于50-200ms之间。
然而,滞后可以通过捕获声音来量化:
阅读更多关于javascript声音捕获here。