音频信号的延时

Posted

技术标签:

【中文标题】音频信号的延时【英文标题】:Time delay of audio signal 【发布时间】:2014-06-03 07:50:53 【问题描述】:

这是场景:

我生成的信号是:200ms @ 2kHz 1000ms of zeros 200ms @ 2kHz

我想计算它们之间的时间延迟,而不是两个合成音频部分之间的时间延迟。但是通过在扬声器上播放信号并使用麦克风记录它(增加噪音)

Fs = 44100

我试过:1. 互相关 2. 计算 8820 个样本大小的 RMS 窗口的两个最大值之间的差异。 (当窗口在声音部分时,我们得到最大值。

扬声器和麦克风之间的距离约为 30 厘米。我无法得到稳定的结果。为什么?

【问题讨论】:

【参考方案1】:

如果您想准确一致地做到这一点,那么我过去使用的一种方法是将一个通道(例如左通道)从输出环回输入,然后使用另一个(即右)通道计时测试。然后,您可以在左(环回)和右(实际音频)通道之间进行交叉关联。这消除了许多潜在的错误来源(缓冲区延迟、硬件延迟、软件问题等),因为左右通道将始终“同步”,并且您应该能够将测量精确到 +/- 1 个采样周期(在 44.1 kHz 时为 +/- 12 µs)。

【讨论】:

10x 的答案,但是,循环一个通道和一个通过音频会给我两个通道之间的延迟。我想知道两个音频部分之间的延迟。而且因为它们都在我创建的同一个合成信号中,我可以知道它们之间的时间延迟,不是吗?我不认为硬件延迟在这里不是问题吗? 好的 - 从问题中不清楚您要测量什么,我假设您想要测量物理音频部分的时间(扬声器和麦克风之间的时间)。如果您想要端到端延迟,包括计算机系统和声卡中的所有软件和硬件因素,那么生活会变得更加棘手,并且可能会受到大量抖动的影响,具体取决于您使用的操作系统正在使用,以及上述其他因素。 为什么我会受到以上所有的影响?我有 1 个我创建的信号,其中包括静音和声音。如果我在 44100 播放它,我希望它是我没有计划的吗?然后我一起记录,只有离线我尝试解决它。​​ 如果您考虑一下,您的循环中有 3 个延迟:(i) 软件到扬声器,(ii) 扬声器到麦克风和 (iii) 麦克风到软件。 (i) 和 (iii) 都因(多级)缓冲、任务调度、中断延迟、硬件延迟和各种其他问题而受到延迟。这些延迟也可能会受到抖动的影响,具体取决于您启动播放和录制的方式和时间。 FWIW,音频会议软件在执行回声消除时必须处理这些不可预测的延迟,这是一个不小的问题。 扬声器到麦克风是一个稳定的延迟,声音传播的时间对于两个声音部分是相同的,所以这不是问题。两个声音部分再次出现第一次和第三次延迟。我们需要记住,这是一个长信号,我预计 1 秒的间隔将保持 1 秒。我没有在代码中等待 1 秒。但在两个声音部分之间只是安静地播放 1 秒。

以上是关于音频信号的延时的主要内容,如果未能解决你的问题,请参考以下文章

FPGA开发板自身产生一路信号,差分两路完全一样的方波,但其中一路延时10ns,请问如何设计程序?

在FPGA中,如何实现一个时钟信号的可控延时? (用高频50MHZ的时钟去延时一个22KHZ的信号)

ABB机器人判断输入信号有延时,求大神指教~

信号的延时与提前,未来时间与过去时间

互相关延时估计 Matlab仿真

如何在FPGA内部产生准确的灵活的延时?