从保存的字节流中找出PCM属性

时间:2013-10-02 12:02:28

标签: java android audio pcm

我有一个包含原始PCM字节流的文件。有没有办法从文件本身找出采样率和位深度?某种分析仪或类似的东西;我想通过随机设置播放流来避免尝试猜测属性。

1 个答案:

答案 0 :(得分:2)

假设输入合理,您可以通过找出具有最低频率噪声的可能性来推断比特深度/编码。

采样率可能很棘手,除非存在可以检测到的预期频率的噪声成分(例如,已经对电力线嗡嗡声进行了一些研究),或者可能是给定记录器的声学特性,例如直径上的干扰可以塑造噪声谱的麦克风或外壳。许多源也可能使用一致的硬件采样率,并在需要其他源时进行转换,这个过程可能会留下伪像。但是对于来自未指定硬件的完美录制,它可能确实具有挑战性。

另一个相关挑战是以两倍的采样率区分交错立体声和单声道。这很棘手,因为在低频时你会期望两个通道都有相同的内容,而在高频时你会发现相位差。但即使在单声道音轨中,您也不会期望低频分量在连续采样之间发生很大变化,而您可能期望高频分量在连续采样之间发生变化。一种想法可能是在高频下寻找可能的左右之间的延迟(或高级)相关性。另一个可能是看连续的低频分量之间的相位差是否包括两个单独的单调间隔的交错序列,两个(立体声)或单个均匀间隔的单调序列(单声道)之间存在无关的差异。