2

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

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

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

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

4

3 回答 3

1

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

使用 HTML5,您将失去一些旧版/移动浏览器,但这始终是 Web 编程的症结所在。

有关控制“音频”标签的教程,请参见此处。确保预加载音频。

我认为除了 HTML5 之外唯一的选择是使用 flash 播放声音。你可以很容易地交互 flash 和 javascript。

于 2011-08-13T23:45:48.650 回答
0

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

然而,延迟可以通过捕获声音来量化:

  1. 播放声音(是否缓冲)并启动计时器
  2. 当声音捕捉到东西时停止计时器(观察麦克风附近的声音干扰)

在此处阅读有关 javascript 声音捕获的更多信息。

于 2014-08-15T11:50:52.943 回答
0

我要做的第一件事是缓存声音文件(idk 你打算用什么来制作声音。HTML5 音频标签?)然后当你调用播放函数时,你可以运行类似的东西

var counter = 0;
var timer = setInterval(function(){counter++}, 1);

在用户响应调用中

clearInterval(timer);

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

于 2011-08-13T22:59:31.607 回答