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

问题描述 投票:2回答:3

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

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

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

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

javascript jquery audio lag
3个回答
1
投票

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

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

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

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


0
投票

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

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

在用户响应调用中

clearInterval(timer);

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


0
投票

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

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

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

阅读更多关于javascript声音捕获here

© www.soinside.com 2019 - 2024. All rights reserved.