我想计算立体声音频文件的两个通道(信号)之间的相位差。(未压缩的数据,即 PCM 样本)。
我想确定两个信号是否同相,即一种数字相位计?不是确切的相位差。
您能否建议一种算法来计算相位差。
添加 -
我期望识别的是分别记录然后馈送到左右声道的信号之间的相位差(由于噪声、干扰)。
我想计算立体声音频文件的两个通道(信号)之间的相位差。(未压缩的数据,即 PCM 样本)。
我想确定两个信号是否同相,即一种数字相位计?不是确切的相位差。
您能否建议一种算法来计算相位差。
添加 -
我期望识别的是分别记录然后馈送到左右声道的信号之间的相位差(由于噪声、干扰)。
一种快速而肮脏的方法是将和的能量 (L+R) 与差的能量 (LR) 进行比较。这给出了一个粗略的单数相位差,并且擅长发现极性翻转等问题。
正如 Dilip 所指出的,不相关信号之间的相位差的概念是没有意义的。即使它们是相关的,相位差也往往是频率的函数,因此单个数字也不是特别有用。大多数现实世界的立体声音频信号都是部分相关的,这使问题更加复杂。为了真正回答这个问题,您需要正确定义相位差的含义以及您打算用它做什么。
计算感兴趣的时间窗口内两个通道的互相关函数。相位谱截距将给出相位差(通常与频率有关)。要计算截距,请选择一个感兴趣的频带,并计算一条适合该频带内相位谱的线。如果这条线拟合得很好,那么信号摘录可能确实在所采用的时间窗口内具有恒定的相位差。与频率零线相交的线将给出截距(即相位差)。
在音频设备中的相位(相关)计上执行此操作的方式相当简单:
相位 = arctan(L/R)
相位为 45 或 225 = 1,相位为 135 和 315 (-45) 为 -1。
本质上,Y 轴是 L,X 轴是 R。相位只是两者之间矢量的极角。
如果信号是单声道,这种类型的仪表将显示 1,如果左右完全反相,则显示 -1。
但是请注意,这种类型的相位计也考虑了极坐标中的幅度。所以:
幅度 = (L^2 + R^2)^1/2
因此,实际的仪表显示是以下的标准化版本:
相关性 = 相位 * 幅度
我不确定这是否满足您的要求,但这回答了该主题中的问题。
上述计算适用于许多音频制作产品中常见的仪表。它的主要目的是确保节目素材不会因左右声道之间的相位反转而受到影响,当素材被切割成乙烯基或通过 FM 广播媒体(基本上,任何使用 MS 的系统)传输时,这可能会导致问题通过机械或传动方式。
这是此屏幕截图底部的垂直仪表:
从手册:
+1 的相关性(最右边的位置)意味着左右通道 100% 相关——它们完全同相。
相关性为 0(中心位置)表示允许的最宽左/右发散角,通常可以作为极宽的立体声效果听到。
低于 0 的相关值表示存在异相材料,如果将立体声信号组合成单声道信号,可能会导致相位抵消。
如果左右声道的内容相同(因此两个样本值为 X),相位计显示 1。如果内容完全异相(因此 L = X,R = -X),相位计显示 - 1.
看下图,绿色箭头代表左右通道之间完美的同相关系,红色代表两者之间的完美异相关系。在这种类型的仪表中,如果其中一个通道带有静音(但不是另一个),则仪表将变为 0(因此为 0、90、180、270 度)。
听起来 OP 正在寻找对齐两个信号。一种简单的计算方法是执行类似于 cross Corr 的操作:
1) 将左声道或右声道标记为参考声道
2)取左通道(假设您将右通道称为参考)并计算均方误差
3)将左声道向前移动一小段时间
4) 转到第 2 步
5)当你计算了足够的步数(比如你花了 1 秒并将其分成 1000 个增量)时,最小的均方误差将是它们之间的“相位”差。
替代方法
测量两个信号之间的相位差。
1)使用两个通道的FFT算法
2) 计算每个频率区间的相位
3)为每个频率计算相位
4) 取 L 和 R 通道相位分量之间的平均绝对值或平方差(即,对于每个频率仓,取 L 和 R 通道之间的相位差)
还有更多算法可以完成此操作,您可以查看节拍同步的起始检测算法或查看音乐信息检索,这是该领域涵盖的众多主题之一。