我正在用jQuery编写心理学应用程序。我项目的一部分需要测量用户对声音的反应时间(用户按下一个键)。因此,我需要播放一个声音文件,在我调用(& timestamp)声音文件和实际开始播放时之间可能存在最小的延迟。大多数声音插件都没有详细说明它们如何处理延迟。请告诉我最好的方法!
只有扎根于固体CS的答案(不是“这个插件听起来很快”)才对我有用。至少,我需要知道我正在使用的方法可能的滞后范围(用于计算置信区间)。
替代且实际上更可取的解决方案是量化滞后的方法。在这种情况下,滞后的长度并不重要,因为我可以很容易地纠正它。
我不知道我将使用哪些声音文件,但我认为它们会非常小。两个.wav文件@ 100kb每个可能是一个安全的估计。
答案 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之间
然而,滞后可以通过捕获声音来量化:
详细了解javascript声音捕捉here。